feat(user/bkots):Use subshells to speed up jobs
[BK-2020-03.git] / user / mw_create_summary_months.sh
1 #!/usr/bin/env bash
2 # Desc: Prints mediawiki code for a summary of months of a year on the bk4 wiki.
3 # Usage: /bin/bash mw_create_summary_months.sh [int year]
4 # Input: arg1: year
5 # Example: /bin/bash mw_create_summary_months.sh [int year] > output.txt
6 # Version: 0.0.1
7
8 yell() { echo "$0: $*" >&2; } # print script path and all args to stderr
9 die() { yell "$*"; exit 111; } # same as yell() but non-zero exit status
10 must() { "$@" || die "cannot $*"; } # runs args as command, reports args if command fails
11 main() {
12 yyyy="$1";
13
14 # Check input
15 if [[ $# -ne 1 ]]; then die "FATAL:Invalid arg count:$#"; fi;
16 ## Strip leading zeroes (because August/octal)
17 yyyy="$((10#${yyyy}))";
18 ## Check year
19 re="[0-9]+";
20 if [[ ! $yyyy =~ $re ]]; then die "FATAL:Invalid year string:$yyyy"; fi;
21 if [[ ! $yyyy -ge 1582 ]]; then die "FATAL:Invalid year string:$yyyy"; fi;
22
23 # Calc working vars
24 ## Years
25 yyyy_prev="$((yyyy - 1))";
26 yyyy_next="$((yyyy + 1))";
27
28 # Form and print header
29 printf "{{bk journal header}}\n";
30 printf "A summary of monthly journals of [[%d]]. " "$yyyy";
31 printf "Preceded by [[Summary of months of %d]]. " "$yyyy_prev";
32 printf "Followed by [[Summary of months of %d]]. " "$yyyy_next";
33 printf "\n\n";
34
35 # Form and print body
36 for (( mm=1; mm <= 12; mm++)); do
37 printf "=[[%4d-%02d]]=" "$yyyy" "$mm";
38 printf "\n";
39 printf "{{:%4d-%02d}}" "$yyyy" "$mm";
40 printf "\n";
41
42 done;
43 printf "\n\n";
44
45 # Form and print footer
46 printf "{{bk journal footer}}\n";
47 s1="[[Category:Monthly summaries by year]]"
48 printf "%s\n" "$s1";
49 printf "\n";
50
51 }; # main program
52
53 main "$@";
54
55 # Author: Steven Baltakatei Sandoval
56 #+License: GPLv3+