add TODO document + progress calculation
This commit is contained in:
33
tools/todo-progress
Executable file
33
tools/todo-progress
Executable file
@ -0,0 +1,33 @@
|
||||
#!/bin/bash
|
||||
# check if required programs are installed
|
||||
declare -a required=(gnuplot sponge)
|
||||
for cmd in "${required[@]}"; do
|
||||
command -v $cmd >/dev/null 2>&1 || { echo >&2 "Required '$cmd' not installed => aborting."; exit 1; }
|
||||
done
|
||||
|
||||
# calculate current values
|
||||
let budget=`grep '^| ... |' <TODO.md | rev | cut -d'|' -f4 | rev | grep -o '[[:digit:]]*' | total`
|
||||
let effort=`grep '^| ... |' <TODO.md | rev | cut -d'|' -f3 | rev | grep -o '[[:digit:]]*' | total`
|
||||
let output=`grep '^| ... |' <TODO.md | rev | cut -d'|' -f2 | rev | grep -o '[[:digit:]]*' | total`
|
||||
let remainder=$(expr $budget - $output)
|
||||
|
||||
# generating progress report
|
||||
echo '<!-- generated todo-progress begin: -->' >.todo-progress.md
|
||||
sed -e '1,/todo-progress begin:/d' -e '/todo-progress end./,$d' TODO.md >>.todo-progress.md
|
||||
if [ "$1" = "--recalculate" ]; then
|
||||
echo "| $(date --iso-8601) | $(printf "%6d" $budget) | $(printf "%7d" $effort) | $(printf "%8d" $output) | $(printf "%11d" $remainder) |" >>.todo-progress.md
|
||||
fi
|
||||
echo '<!-- generated todo-progress end. -->' >>.todo-progress.md
|
||||
|
||||
# replace the generated todo-progress part
|
||||
if [ "$1" = "--recalculate" ]; then
|
||||
uniq <.todo-progress.md | sponge .todo-progress.md
|
||||
sed -i -e '/todo-progress begin:/,/todo-progress end./!b' -e '/todo-progress end./!d;r .todo-progress.md' -e 'd' TODO.md
|
||||
fi
|
||||
|
||||
# re-generate progress chart
|
||||
sed -e's/^|//' <.todo-progress.md | tr '|' ';' | grep ';' | grep -v -- '---' >.todo-progress.csv
|
||||
gnuplot tools/todo-progress.gnuplot
|
||||
rm .todo-progress.md .todo-progress.csv
|
||||
|
||||
echo "HINT: To recalculate the current values and add a new line, use '$0 --recalculate'."
|
6
tools/todo-progress-line.csv
Normal file
6
tools/todo-progress-line.csv
Normal file
@ -0,0 +1,6 @@
|
||||
Datum ; Soll-Leistung
|
||||
2022-07-11 ; 0
|
||||
2022-07-31 ; 102
|
||||
2022-08-31 ; 253
|
||||
2022-09-30 ; 399
|
||||
2022-10-31 ; 550
|
|
23
tools/todo-progress.gnuplot
Normal file
23
tools/todo-progress.gnuplot
Normal file
@ -0,0 +1,23 @@
|
||||
set xdata time # x-axis values are time (date) values
|
||||
set timefmt "%Y-%m-%d" # date value format
|
||||
set datafile separator ";" # CSV column separator is semicolon
|
||||
set key autotitle columnhead # first data line contains column titles
|
||||
set format x "%y-%m-%d" # display date format
|
||||
|
||||
set xrange ["2022-07-11":"2022-10-31"] # x-axis value-range
|
||||
set yrange [0:600] # y-axis value-range
|
||||
|
||||
set key inside # graph legend style
|
||||
set xtics rotate by -45 # rotate dates on x-axis 45deg for cleaner display
|
||||
set title 'hsadmin-ng Projektfortschritt' # graph title
|
||||
|
||||
set terminal png # output format
|
||||
set term png size 920, 640 # output canvas size
|
||||
set output 'TODO-progress.png' # output file name
|
||||
|
||||
plot '.todo-progress.csv' using 1:2 with linespoints linetype rgb "black" linewidth 2, \
|
||||
'' using 1:3 with linespoints linetype rgb "red" linewidth 2, \
|
||||
'' using 1:4 with linespoints linetype rgb "green" linewidth 2, \
|
||||
'' using 1:5 with linespoints linetype rgb "blue" linewidth 2, \
|
||||
'tools/todo-progress-line.csv' using 1:2 with linespoints linetype rgb "gray" linewidth 1 \
|
||||
|
Reference in New Issue
Block a user