Some command line options are not GNU/POSIX compliant (3)
[geeqie.git] / gen_changelog.sh
1 #!/bin/sh
2
3 ## @file
4 ## @brief Update ChangeLog file  
5 ## - it keeps "pre-svn" history and inserts git log at top,  
6 ## - it uses C locale for date format.  
7 ## - It has to be run where ChangeLog.gqview is.  
8 ##
9 ## ChangeLog.html is also created
10 ##
11
12 builddir="$2"
13
14 cd "$1" || exit
15
16 [ ! -e "ChangeLog.gqview" ] && exit 1
17 [ ! -x "$(command -v git)" ] && exit 1
18 [ ! -d ".git" ] && exit 1
19
20 LC_ALL=C git log --no-merges --no-notes --encoding=UTF-8 --no-follow --use-mailmap 1b58572cf58e9d2d4a0305108395dab5c66d3a09..HEAD > "$builddir/ChangeLog.$$.new" && \
21 cat ChangeLog.gqview >> "$builddir/ChangeLog.$$.new" && \
22 mv -f "$builddir/ChangeLog.$$.new" "$builddir/ChangeLog"
23
24
25 echo "<textarea rows='6614' cols='100'>" >"$builddir/ChangeLog.$$.old.html" && \
26 tail -6613 "$builddir/ChangeLog" >> "$builddir/ChangeLog.$$.old.html" && \
27 echo "</textarea>" >>"$builddir/ChangeLog.$$.old.html" && \
28 echo "<html>" > "$builddir/ChangeLog.$$.new.html" && \
29 echo "<body>" >> "$builddir/ChangeLog.$$.new.html" && \
30 echo "<ul>" >> "$builddir/ChangeLog.$$.new.html" && \
31 LC_ALL=C git log --no-merges --no-notes --encoding=UTF-8 --date=format:'%Y-%m-%d' --no-follow --use-mailmap --pretty=format:"<li><a href=\"http://geeqie.org/cgi-bin/gitweb.cgi?p=geeqie.git;a=commit;h=%H\">view commit </a></li><p>Author: %aN<br>Date: %ad<br><textarea rows=4 cols=100>%s %n%n%b</textarea><br><br></p>" 1b58572cf58e9d2d4a0305108395dab5c66d3a09..HEAD >> "$builddir/ChangeLog.$$.new.html" && \
32 echo "" >> "$builddir/ChangeLog.$$.new.html" && \
33 cat "$builddir/ChangeLog.$$.old.html" >> "$builddir/ChangeLog.$$.new.html" && \
34 echo "</ul>" >> "$builddir/ChangeLog.$$.new.html" && \
35 echo "</body>" >> "$builddir/ChangeLog.$$.new.html" && \
36 echo "</html>" >> "$builddir/ChangeLog.$$.new.html"
37
38 rm "$builddir/ChangeLog.$$.old.html"
39 mv -f "$builddir/ChangeLog.$$.new.html" "$builddir/ChangeLog.html"
40
41 # Meson: distribute in tarballs. The first variable is more reliable, but requires Meson 0.58.
42 # Fallback to the older one if necessary
43 # shellcheck disable=SC2154
44 for distdir in "$MESON_PROJECT_DIST_ROOT" "$MESON_DIST_ROOT"; do
45     if [ -n "$distdir" ]; then
46         cp -f "$builddir/ChangeLog.html" "$distdir/ChangeLog.html"
47         cp -f "$builddir/ChangeLog" "$distdir/ChangeLog"
48         break
49     fi
50 done
51
52 exit 0