Files
ioccc/bin/subst.year-navbar.awk
T
Landon Curt Noll 0aa790fd88 fix bug in subst.entry-index.sh, improve awk scripts
Fixed a bug that was introduced into `bin/subst.entry-index.sh`
where the value `$HTML_SED` was set too early.  Shell functions
variables are evaluated when they are executed, not when they
are first parsed.  So exported variables used by a shell function
need to be set only before the shell function is executed.

Checkpoint `bin/cvt-submission.sh` as part of our testing.
Set file modes of 0444 for when `.auth.json` is formed from `.auth.json.xz`.

The awk scripts under bin put their name (basename) into error
messages to make it easier to debug any error they might raise.

Changed `bin/cvt-submission.sh` VERSION from "2.0.1 2025-05-01"
to "2.0.2 2025-05-17".

Changed `bin/filelist.entry.json.awk` VERSION from "1.0 2024-02-12"
to "1.0.1 2025-05-17".

Changed `bin/manifest.csv.entry.awk` VERSION from "1.0 2024-07-14"
to "1.0.1 2025-05-17".

Changed `bin/manifest.entry.json.awk` VERSION from "1.2.1 2024-11-16"
to "1.2.2 2025-05-17".

Changed `bin/subst.entry-index.sh` VERSION from "2.0.0 2025-03-13"
to "2.0.1 2025-05-17".

Changed `bin/subst.entry-navbar.awk` VERSION from "1.3 2024-08-02"
to "1.3.1 2025-05-17".

Changed `bin/subst.year-navbar.awk` VERSION from "1.2 2024-04-04"
to "1.2.1 2025-05-17".

Update sitemap.

Tested the above via `make update` on macOS.
2025-05-17 23:56:22 -07:00

132 lines
2.9 KiB
Awk
Executable File

#!/usr/bin/env awk
#
# subst.year-navbar.awk - output substitutions for navbar on behalf of a year
#
# This tool is usually invoked from the bin/subst.year-index.sh output tool.
# That tool, in turn, is usually invoked by:
#
# -o bin/subst.year-index.sh
#
# IMPORTANT: Each command line option / argument MUST be printed on a separate line!
#
# usage:
#
# awk -v year_arg=YYYY -f bin/subst.year-navbar.awk .top
#
# where:
#
# YYYY IOCCC year or mock
BEGIN {
# setup
#
VERSION="1.2.1 2025-05-17"
NAME = "subst.year-navbar.awk"
process_next_line = 0; # 1 ==> we found our year_arg, now process the next line
found_year_arg = 0; # 1 ==> we found our year_arg
prev_line = ""; # the previous YYYY line
navbar_phase = "year.mid"; # navbar name to use (-H navbar=navbar_phase)
# error if year_arg is not set via -v year_arg=YYYY
#
if (length(year_arg) == 0) {
exit 210; # use 210 to match length(year_arg) == 0 error in the END section
}
}
# process YYYY lines
#
{
# obtain the YYYY line
#
year = $0;
# if we need the line after we found our year_arg
#
if (process_next_line) {
# process the line after we found our year_arg
#
# report the previous year
print "-s";
print "RIGHT_LINK=../" year "/index.html";
print "-s";
print "RIGHT_TEXT=" year;
process_next_line = 0;
# if we found our year_arg
#
} else if (year_arg == $0) {
# in case our our year_arg is the 1st line
#
if (NR == 1) {
# no previous line year_arg is the 1st line
navbar_phase = "year.first";
}
# process the previous YYYY line with this match
#
if (prev_line) {
# process previous line
#
prev_year = prev_line;
# report the next entry for this year
print "-s";
print "LEFT_LINK=../" prev_line "/index.html";
print "-s";
print "LEFT_TEXT=" prev_line;
}
# process our found year_arg
#
# report up link top year index.html
print "-s";
print "UP_LINK=../years.html";
print "-s";
print "UP_TEXT=top";
process_next_line = 1;
found_year_arg = 1;
}
# save the line as the next previous line
#
prev_line = $0;
}
END {
# error if github is not set via -v github=REPO_URL
#
if (length(year_arg) == 0) {
print "-e";
print "ERROR:", NAME ": year_arg variable not set, call with -v year_arg=YYYY";
print "-E";
print "210"; # use 210 to match length(year_arg) == 0 error in the BEGIN section
exit 210; # use 210 to match length(year_arg) == 0 error in the BEGIN section
}
# case: we did not find our year_arg
#
if (!found_year_arg) {
# ERROR: year_arg was not found
print "-e";
print "'" NAME ": did not find:", year_arg "'";
print "-E";
print "215";
exit
} else if (process_next_line) {
# no next line year_arg is the last line
navbar_phase = "year.last";
}
# output the navbar phase name
#
print "-H";
print "navbar=" navbar_phase;
}