changelog/changelog

90 lines
2.3 KiB
Plaintext
Raw Normal View History

2020-05-12 08:20:41 +00:00
#!/bin/bash
#Manages an /etc/changelog
CHANGELOG=/etc/changelog
2020-05-15 09:46:56 +00:00
2020-05-12 08:20:41 +00:00
# functions
msg(){ echo -e "$@"; }
panic(){ msg "${@} Exiting."; exit 1;}
template(){
2020-05-15 23:34:45 +00:00
local t=$(mktemp)
cat << HEREDOC >$t
2020-05-12 08:20:41 +00:00
$(date "+%Y-%m-%d %H:%M") $CHANGELOG_USERNAME
$( echo -e "$@"|sed 's/^/ /' )
HEREDOC
2020-05-15 23:34:45 +00:00
[[ -f $CHANGELOG ]] && cat /etc/changelog >> $t
cat "$t" > $CHANGELOG
rm -f "$t"
2020-05-12 08:20:41 +00:00
}
change(){
local TMP=$(mktemp)
while true ; do
echo -e "\nType the nature of the change.\nExample: > mysql: do not start on boot\n"
read -e -p "> " SUB
2020-05-15 09:46:56 +00:00
echo -e "* $SUB" >> $TMP
echo -e "\nTime for some details."
for (( ; ; )); do
echo "Select number or x to quit"
for (( i=0; i<${#HOOKS_CONTENT_MENU[@]}; i++)) ; do
echo "$i) ${HOOKS_CONTENT_MENU[$i]}"
done
echo "x) No more details."
read -e -n 1 -p "Your choice? :" REPLY
if [[ "x" == ${REPLY,,} ]]; then
break
elif [[ -z "${HOOKS_CONTENT[$REPLY]}" ]] ; then
echo "Unknown Key."
else
${HOOKS_CONTENT[$REPLY]} $TMP
fi
done
read -e -i "n" -p "Another section? [yN]:" END
2020-05-12 08:20:41 +00:00
[[ "${END^^}" == "N" ]] && break
done
echo -e "\nHere is the content you are about to add.\n\n$(cat $TMP)\n"
read -e -p "OK? [Yn]: " -i y RETURN
[[ "N" == ${RETURN^^} ]] && return
template "$(cat $TMP)"
rm $TMP
}
2020-05-15 09:46:56 +00:00
hookContentComment(){
[[ -z "$1" ]] && echo "Enter a simple comment. Ex: systemctl disable nginx" && return
TMP="$1"
read -e -p "Your comment: " CONTENT
echo "$CONTENT" >> $TMP
}
2020-05-12 08:20:41 +00:00
# Exec
2020-05-15 09:46:56 +00:00
# Build the hook content menu
HOOKS_CONTENT+=("hookContentComment")
declare -a HOOKS_CONTENT_MENU
[[ -n "hooks-content/*" ]] && source hooks-content/*
for (( i = 0; i < ${#HOOKS_CONTENT[@]} ; i++ )); do
TXT=$( ${HOOKS_CONTENT[$i]} )
HOOKS_CONTENT_MENU+=("$( ${HOOKS_CONTENT[$i]} )")
done
2020-05-12 08:20:41 +00:00
echo -e "\nWelcome to Serious Changelogs Inc. Do you have something for me?\n"
# set environment variables
[[ -z "$CHANGELOG_USERNAME" ]] && read -e -p "Your name? " NAME&& read -e -p "Your email? " EMAIL && CHANGELOG_USERNAME="${NAME^} <$EMAIL>" && echo "export CHANGELOG_USERNAME=\"$CHANGELOG_USERNAME\""
[[ " <>" == "$CHANGELOG_USERNAME" ]] && panic "srs.ly?"
# check changelog exists
[[ ! -f $CHANGELOG ]] && template "* Changelog: Added $CHANGELOG file\nIt was not serious. Fixed!\n\n"
# parse command
change