File: plot-loc.sh

package info (click to toggle)
jgmenu 4.5.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,464 kB
  • sloc: ansic: 13,215; perl: 4,953; sh: 3,009; python: 600; makefile: 294; xml: 98
file content (54 lines) | stat: -rwxr-xr-x 1,364 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#!/bin/bash

type git >/dev/null 2>&1 || { printf 'fatal: need git\n'; exit 1; }
type gnuplot >/dev/null 2>&1 || { printf 'fatal: need gnuplot\n'; exit 1; }
[[ $(git diff --stat) != '' ]] && { printf 'fatal: repo is dirty\n'; exit 1; }

versions="$(git tag | tr '\n' ' ')"
#versions="v3.2 v3.3 v3.4 v3.5"

loc_file="locdata"
loc_graph="loc.png"
gnuplot_commands="gnuplotcommands"
cat >$gnuplot_commands <<'EOF'
set title "jgmenu C LOC vs time"
#unset multiplot
set xdata time
set term png
set timefmt "%Y-%m-%d"
set format x "%Y"
set xlabel "Time"
set ylabel "LOC(C)"
set autoscale x
#set xrange ["2015-01-01":"2020-12-31"]
set yrange ["0":"12000"]
#set autoscale y
EOF
printf '%b\n' "set output \"$loc_graph\"" >>$gnuplot_commands
printf '%b\n' "plot \"$loc_file\" using 1:2" >>$gnuplot_commands

trap "rm -f ${loc_file} ${gnuplot_commands}" EXIT

generate_loc_data () {
	for v in $versions
	do
		git checkout $v 2>/dev/null
		if [[ -d src/ ]]; then
			dir="src/"
		else
			dir="."
		fi
		tag_date=$(git log --tags --simplify-by-decoration \
				   --pretty="format:%ai %d" \
				   | grep "$v)" \
				   | awk '{ print $1 }')
		tag_loc=$(cloc $dir | grep '^C ' | awk '{ print $5 }')
		printf '%b\n' "[$v] $tag_date $tag_loc"
		printf '%b\n' "$tag_date $tag_loc" >>$loc_file

	done
	git checkout master 2>/dev/null
}

generate_loc_data
gnuplot <$gnuplot_commands