build_distro.sh in Drupal Commons 7.3
#!/bin/bash
#set -e
#modules=(commons_activity_streams commons_featured commons_notices commons_profile_social commons_user_profile_pages commons_body commons_follow commons_notify commons_q_a commons_utility_links commons_bw commons_groups commons_pages commons_radioactivity commons_wikis commons_content_moderation commons_like commons_polls commons_search commons_wysiwyg commons_documents commons_location commons_posts commons_site_homepage commons_events commons_misc commons_profile_base commons_topics commons_social_sharing commons_trusted_contacts)
#themes=(commons_origins)
merge_repos() {
cd $BUILD_PATH/commons_profile
for i in "${modules[@]}"; do
if [[ -n $USERNAME ]]; then
git remote add ${i} ${USERNAME}@git.drupal.org:project/${i}.git
else
git remote add ${i} http://git.drupal.org/project/${i}.git
fi
git fetch ${i}
git merge -s ours --no-commit ${i}/7.x-3.x
git read-tree --prefix=modules/commons/${i} -u ${i}/7.x-3.x
git commit -m "Merged ${i} into Commons repo"
git remote rm ${i}
echo "Successfully added $i to commons profile"
done
#do the theme now
i=commons_origins
if [[ -n $USERNAME ]]; then
git remote add ${i} ${USERNAME}@git.drupal.org:project/${i}.git
else
git remote add ${i} http://git.drupal.org/project/${i}.git
fi
git fetch ${i}
git merge -s ours --no-commit ${i}/7.x-3.x
git read-tree --prefix=themes/commons/${i} -u ${i}/7.x-3.x
git commit -m "Merged ${i} into Commons repo"
echo "Successfully added $i to commons profile"
}
# this function is no longer needed because we're in one repo now.
pull_git() {
cd $BUILD_PATH/commons_profile
if [[ -n $RESET ]]; then
git reset --hard HEAD
fi
git pull origin 7.x-3.x
cd $BUILD_PATH/repos/modules
for i in `ls | awk -F/ '{print $1}'`; do
echo $i
cd $i
if [[ -n $RESET ]]; then
git reset --hard HEAD
fi
git pull origin
cd ..
done
}
release_notes() {
rm -rf rn.txt
pull_git $BUILD_PATH
OUTPUT="<h2>Release Notes for $RELEASE</h2>"
cd $BUILD_PATH/commons_profile
OUTPUT="$OUTPUT <h3>Drupal Commons:</h3> `drush rn --date $FROM_DATE $TO_DATE`"
## old repos. don't use this anymore
# cd $BUILD_PATH/repos/modules
# for i in "${modules[@]}"; do
# echo $i
# cd $i
# RN=`drush rn --date $FROM_DATE $TO_DATE`
# if [[ -n $RN ]]; then
# OUTPUT="$OUTPUT <h3>$i:</h3> $RN"
# fi
# cd ..
#done
#cd $BUILD_PATH/repos/themes/commons_origins
#RN=`drush rn --date $FROM_DATE $TO_DATE`
#if [[ -n $RN ]]; then
# OUTPUT="$OUTPUT <h3>commons_origins:</h3> $RN"
#fi
echo $OUTPUT >> $BUILD_PATH/rn.txt
echo "Release notes for $RELEASE created at $BUILD_PATH/rn.txt"
}
build_distro() {
if [[ -d $BUILD_PATH ]]; then
cd $BUILD_PATH
#backup the sites directory
if [[ -d docroot ]]; then
rm -rf ./docroot
fi
# do we have the profile?
if [[ -d $BUILD_PATH/commons_profile ]]; then
if [[ -d $BUILD_PATH/repos ]]; then
rm -f /tmp/commons.tar.gz
drush make --no-cache --prepare-install --drupal-org=core $BUILD_PATH/commons_profile/drupal-org-core.make $BUILD_PATH/docroot
drush make --no-cache --no-core --contrib-destination --tar $BUILD_PATH/commons_profile/drupal-org.make /tmp/commons
else
mkdir -p $BUILD_PATH/repos/modules/contrib
cd $BUILD_PATH/repos/modules/contrib
for i in "${modules[@]}"; do
echo "bringing in ${i} for $USERNAME";
if [[ -n $USERNAME ]]; then
git clone ${USERNAME}@git.drupal.org:project/${i}.git
else
git clone http://git.drupal.org/project/${i}.git
fi
done
cd $BUILD_PATH/repos
mkdir -p $BUILD_PATH/repos/themes/contrib
cd $BUILD_PATH/repos/themes
for i in "${themes[@]}"; do
if [[ -n $USERNAME ]]; then
git clone ${USERNAME}@git.drupal.org:project/${i}.git
else
git clone http://git.drupal.org/project/${i}.git
fi
done
build_distro $BUILD_PATH
fi
# symlink the profile sites folder to our dev copy
cd docroot
if [[ -d $BUILD_PATH/sites ]]; then
rm -rf $BUILD_PATH/docroot/sites
ln -s ../sites $BUILD_PATH/docroot/sites
else
mv $BUILD_PATH/docroot/sites $BUILD_PATH/sites
ln -s ../sites $BUILD_PATH/docroot/sites
fi
chmod -R 777 $BUILD_PATH/docroot/sites/default
## put commons profile and modules into the profile folder
rm -rf docroot/profiles/commons
if [ -e $BUILD_PATH/repos.txt ]; then
UNTAR="tar -zxvf /tmp/commons.tar.gz -X $BUILD_PATH/repos.txt"
else
cd $BUILD_PATH/repos
find * -mindepth 1 -maxdepth 2 -type d -not -path ".*" -not -path "modules/.*" -not -path "themes/.*" -not -path "modules/contrib" -not -path "themes/contrib" > $BUILD_PATH/repos.txt
# exclude repos since we're updating already by linking it to the repos directory.
UNTAR="tar -zxvf /tmp/commons.tar.gz -X $BUILD_PATH/repos.txt"
fi
cd $BUILD_PATH/docroot/profiles
eval $UNTAR
cd commons
ln -s ../../../commons_profile/* .
ln -s ../../../../commons_profile/modules/commons ${BUILD_PATH}/docroot/profiles/commons/modules/
ln -s ../../../../commons_profile/themes/commons ${BUILD_PATH}/docroot/profiles/commons/themes/
for line in $(cat $BUILD_PATH/repos.txt); do
ln -s ../../../../../repos/${line} ${BUILD_PATH}/docroot/profiles/commons/$(echo ${line} | awk -F/ '{print $1}')/contrib/
done
chmod -R 775 $BUILD_PATH/docroot/profiles/commons
else
git clone --branch 7.x-3.x ${USERNAME}@git.drupal.org:project/commons.git commons_profile
build_distro $BUILD_PATH
fi
else
mkdir $BUILD_PATH
build_distro $BUILD_PATH $USERNAME
fi
}
site_install() {
read -p "You're about to DESTROY all data for site ${SITE} Are you sure? " -n 1 -r
if [[ $REPLY =~ ^[Yy]$ ]]; then
cd ${BUILD_PATH}/docroot/sites/${SITE}
drush -y sql-drop
drush site-install --site-name=${SITE} --account-name=admin --account-pass=${ADMIN_PASS} --account-mail=${ADMIN_EMAIL} --site-mail=commons_site@example.com -v -y commons commons_anonymous_welcome_text_form.commons_install_example_content=${DEMO_CONTENT} commons_anonymous_welcome_text_form.commons_anonymous_welcome_title="Commons Example Site" commons_anonymous_welcome_text_form.commons_anonymous_welcome_body="Using the site-install version of commons." commons_create_first_group.commons_first_group_title="Sales Group" commons_create_first_group.commons_first_group_body="This is the sales group from site-install."
fi
}
# This allows you to test the make file without needing to upload it to drupal.org and run the main make file.
update() {
if [[ -d $DOCROOT ]]; then
cd $DOCROOT
# do we have the profile?
if [[ -d $DOCROOT/profiles/commons ]]; then
# do we have an installed commons profile?
rm -f /tmp/docroot.tar.gz
rm -f /tmp/commons.tar.gz
drush make --no-cache --tar --drupal-org=core profiles/commons/drupal-org-core.make /tmp/docroot
drush make --no-core --no-cache --tar --drupal-org profiles/commons/drupal-org.make /tmp/commons
cd ..
tar -zxvf /tmp/docroot.tar.gz
cd docroot/profiles/commons/modules/contrib
# remove the symlinks in the repos before we execute
find . -type l | awk -F/ '{print $2}' > /tmp/repos.txt
cd $DOCROOT/profiles
# exclude repos since we're updating already by linking it to the repos directory.
UNTAR="tar -zxvf /tmp/commons.tar.gz -X /tmp/repos.txt"
eval $UNTAR
echo "Successfully Updated drupal from make files"
exit 0
fi
fi
echo "Unable to find Build path or drupal root. Please run build first"
exit 1
}
case $1 in
site-install)
if [[ -n $2 ]] && [[ -n $3 ]]; then
BUILD_PATH=$2
else
echo "Usage build_distro.sh site-install [build_path] [site] [demo-content] [admin-email] [admin-pass]"
fi
if [[ -n $3 ]]; then
SITE=$3
else
SITE='default'
fi
if [[ -n $4 ]]; then
DEMO_CONTENT='TRUE'
else
DEMO_CONTENT='FALSE'
fi
if [[ -n $5 ]]; then
ADMIN_EMAIL=$5
else
ADMIN_EMAIL='admin@example.com'
fi
if [[ -n $6 ]]; then
ADMIN_PASS=$6
else
ADMIN_PASS='admin'
fi
site_install $BUILD_PATH $SITE $DEMO_CONTENT $ADMIN_EMAIL $ADMIN_PASS;;
pull)
if [[ -n $2 ]]; then
BUILD_PATH=$2
if [[ -n $3 ]]; then
RESET=1
fi
else
echo "Usage: build_distro.sh pull [build_path]"
exit 1
fi
pull_git $BUILD_PATH $RESET;;
build)
if [[ -n $2 ]]; then
BUILD_PATH=$2
else
echo "Usage: build_distro.sh build [build_path]"
exit 1
fi
if [[ -n $3 ]]; then
USERNAME=$3
fi
build_distro $BUILD_PATH $USERNAME;;
rn)
if [[ -n $2 ]] && [[ -n $3 ]] && [[ -n $4 ]] && [[ -n $5 ]]; then
BUILD_PATH=$2
RELEASE=$3
FROM_DATE=$4
TO_DATE=$5
else
echo "Usage: build_distro.sh rn [build_path] [release] [from_date] [to_date]"
exit 1
fi
release_notes $BUILD_PATH $RELEASE $FROM_DATE $TO_DATE;;
update)
if [[ -n $2 ]]; then
DOCROOT=$2
else
echo "Usage: build_distro.sh update [DOCROOT]"
exit 1
fi
if [[ -n $3 ]]; then
USERNAME=$3
fi
update $DOCROOT;;
merge_repos)
if [[ -n $2 ]]; then
BUILD_PATH=$2
else
echo "Usage: build_distro.sh build [build_path]"
exit 1
fi
if [[ -n $3 ]]; then
USERNAME=$3
fi
merge_repos $BUILD_PATH $USERNAME;;
esac
File
scripts/build_distro.shView source
- #!/bin/bash
- #set -e
-
- #modules=(commons_activity_streams commons_featured commons_notices commons_profile_social commons_user_profile_pages commons_body commons_follow commons_notify commons_q_a commons_utility_links commons_bw commons_groups commons_pages commons_radioactivity commons_wikis commons_content_moderation commons_like commons_polls commons_search commons_wysiwyg commons_documents commons_location commons_posts commons_site_homepage commons_events commons_misc commons_profile_base commons_topics commons_social_sharing commons_trusted_contacts)
- #themes=(commons_origins)
-
- merge_repos() {
- cd $BUILD_PATH/commons_profile
- for i in "${modules[@]}"; do
- if [[ -n $USERNAME ]]; then
- git remote add ${i} ${USERNAME}@git.drupal.org:project/${i}.git
- else
- git remote add ${i} http://git.drupal.org/project/${i}.git
- fi
- git fetch ${i}
- git merge -s ours --no-commit ${i}/7.x-3.x
- git read-tree --prefix=modules/commons/${i} -u ${i}/7.x-3.x
- git commit -m "Merged ${i} into Commons repo"
- git remote rm ${i}
- echo "Successfully added $i to commons profile"
- done
- #do the theme now
- i=commons_origins
- if [[ -n $USERNAME ]]; then
- git remote add ${i} ${USERNAME}@git.drupal.org:project/${i}.git
- else
- git remote add ${i} http://git.drupal.org/project/${i}.git
- fi
- git fetch ${i}
- git merge -s ours --no-commit ${i}/7.x-3.x
- git read-tree --prefix=themes/commons/${i} -u ${i}/7.x-3.x
- git commit -m "Merged ${i} into Commons repo"
- echo "Successfully added $i to commons profile"
- }
-
- # this function is no longer needed because we're in one repo now.
- pull_git() {
- cd $BUILD_PATH/commons_profile
- if [[ -n $RESET ]]; then
- git reset --hard HEAD
- fi
- git pull origin 7.x-3.x
-
- cd $BUILD_PATH/repos/modules
- for i in `ls | awk -F/ '{print $1}'`; do
- echo $i
- cd $i
- if [[ -n $RESET ]]; then
- git reset --hard HEAD
- fi
- git pull origin
- cd ..
- done
- }
-
- release_notes() {
- rm -rf rn.txt
- pull_git $BUILD_PATH
- OUTPUT="
Release Notes for $RELEASE
"
- cd $BUILD_PATH/commons_profile
- OUTPUT="$OUTPUT
Drupal Commons:
`drush rn --date $FROM_DATE $TO_DATE`"
-
- ## old repos. don't use this anymore
- # cd $BUILD_PATH/repos/modules
- # for i in "${modules[@]}"; do
- # echo $i
- # cd $i
- # RN=`drush rn --date $FROM_DATE $TO_DATE`
- # if [[ -n $RN ]]; then
- # OUTPUT="$OUTPUT
$i:
$RN"
- # fi
- # cd ..
- #done
- #cd $BUILD_PATH/repos/themes/commons_origins
- #RN=`drush rn --date $FROM_DATE $TO_DATE`
- #if [[ -n $RN ]]; then
- # OUTPUT="$OUTPUT
commons_origins:
$RN"
- #fi
-
- echo $OUTPUT >> $BUILD_PATH/rn.txt
- echo "Release notes for $RELEASE created at $BUILD_PATH/rn.txt"
- }
-
- build_distro() {
- if [[ -d $BUILD_PATH ]]; then
- cd $BUILD_PATH
- #backup the sites directory
- if [[ -d docroot ]]; then
- rm -rf ./docroot
- fi
- # do we have the profile?
- if [[ -d $BUILD_PATH/commons_profile ]]; then
- if [[ -d $BUILD_PATH/repos ]]; then
- rm -f /tmp/commons.tar.gz
- drush make --no-cache --prepare-install --drupal-org=core $BUILD_PATH/commons_profile/drupal-org-core.make $BUILD_PATH/docroot
- drush make --no-cache --no-core --contrib-destination --tar $BUILD_PATH/commons_profile/drupal-org.make /tmp/commons
- else
- mkdir -p $BUILD_PATH/repos/modules/contrib
- cd $BUILD_PATH/repos/modules/contrib
- for i in "${modules[@]}"; do
- echo "bringing in ${i} for $USERNAME";
- if [[ -n $USERNAME ]]; then
- git clone ${USERNAME}@git.drupal.org:project/${i}.git
- else
- git clone http://git.drupal.org/project/${i}.git
- fi
- done
- cd $BUILD_PATH/repos
- mkdir -p $BUILD_PATH/repos/themes/contrib
- cd $BUILD_PATH/repos/themes
- for i in "${themes[@]}"; do
- if [[ -n $USERNAME ]]; then
- git clone ${USERNAME}@git.drupal.org:project/${i}.git
- else
- git clone http://git.drupal.org/project/${i}.git
- fi
- done
- build_distro $BUILD_PATH
- fi
- # symlink the profile sites folder to our dev copy
- cd docroot
- if [[ -d $BUILD_PATH/sites ]]; then
- rm -rf $BUILD_PATH/docroot/sites
- ln -s ../sites $BUILD_PATH/docroot/sites
- else
- mv $BUILD_PATH/docroot/sites $BUILD_PATH/sites
- ln -s ../sites $BUILD_PATH/docroot/sites
- fi
- chmod -R 777 $BUILD_PATH/docroot/sites/default
-
- ## put commons profile and modules into the profile folder
- rm -rf docroot/profiles/commons
- if [ -e $BUILD_PATH/repos.txt ]; then
- UNTAR="tar -zxvf /tmp/commons.tar.gz -X $BUILD_PATH/repos.txt"
- else
- cd $BUILD_PATH/repos
- find * -mindepth 1 -maxdepth 2 -type d -not -path ".*" -not -path "modules/.*" -not -path "themes/.*" -not -path "modules/contrib" -not -path "themes/contrib" > $BUILD_PATH/repos.txt
- # exclude repos since we're updating already by linking it to the repos directory.
- UNTAR="tar -zxvf /tmp/commons.tar.gz -X $BUILD_PATH/repos.txt"
- fi
- cd $BUILD_PATH/docroot/profiles
- eval $UNTAR
- cd commons
- ln -s ../../../commons_profile/* .
- ln -s ../../../../commons_profile/modules/commons ${BUILD_PATH}/docroot/profiles/commons/modules/
- ln -s ../../../../commons_profile/themes/commons ${BUILD_PATH}/docroot/profiles/commons/themes/
- for line in $(cat $BUILD_PATH/repos.txt); do
- ln -s ../../../../../repos/${line} ${BUILD_PATH}/docroot/profiles/commons/$(echo ${line} | awk -F/ '{print $1}')/contrib/
- done
- chmod -R 775 $BUILD_PATH/docroot/profiles/commons
- else
- git clone --branch 7.x-3.x ${USERNAME}@git.drupal.org:project/commons.git commons_profile
- build_distro $BUILD_PATH
- fi
- else
- mkdir $BUILD_PATH
- build_distro $BUILD_PATH $USERNAME
- fi
- }
-
- site_install() {
- read -p "You're about to DESTROY all data for site ${SITE} Are you sure? " -n 1 -r
- if [[ $REPLY =~ ^[Yy]$ ]]; then
- cd ${BUILD_PATH}/docroot/sites/${SITE}
- drush -y sql-drop
- drush site-install --site-name=${SITE} --account-name=admin --account-pass=${ADMIN_PASS} --account-mail=${ADMIN_EMAIL} --site-mail=commons_site@example.com -v -y commons commons_anonymous_welcome_text_form.commons_install_example_content=${DEMO_CONTENT} commons_anonymous_welcome_text_form.commons_anonymous_welcome_title="Commons Example Site" commons_anonymous_welcome_text_form.commons_anonymous_welcome_body="Using the site-install version of commons." commons_create_first_group.commons_first_group_title="Sales Group" commons_create_first_group.commons_first_group_body="This is the sales group from site-install."
- fi
- }
-
- # This allows you to test the make file without needing to upload it to drupal.org and run the main make file.
- update() {
- if [[ -d $DOCROOT ]]; then
- cd $DOCROOT
- # do we have the profile?
- if [[ -d $DOCROOT/profiles/commons ]]; then
- # do we have an installed commons profile?
- rm -f /tmp/docroot.tar.gz
- rm -f /tmp/commons.tar.gz
- drush make --no-cache --tar --drupal-org=core profiles/commons/drupal-org-core.make /tmp/docroot
- drush make --no-core --no-cache --tar --drupal-org profiles/commons/drupal-org.make /tmp/commons
- cd ..
- tar -zxvf /tmp/docroot.tar.gz
- cd docroot/profiles/commons/modules/contrib
- # remove the symlinks in the repos before we execute
- find . -type l | awk -F/ '{print $2}' > /tmp/repos.txt
- cd $DOCROOT/profiles
- # exclude repos since we're updating already by linking it to the repos directory.
- UNTAR="tar -zxvf /tmp/commons.tar.gz -X /tmp/repos.txt"
- eval $UNTAR
- echo "Successfully Updated drupal from make files"
- exit 0
- fi
- fi
- echo "Unable to find Build path or drupal root. Please run build first"
- exit 1
- }
-
- case $1 in
- site-install)
- if [[ -n $2 ]] && [[ -n $3 ]]; then
- BUILD_PATH=$2
- else
- echo "Usage build_distro.sh site-install [build_path] [site] [demo-content] [admin-email] [admin-pass]"
- fi
- if [[ -n $3 ]]; then
- SITE=$3
- else
- SITE='default'
- fi
- if [[ -n $4 ]]; then
- DEMO_CONTENT='TRUE'
- else
- DEMO_CONTENT='FALSE'
- fi
- if [[ -n $5 ]]; then
- ADMIN_EMAIL=$5
- else
- ADMIN_EMAIL='admin@example.com'
- fi
- if [[ -n $6 ]]; then
- ADMIN_PASS=$6
- else
- ADMIN_PASS='admin'
- fi
-
- site_install $BUILD_PATH $SITE $DEMO_CONTENT $ADMIN_EMAIL $ADMIN_PASS;;
- pull)
- if [[ -n $2 ]]; then
- BUILD_PATH=$2
- if [[ -n $3 ]]; then
- RESET=1
- fi
- else
- echo "Usage: build_distro.sh pull [build_path]"
- exit 1
- fi
- pull_git $BUILD_PATH $RESET;;
- build)
- if [[ -n $2 ]]; then
- BUILD_PATH=$2
- else
- echo "Usage: build_distro.sh build [build_path]"
- exit 1
- fi
- if [[ -n $3 ]]; then
- USERNAME=$3
- fi
- build_distro $BUILD_PATH $USERNAME;;
- rn)
- if [[ -n $2 ]] && [[ -n $3 ]] && [[ -n $4 ]] && [[ -n $5 ]]; then
- BUILD_PATH=$2
- RELEASE=$3
- FROM_DATE=$4
- TO_DATE=$5
- else
- echo "Usage: build_distro.sh rn [build_path] [release] [from_date] [to_date]"
- exit 1
- fi
- release_notes $BUILD_PATH $RELEASE $FROM_DATE $TO_DATE;;
- update)
- if [[ -n $2 ]]; then
- DOCROOT=$2
- else
- echo "Usage: build_distro.sh update [DOCROOT]"
- exit 1
- fi
- if [[ -n $3 ]]; then
- USERNAME=$3
- fi
- update $DOCROOT;;
- merge_repos)
- if [[ -n $2 ]]; then
- BUILD_PATH=$2
- else
- echo "Usage: build_distro.sh build [build_path]"
- exit 1
- fi
- if [[ -n $3 ]]; then
- USERNAME=$3
- fi
- merge_repos $BUILD_PATH $USERNAME;;
- esac