|
|
@ -46,57 +46,182 @@ if [[ $# -ne 0 ]]; then |
|
|
|
usage |
|
|
|
fi |
|
|
|
|
|
|
|
######################################## |
|
|
|
# check system |
|
|
|
|
|
|
|
for prg in git ssh rsync kompare; do |
|
|
|
if ! type "${prg}" > /dev/null; then |
|
|
|
printKazError "$0 need ${prg}" |
|
|
|
echo "please run \"apt-get install ${prg}\"" |
|
|
|
exit |
|
|
|
fi |
|
|
|
done |
|
|
|
|
|
|
|
|
|
|
|
######################################## |
|
|
|
# config |
|
|
|
|
|
|
|
declare -a SKIP_FILE |
|
|
|
export SKIP_FILE=$(grep -v -e ^# -e ^$ "${KAZ_CONF_DIR}/skip-file.txt") |
|
|
|
KAZ_RDIFF_CHANGE="" |
|
|
|
KAZ_RDIFF_ENV="${KAZ_CONF_DIR}/rdiff-config.env" |
|
|
|
if [ -f "${KAZ_RDIFF_ENV}" ]; then |
|
|
|
. "${KAZ_RDIFF_ENV}" |
|
|
|
KAZ_CFG_UPDATED="" |
|
|
|
KAZ_UPDATE_ENV="${KAZ_CONF_DIR}/updateGit.conf" |
|
|
|
if [ -f "${KAZ_UPDATE_ENV}" ]; then |
|
|
|
. "${KAZ_UPDATE_ENV}" |
|
|
|
else |
|
|
|
KAZ_RDIFF_REMOTE="root@kazdev" |
|
|
|
KAZ_SRC_TYPE="VAGRANT" |
|
|
|
KAZ_DEV_REMOTE="root@kazdev" |
|
|
|
KAZ_PROD_REMOTE="root@kazprod" |
|
|
|
KAZ_VAGRANT_ROOT="~/kaz-vagrant" |
|
|
|
fi |
|
|
|
|
|
|
|
while : ; do |
|
|
|
read -p " Form which tested server ([Vagrant|DEV|PROD]) you want updaye git KAZ? [${KAZ_SRC_TYPE}]: " rep |
|
|
|
case "${rep}" in |
|
|
|
"") |
|
|
|
break |
|
|
|
;; |
|
|
|
[vV]*) |
|
|
|
KAZ_SRC_TYPE="VAGRANT" |
|
|
|
KAZ_CFG_UPDATED="true" |
|
|
|
break |
|
|
|
;; |
|
|
|
[dD]*) |
|
|
|
KAZ_SRC_TYPE="DEV" |
|
|
|
KAZ_CFG_UPDATED="true" |
|
|
|
break |
|
|
|
;; |
|
|
|
[pP]*) |
|
|
|
KAZ_SRC_TYPE="PROD" |
|
|
|
KAZ_CFG_UPDATED="true" |
|
|
|
break |
|
|
|
;; |
|
|
|
* ) |
|
|
|
printKazError "\"${rep}\" not match with [Vagrant|DEV|PROD]." |
|
|
|
;; |
|
|
|
esac |
|
|
|
done |
|
|
|
|
|
|
|
case "${KAZ_SRC_TYPE}" in |
|
|
|
VAGRANT) |
|
|
|
while : ; do |
|
|
|
read -p " Give kaz-vagrant root? [${KAZ_VAGRANT_ROOT}]: " vagrantPath |
|
|
|
if [ -z "${vagrantPath}" ]; then |
|
|
|
vagrantPath="${KAZ_VAGRANT_ROOT}" |
|
|
|
else |
|
|
|
KAZ_CFG_UPDATED="true" |
|
|
|
fi |
|
|
|
if [ ! -d "${vagrantPath/#\~/${HOME}}" ]; then |
|
|
|
printKazError "${vagrantPath} doesn't exist" |
|
|
|
continue |
|
|
|
fi |
|
|
|
KAZ_VAGRANT_ROOT="${vagrantPath}" |
|
|
|
KAZ_VAGRANT_PAHT="$(cd "${vagrantPath/#\~/${HOME}}" 2>/dev/null; pwd)" |
|
|
|
(for sign in .git .vagrant; do |
|
|
|
if [ ! -d "${KAZ_VAGRANT_PAHT}/${sign}" ]; then |
|
|
|
printKazError "${KAZ_VAGRANT_PAHT} not contains ${sign}" |
|
|
|
exit 1 |
|
|
|
fi |
|
|
|
done |
|
|
|
exit 0 |
|
|
|
) && break; |
|
|
|
done |
|
|
|
;; |
|
|
|
DEV|PROD) |
|
|
|
[ "${KAZ_SRC_TYPE}" == "DEV" ] && remoteUser="${KAZ_DEV_REMOTE}" || remoteUser="${KAZ_PROD_REMOTE}" |
|
|
|
while : ; do |
|
|
|
read -p "Give remote access? [${remoteUser}]: " rep |
|
|
|
case "${rep}" in |
|
|
|
"" ) |
|
|
|
break |
|
|
|
;; |
|
|
|
* ) |
|
|
|
if [[ "${rep}" =~ ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+$ ]]; then |
|
|
|
remoteUser="${rep}" |
|
|
|
break |
|
|
|
else |
|
|
|
printKazError "${rep} not match with [user@server]" |
|
|
|
fi |
|
|
|
;; |
|
|
|
esac |
|
|
|
done |
|
|
|
if [ "${KAZ_SRC_TYPE}" == "DEV" ]; then |
|
|
|
if [ "${remoteUser}" != "${KAZ_DEV_REMOTE}" ]; then |
|
|
|
KAZ_DEV_REMOTE="${remoteUser}"; KAZ_CFG_UPDATED="true" |
|
|
|
fi |
|
|
|
else |
|
|
|
if [ "${remoteUser}" != "${KAZ_PROD_REMOTE}" ]; then |
|
|
|
KAZ_PROD_REMOTE="${remoteUser}"; KAZ_CFG_UPDATED="true" |
|
|
|
fi |
|
|
|
fi |
|
|
|
;; |
|
|
|
esac |
|
|
|
|
|
|
|
if [ -n "${KAZ_CFG_UPDATED}" ]; then |
|
|
|
printKazMsg "Update ${KAZ_UPDATE_ENV}" |
|
|
|
cat > "${KAZ_UPDATE_ENV}" <<EOF |
|
|
|
KAZ_SRC_TYPE="${KAZ_SRC_TYPE}" |
|
|
|
KAZ_VAGRANT_ROOT="${KAZ_VAGRANT_ROOT}" |
|
|
|
KAZ_DEV_REMOTE="${KAZ_DEV_REMOTE}" |
|
|
|
KAZ_PROD_REMOTE="${KAZ_PROD_REMOTE}" |
|
|
|
EOF |
|
|
|
fi |
|
|
|
|
|
|
|
######################################## |
|
|
|
# check git/kaz |
|
|
|
|
|
|
|
cd "${KAZ_ROOT}" |
|
|
|
CURRENT_BRANCH="$(git branch | grep "*")" |
|
|
|
if [ "${CURRENT_BRANCH}" == "* develop" ]; then |
|
|
|
printKazMsg "You are on ${CURRENT_BRANCH}" |
|
|
|
printKazMsg "You are on ${CURRENT_BRANCH}." |
|
|
|
else |
|
|
|
printKazError "You supposed to be on * develop" |
|
|
|
checkContinue |
|
|
|
fi |
|
|
|
|
|
|
|
if [ "$(git status | grep "git restore")" ]; then |
|
|
|
printKazError "You didn't commit previous change" |
|
|
|
echo "You didn't commit previous change." |
|
|
|
checkContinue |
|
|
|
|
|
|
|
fi |
|
|
|
|
|
|
|
while : ; do |
|
|
|
read -p "Give remote tested server ['${KAZ_RDIFF_REMOTE}']? " remoteUser |
|
|
|
case "${remoteUser}" in |
|
|
|
"" ) |
|
|
|
break |
|
|
|
;; |
|
|
|
* ) |
|
|
|
if [[ "${remoteUser}" =~ ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+$ ]]; then |
|
|
|
KAZ_RDIFF_REMOTE="${remoteUser}" |
|
|
|
KAZ_RDIFF_CHANGE="true" |
|
|
|
break |
|
|
|
else |
|
|
|
printKazError "${remoteUser} not match with [user@server]." |
|
|
|
fi |
|
|
|
;; |
|
|
|
esac |
|
|
|
done |
|
|
|
|
|
|
|
KAZ_TMP_DIR="${KAZ_ROOT}/tmp/kaz" |
|
|
|
mkdir -p "${KAZ_TMP_DIR}" |
|
|
|
######################################## |
|
|
|
# download valide source from Vagrant, DEV or PROD |
|
|
|
|
|
|
|
export TESTED_DIR="${KAZ_TMP_DIR}" |
|
|
|
export TESTED_DIR="${KAZ_ROOT}/tmp/kaz" |
|
|
|
mkdir -p "${TESTED_DIR}" |
|
|
|
|
|
|
|
printKazMsg "Download working KAZ from ${KAZ_SKIP_REMOTE} to ${KAZ_TMP_DIR}" |
|
|
|
printKazMsg "Download from ${KAZ_SRC_TYPE} to ${KAZ_TMP_DIR}" |
|
|
|
checkContinue |
|
|
|
${SIMU} rsync -rlptDEHAX --no-o --delete --info=progress2 $(for i in ${REF_DIRS} ; do echo "${KAZ_RDIFF_REMOTE}:/kaz/$i" ; done) "${TESTED_DIR}" |
|
|
|
case "${KAZ_SRC_TYPE}" in |
|
|
|
VAGRANT) |
|
|
|
( |
|
|
|
echo "check vagrant status" |
|
|
|
cd "${KAZ_VAGRANT_ROOT/#\~/${HOME}}" |
|
|
|
while :; do |
|
|
|
if [ -n "$(vagrant status | grep running)" ]; then |
|
|
|
exit |
|
|
|
fi |
|
|
|
printKazMsg "Please start vagrant" |
|
|
|
checkContinue |
|
|
|
done |
|
|
|
) |
|
|
|
# XXX test vagrand up |
|
|
|
# XXX remote root |
|
|
|
${SIMU} rsync -rlptDEHAX --no-o --delete --info=progress2 \ |
|
|
|
-e "ssh -p 2222 -i ${KAZ_VAGRANT_ROOT/#\~/${HOME}}/.vagrant/machines/default/virtualbox/private_key" \ |
|
|
|
$(for i in ${REF_DIRS} ; do echo "vagrant@127.0.0.1:/kaz/$i" ; done) \ |
|
|
|
"${TESTED_DIR}" |
|
|
|
;; |
|
|
|
DEV|PROD) |
|
|
|
# remoteUser is already set |
|
|
|
[ "${KAZ_SRC_TYPE}" == "DEV" ] && remoteUser="${KAZ_DEV_REMOTE}" || remoteUser="${KAZ_PROD_REMOTE}" |
|
|
|
|
|
|
|
${SIMU} rsync -rlptDEHAX --no-o --delete --info=progress2 \ |
|
|
|
$(for i in ${REF_DIRS} ; do echo "${remoteUser}:/kaz/$i" ; done) \ |
|
|
|
"${TESTED_DIR}" |
|
|
|
;; |
|
|
|
esac |
|
|
|
|
|
|
|
|
|
|
|
cd "${TESTED_DIR}" |
|
|
|
|
|
|
@ -197,14 +322,39 @@ for file in ${CHANGED_FILES[@]}; do |
|
|
|
chmod --reference="${file}" "${KAZ_ROOT}/${file}" |
|
|
|
done |
|
|
|
|
|
|
|
echo |
|
|
|
while : ; do |
|
|
|
read -p "Do you want to keep ${TESTED_DIR} to speed up next download? [yes]" rep |
|
|
|
case "${rep}" in |
|
|
|
""|[yYoO]* ) |
|
|
|
break |
|
|
|
;; |
|
|
|
[Nn]* ) |
|
|
|
rm -r "${TESTED_DIR}" |
|
|
|
;; |
|
|
|
* ) |
|
|
|
echo "Please answer yes no." |
|
|
|
;; |
|
|
|
esac |
|
|
|
done |
|
|
|
|
|
|
|
echo "OK" |
|
|
|
exit |
|
|
|
cd "${KAZ_ROOT}" |
|
|
|
echo -e "\nThe git will now commit in ${CURRENT_BRANCH}" |
|
|
|
checkContinue |
|
|
|
git commit -a |
|
|
|
|
|
|
|
# auto seulement si pas de ignore |
|
|
|
# git commit -a |
|
|
|
# git push |
|
|
|
echo -e "\nThe git will now pull in ${CURRENT_BRANCH}" |
|
|
|
checkContinue |
|
|
|
git pull |
|
|
|
|
|
|
|
#XXX check conflict |
|
|
|
|
|
|
|
echo -e "\nThe git will now push in ${CURRENT_BRANCH}" |
|
|
|
checkContinue |
|
|
|
git push |
|
|
|
|
|
|
|
# ssh root@X ; |
|
|
|
# git reset --hard |
|
|
|
# git pull |
|
|
|
echo -e "\nYou have to logged on ${KAZ_SRC_TYPE}, and launch:\n" \ |
|
|
|
" ssh root@host\n" \ |
|
|
|
" cd /kaz\n" \ |
|
|
|
" git reset --hard\n" \ |
|
|
|
" git pull" |
|
|
|