Improve "dry run" mode
Hooks are executed, but they show the actions instead of doing them.
This commit is contained in:
parent
463555475b
commit
293c38fb83
|
@ -98,6 +98,10 @@ hook_commit() {
|
|||
if test -d "${GIT_DIR}" && test -d "${GIT_WORK_TREE}"; then
|
||||
CHANGED_LINES=$(${GIT_BIN} status --porcelain | wc -l | tr -d ' ')
|
||||
if [ "${CHANGED_LINES}" != "0" ]; then
|
||||
if [ "${DRY_RUN}" = "1" ]; then
|
||||
STATS=$(${GIT_BIN} diff --stat | tail -1)
|
||||
GIT_COMMITS=$(printf "%s\n%s : %s" "${GIT_COMMITS}" "${GIT_DIR}" "${STATS}" | sed -e '/^$/d')
|
||||
else
|
||||
${GIT_BIN} add --all
|
||||
${GIT_BIN} commit --message "${TEXTE}" --author="${USER} <${USER}@evolix.net>" --quiet
|
||||
# Add the SHA to the log file if something has been committed
|
||||
|
@ -107,30 +111,43 @@ hook_commit() {
|
|||
GIT_COMMITS=$(printf "%s\n%s : %s –%s" "${GIT_COMMITS}" "${GIT_DIR}" "${SHA}" "${STATS}" | sed -e '/^$/d')
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
# unset environment variables to prevent accidental influence on other git commands
|
||||
unset GIT_DIR GIT_WORK_TREE
|
||||
done
|
||||
if [ -n "${GIT_COMMITS}" ]; then
|
||||
if [ "${DRY_RUN}" = "1" ]; then
|
||||
echo "\n\n********** Commits ****************\n${GIT_COMMITS}\n***********************************"
|
||||
else
|
||||
echo "${GIT_COMMITS}" >> "${LOGFILE}"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
hook_db() {
|
||||
# SQL_TEXTE=`echo "${TEXTE}" | sed "s/'/\\\\\\'/g ; s@/@\\\\\/@g ; s@\\&@et@g"`
|
||||
SQL_TEXTE=$(echo "${TEXTE}" | sed "s/'/''/g")
|
||||
|
||||
PG_QUERY="INSERT INTO evomaint(hostname,userid,ipaddress,begin_date,end_date,details) VALUES ('${HOSTNAME}','${USER}','${IP}','${BEGIN_DATE}',now(),'${SQL_TEXTE}')"
|
||||
|
||||
if [ "${DRY_RUN}" = "1" ]; then
|
||||
echo "\n\n********** DB query **************\n${PG_QUERY}\n***********************************"
|
||||
else
|
||||
echo "${PG_QUERY}" | psql ${PGDB} ${PGTABLE} -h ${PGHOST}
|
||||
fi
|
||||
}
|
||||
|
||||
hook_mail() {
|
||||
MAIL_TEXTE=$(echo "${TEXTE}" | sed -e "s@/@\\\\\/@g ; s@&@\\\\&@")
|
||||
MAIL_GIT_COMMITS=$(echo "${GIT_COMMITS}" | sed -e "s@/@\\\\\/@g ; s@&@\\\\&@")
|
||||
MAIL_CONTENT=$(cat /usr/share/scripts/evomaintenance.tpl | \
|
||||
sed -e "s/__TO__/${EVOMAINTMAIL}/ ; s/__HOSTNAME__/${HOSTNAME_TEXT}/ ; s/__USER__/${USER}/ ; s/__BEGIN_DATE__/${BEGIN_DATE}/ ; s/__END_DATE__/${END_DATE}/ ; s/__GIT_COMMITS__/${MAIL_GIT_COMMITS}/ ; s/__TEXTE__/${MAIL_TEXTE}/ ; s/__IP__/${IP}/ ; s/__FULLFROM__/${FULLFROM}/ ; s/__FROM__/${FROM}/ ; s/__URGENCYFROM__/${URGENCYFROM}/ ; s/__URGENCYTEL__/${URGENCYTEL}/")
|
||||
|
||||
cat /usr/share/scripts/evomaintenance.tpl | \
|
||||
sed -e "s/__TO__/${EVOMAINTMAIL}/ ; s/__HOSTNAME__/${HOSTNAME_TEXT}/ ; s/__USER__/${USER}/ ; s/__BEGIN_DATE__/${BEGIN_DATE}/ ; s/__END_DATE__/${END_DATE}/ ; s/__GIT_COMMITS__/${MAIL_GIT_COMMITS}/ ; s/__TEXTE__/${MAIL_TEXTE}/ ; s/__IP__/${IP}/ ; s/__FULLFROM__/${FULLFROM}/ ; s/__FROM__/${FROM}/ ; s/__URGENCYFROM__/${URGENCYFROM}/ ; s/__URGENCYTEL__/${URGENCYTEL}/" | \
|
||||
${SENDMAIL_BIN} -oi -t -f ${FROM}
|
||||
if [ "${DRY_RUN}" = "1" ]; then
|
||||
echo "\n\n********** Mail *******************\n${MAIL_CONTENT}\n***********************************"
|
||||
else
|
||||
echo "${MAIL_CONTENT}" | ${SENDMAIL_BIN} -oi -t -f ${FROM}
|
||||
fi
|
||||
}
|
||||
|
||||
test -f /etc/evomaintenance.cf && . /etc/evomaintenance.cf
|
||||
|
@ -254,24 +271,18 @@ echo "> Press <Enter> to submit, or <Ctrl+c> to cancel."
|
|||
read enter
|
||||
|
||||
# write log
|
||||
if [ "${DRY_RUN}" = "1" ]; then
|
||||
echo "\n\n********** Log ********************\n${BLOB}\n***********************************"
|
||||
else
|
||||
echo "----------- $(get_now) ---------------" >> "${LOGFILE}"
|
||||
echo "${BLOB}" >> "${LOGFILE}"
|
||||
fi
|
||||
|
||||
if [ "${DRY_RUN}" = "1" ]; then
|
||||
echo
|
||||
echo "[DRY-RUN] Options:"
|
||||
echo "OPT_COMMIT: ${OPT_COMMIT}"
|
||||
echo "OPT_DB: ${OPT_DB}"
|
||||
echo "OPT_MAIL: ${OPT_MAIL}"
|
||||
|
||||
exit 2
|
||||
else
|
||||
# Hooks
|
||||
# git commit
|
||||
[ "${OPT_COMMIT}" = "1" ] && hook_commit
|
||||
# insert into PG
|
||||
[ "${OPT_DB}" = "1" ] && hook_db
|
||||
# send mail
|
||||
[ "${OPT_MAIL}" = "1" ] && hook_mail
|
||||
|
||||
exit 0
|
||||
fi
|
||||
|
|
Loading…
Reference in a new issue