#!/bin/bash PATH_LIB='/lib/Image' PROJECTS=( "/var/www/10ballov" "/var/www/predelanet" "/var/www/zelenoemore" "/var/www/d753_common" ) if [ ! -f "CHANGELOG.md" ] then echo "CHANGELOG.md not exists\n" exit 1 fi test -n "`tail CHANGELOG.md`" CHANGELOG_EMPTY=`echo $?` if [ $CHANGELOG_EMPTY == 1 ] then echo -e "CHANGELOG.md is empty\n" exit 1 fi git diff-index --quiet HEAD -- REPO_CHANGED=`echo $?` if [ $REPO_CHANGED == 1 ] then echo -e "Please commit all changes in repository\n" exit 1 fi VERSION_PREVIOUS=`sed -n '4,4p' CHANGELOG.md | cut -d "(" -f1` if [ `git rev-parse ${VERSION_PREVIOUS}` != `git rev-parse HEAD` ] then VERSION=`echo ${VERSION_PREVIOUS} | awk -F. -v OFS=. 'NF==1{print ++$NF}; NF>1{if(length($NF+1)>length($NF))$(NF-1)++; $NF=sprintf("%0*d", length($NF), ($NF+1)%(10^length($NF))); print}'` git tag "$VERSION" && gitchangelog > CHANGELOG.md && { git add CHANGELOG.md > /dev/null && git commit -m "Update CHANGELOG.md" > /dev/null && git tag "$VERSION" && git push --tags >/dev/null 2>/dev/null; } || { echo -e "Cannot push released tag into remote repository\n" && exit 1; } else VERSION=$VERSION_PREVIOUS fi git push > /dev/null || exit 1 MESSAGE="\nUpdate ${PATH_LIB} on ${VERSION}\n" CURRENT_DIR=`pwd` for project in "${PROJECTS[@]}" do echo -e "Update lib for ${project}...\n" {cd "${project}${PATH_LIB}" && git fetch >/dev/null 2>/dev/null && git checkout $VERSION 2>/dev/null; } || { echo -e "Failed to checkout lib on tag ${VERSION}\n" && exit 1; } cd "${project}" LIB_DIR=`echo ${PATH_LIB#'/'}` git diff-index --quiet HEAD "$LIB_DIR" LIB_NEW_COMMITS=`echo $?` if [ $LIB_NEW_COMMITS == 1 ] then { git reset > /dev/null && git add "$LIB_DIR" > /dev/null && git commit -m "$MESSAGE" > /dev/null; } || { echo -e "Failed to update lib for ${project}\n" && exit 1; } if [ $project == "/var/www/d753_common" ] then { git push origin master > /dev/null && cd /var/www/d753/ && ./merge-from-master.sh > /dev/null cd /var/www/d753_10ballov/ && ./merge-from-master.sh > /dev/null; } || { echo -e "Failed to update dependency d753 branches... Please resolve that problem by hand\n" && exit 1; } fi else echo -e "Already update\n" fi done echo -e "All operations succeed\n" exit 0