Skip to content
This repository was archived by the owner on Mar 7, 2025. It is now read-only.

Commit c10602c

Browse files
committed
Changelog: Added '-s/--simple' argument to 'changelog.sh'
1 parent 195b704 commit c10602c

File tree

1 file changed

+99
-37
lines changed

1 file changed

+99
-37
lines changed

scripts/changelog.sh

Lines changed: 99 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -21,56 +21,118 @@ readonly REPO="https://github.com/cloudbox/cloudbox"
2121
readonly PREVIOUS_VERSION=$(git describe --abbrev=0 --tags)
2222
readonly 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

Comments
 (0)