@@ -21,56 +21,118 @@ readonly REPO="https://github.com/cloudbox/cloudbox"
2121readonly PREVIOUS_VERSION=$( git describe --abbrev=0 --tags)
2222readonly NEXT_VERSION=$( echo $PREVIOUS_VERSION | awk -F. -v OFS=. ' NF==1{print ++$NF}; NF>1{$NF=sprintf("%0*d", length($NF), ($NF+1)); print}' )
2323
24+ # Boolean vars
25+ readonly TRUE=1
26+ readonly FALSE=0
27+
2428# ###############################
25- # Main
29+ # Functions
2630# ###############################
2731
2832# Cleanup
29- [ -e $CHANGELOG ] && rm $CHANGELOG
33+ function cleanup() {
34+ [ ! -e $CHANGELOG ] || rm $CHANGELOG
35+ }
3036
3137# Header
32- echo \
33- -e \
34- " \n## [$NEXT_VERSION ][] - $DATE \n" \
35- >> changelog.txt
38+ function header() {
39+ echo \
40+ -e \
41+ " \n## [$NEXT_VERSION ][] - $DATE \n" \
42+ >> changelog.txt
43+ }
3644
3745# List of commits
38- git \
39- log \
40- --reverse \
41- --pretty=format:" %s ([#%h][])" \
42- develop...master | \
43- sed ' s/\(^[^:]*\):/- **\1**:/g' | \
44- sed ' s/\[skip ci\]//g' | \
45- sed ' s/\[minor\]//g' \
46- >> $CHANGELOG
46+ function commits() {
47+ git \
48+ log \
49+ --reverse \
50+ --pretty=format:" %s ([#%h][])" \
51+ develop...master | \
52+ sed ' s/\(^[^:]*\):/- **\1**:/g' | \
53+ sed ' s/\[skip ci\]//g' | \
54+ sed ' s/\[minor\]//g' \
55+ >> $CHANGELOG
56+ }
4757
4858# Whitespace
49- echo " " >> $CHANGELOG
50-
51- # Header Link
52- echo \
53- -e \
54- " [$NEXT_VERSION ]: $REPO /compare/$PREVIOUS_VERSION ...$NEXT_VERSION " \
55- >> $CHANGELOG
56-
57- # List of reference links
58- git \
59- log \
60- --reverse \
61- --pretty=format:" [#%h]: $REPO /commit/%h" \
62- develop...master \
63- >> $CHANGELOG
59+ function whitespace() {
60+ echo " " >> $CHANGELOG
61+ }
6462
65- # Whitespace
66- echo " " >> $CHANGELOG
63+ # Header Reference Link
64+ function header_ref() {
65+ echo \
66+ -e \
67+ " [$NEXT_VERSION ]: $REPO /compare/$PREVIOUS_VERSION ...$NEXT_VERSION " \
68+ >> $CHANGELOG
69+ }
70+
71+ # Commit Reference links
72+ function commit_ref() {
73+ git \
74+ log \
75+ --reverse \
76+ --pretty=format:" [#%h]: $REPO /commit/%h" \
77+ develop...master \
78+ >> $CHANGELOG
79+ }
6780
6881# Display $CHANGELOG
69- if [[ " $OSTYPE " == " linux-gnu" ]]; then
70- cat $CHANGELOG
71- elif [[ " $OSTYPE " == " darwin" * ]]; then
82+ function display() {
83+ if [[ " $OSTYPE " == " linux-gnu" ]]; then
84+ cat $CHANGELOG
85+ elif [[ " $OSTYPE " == " darwin" * ]]; then
7286 cat $CHANGELOG
73- if [ -x " $( command -v atom) " ]; then
87+ fi
88+ }
89+
90+ # Open $CHANGELOG in Atom
91+ function display_atom() {
92+ if [[ -x " $( command -v atom) " ]]; then
7493 atom $CHANGELOG
7594 fi
76- fi
95+ }
96+
97+ # ###############################
98+ # Argument Parser
99+ # ###############################
100+
101+ # # https://stackoverflow.com/a/39398359
102+ FULL=${TRUE}
103+ # As long as there is at least one more argument, keep looping
104+ while [[ $# -gt 0 ]]; do
105+ key=" $1 "
106+ case " $key " in
107+ # This flag type option will catch either -s or --simple
108+ -s|--simple)
109+ FULL=${FALSE}
110+ ;;
111+ * )
112+ # Exit when unknown argument is passed
113+ echo " Unknown option '$key '"
114+ exit 10
115+ ;;
116+ esac
117+ shift
118+ done
119+
120+
121+ # ###############################
122+ # Main
123+ # ###############################
124+
125+ function main ()
126+ {
127+ cleanup
128+ if [[ ${FULL} == ${TRUE} ]]; then header; fi
129+ commits
130+ whitespace
131+ if [[ ${FULL} == ${TRUE} ]]; then header_ref; fi
132+ commit_ref
133+ whitespace
134+ display
135+ if [[ ${FULL} == ${TRUE} ]]; then display_atom; fi
136+ }
137+
138+ main " $@ "
0 commit comments