Created
June 28, 2016 12:23
-
-
Save ajardin/82dd461605d38962f71b1a912c64080f to your computer and use it in GitHub Desktop.
A bash script that initializes/updates a Proximis project.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
BEHAVIOR="${1}" | |
if [[ "${BEHAVIOR}" != "bootstrap" && "${BEHAVIOR}" != "update" && "${BEHAVIOR}" != "reindex" ]]; then | |
echo "$(tput setaf 1)Please specify a valid behavior: $(tput bold && tput setaf 1)bootstrap$(tput sgr0 && tput setaf 1) or $(tput bold && tput setaf 1)update$(tput sgr0 && tput setaf 1) or $(tput bold && tput setaf 1)reindex$(tput sgr0 && tput setaf 1).$(tput sgr0)" | |
exit 1 | |
fi | |
if [[ "${2}" =~ "/" ]]; then | |
GROUP_NAME=$(echo "${2}" | cut -f1 -d/) | |
PROJECT_NAME=$(echo "${2}" | cut -f2 -d/) | |
else | |
echo "$(tput setaf 1)Please specify a valid $(tput bold && tput setaf 1)project name$(tput sgr0 && tput setaf 1).$(tput sgr0)" | |
exit 1 | |
fi | |
if [ -z "${3}" ]; then | |
echo "$(tput setaf 1)Please specify a valid $(tput bold && tput setaf 1)remote group name$(tput sgr0 && tput setaf 1).$(tput sgr0)" | |
exit 1 | |
else | |
REMOTE_GROUP_NAME="${3}" | |
fi | |
SCRIPT_DIRECTORY="$(cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd)" | |
PROJECT_DIRECTORY="${SCRIPT_DIRECTORY}/${PROJECT_NAME}" | |
if [[ "${BEHAVIOR}" == "bootstrap" ]]; then | |
echo "$(tput setaf 5)Bootstrap started...$(tput sgr0)" | |
rm -rf "${PROJECT_DIRECTORY}" && \ | |
git clone ssh://git@gitlab.change-commerce.com:10022/"${GROUP_NAME}"/"${PROJECT_NAME}".git "${PROJECT_DIRECTORY}" | |
GIT_DIR="${PROJECT_DIRECTORY}/.git" | |
GIT_WORK_TREE="${PROJECT_DIRECTORY}" | |
git --git-dir="${GIT_DIR}" --work-tree="${GIT_WORK_TREE}" checkout -b dev origin/dev && \ | |
git --git-dir="${GIT_DIR}" --work-tree="${GIT_WORK_TREE}" remote add upstream ssh://git@gitlab.change-commerce.com:10022/"${REMOTE_GROUP_NAME}"/"${PROJECT_NAME}".git && \ | |
git --git-dir="${GIT_DIR}" --work-tree="${GIT_WORK_TREE}" fetch upstream | |
curl -o "${PROJECT_DIRECTORY}/App/Config/project.local.json" https://gist.githubusercontent.com/ajardin/733452945a09fa4d2e748d62f3ee9811/raw/935878b30dd2fa5de388f064b1060770b3cdfea3/project.local.json && \ | |
sed -i "" -e "s|### DATABASE ###|${PROJECT_NAME}|g" "${PROJECT_DIRECTORY}/App/Config/project.local.json" | |
mkdir -p "${PROJECT_DIRECTORY}/bin" && \ | |
curl -o "${PROJECT_DIRECTORY}/bin/change.phar" https://gitlab.change-commerce.com/public-packages/change-new-project/raw/master/bin/change.phar | |
echo "$(tput setaf 5)Bootstrap completed successfully.$(tput sgr0)" | |
fi | |
if [[ ! -d "${PROJECT_DIRECTORY}" ]]; then | |
echo "$(tput setaf 1)The $(tput bold)$(tput setaf 1)project directory$(tput sgr0)$(tput setaf 1) does not exist.$(tput sgr0)" | |
exit 1 | |
fi | |
if [[ "${BEHAVIOR}" == "bootstrap" || "${BEHAVIOR}" == "update" ]]; then | |
echo "$(tput setaf 5)Update started...$(tput sgr0)" | |
GIT_DIR="${PROJECT_DIRECTORY}/.git" | |
GIT_WORK_TREE="${PROJECT_DIRECTORY}" | |
git --git-dir="${GIT_DIR}" --work-tree="${GIT_WORK_TREE}" checkout -- . && \ | |
git --git-dir="${GIT_DIR}" --work-tree="${GIT_WORK_TREE}" fetch upstream && \ | |
git --git-dir="${GIT_DIR}" --work-tree="${GIT_WORK_TREE}" rebase upstream/dev && \ | |
git --git-dir="${GIT_DIR}" --work-tree="${GIT_WORK_TREE}" push origin dev | |
PLUGINS="$(find "${PROJECT_DIRECTORY}"/Plugins/*/${REMOTE_GROUP_NAME^} -type d -depth 1 2> /dev/null)" | |
if [[ ! -z "${PLUGINS}" ]]; then | |
for PLUGIN in ${PLUGINS}; do | |
GIT_DIR="${PLUGIN}/.git" | |
GIT_WORK_TREE="${PLUGIN}" | |
git --git-dir="${GIT_DIR}" --work-tree="${GIT_WORK_TREE}" fetch upstream && \ | |
git --git-dir="${GIT_DIR}" --work-tree="${GIT_WORK_TREE}" rebase upstream/master && \ | |
git --git-dir="${GIT_DIR}" --work-tree="${GIT_WORK_TREE}" push origin master | |
done | |
fi | |
rm -rf Plugins/* && \ | |
composer self-update && \ | |
composer update --working-dir="${PROJECT_DIRECTORY}" | |
PLUGINS="$(find "${PROJECT_DIRECTORY}"/Plugins/*/${REMOTE_GROUP_NAME^} -type d -depth 1 2> /dev/null)" | |
if [[ ! -z "${PLUGINS}" ]]; then | |
for PLUGIN in ${PLUGINS}; do | |
FORK_NAME="" | |
case "${PLUGIN}" in | |
*Modules* ) | |
FORK_NAME="$(echo "module-$(basename "${PLUGIN}")" | tr '[:upper:]' '[:lower:]')" | |
;; | |
*Themes* ) | |
FORK_NAME="$(echo "theme-$(basename "${PLUGIN}")" | tr '[:upper:]' '[:lower:]' | sed 's/-theme/-/g')" | |
;; | |
esac | |
if [[ -z "${FORK_NAME}" ]]; then | |
echo "$(tput setaf 1)Unknown plugin type: $(tput bold)$(tput setaf 1)${PLUGIN}$(tput sgr0)$(tput setaf 1).$(tput sgr0)" | |
exit 1 | |
fi | |
GIT_DIR="${PLUGIN}/.git" | |
GIT_WORK_TREE="${PLUGIN}" | |
rm -rf "${PLUGIN}" && \ | |
git clone ssh://git@gitlab.change-commerce.com:10022/"${GROUP_NAME}"/"${FORK_NAME}".git "${PLUGIN}" && \ | |
git --git-dir="${GIT_DIR}" --work-tree="${GIT_WORK_TREE}" remote add upstream ssh://git@gitlab.change-commerce.com:10022/"${REMOTE_GROUP_NAME}"/"${FORK_NAME}".git && \ | |
git --git-dir="${GIT_DIR}" --work-tree="${GIT_WORK_TREE}" fetch upstream | |
done | |
fi | |
CONTAINER_PHP="$(docker-compose -f ~/docker/proximis/docker-compose.yml ps -q php)" && \ | |
docker exec "${CONTAINER_PHP}" sh -c "cd /var/www/html/${PROJECT_NAME} && mkdir -p www && php bin/change.phar change:set-document-root www" && \ | |
docker exec "${CONTAINER_PHP}" sh -c "cd /var/www/html/${PROJECT_NAME} && export CHANGE_INSTANCE_CONFIG_FILENAME=project.local.json && bash update.sh" | |
echo "$(tput setaf 5)Update completed successfully.$(tput sgr0)" | |
fi | |
#if [[ "${BEHAVIOR}" == "bootstrap" || "${BEHAVIOR}" == "update" || "${BEHAVIOR}" == "reindex" ]]; then | |
#echo "$(tput setaf 5)Reindexation started...$(tput sgr0)" | |
#echo "$(tput setaf 5)Reindexation completed successfully.$(tput sgr0)" | |
#fi |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment