use bin/jval-wrapper.sh instead of direct grep of JSON files
We use the `bin/jval-wrapper.sh` tool to obtain information from JSON files instead of attempting using a "GROSS HACK" that involved using `grep(1)` (and friends) as those "GROSS HACK"s assumed that the layout of the JSON was canonical. The `bin/jval-wrapper.sh` tool is able to deal with various layouts of JSON including non-canonical layouts. Moreover, by using the `bin/jval-wrapper.sh` tool we greatly reduce the places in bin tools that contain "GROSS HACK"s. Improve `-v 1` debug messages for `bin/gen-authors.sh` to give some level of progress instead of a long pause. Improve `-v 3` as well. While the `bin/jval-wrapper.sh` tool is slower, it is also more accurate in that various non-canonical JSON layouts will not confuse the tool. Apologies for the slowdown. Once the `jval(1)` tool is ready, it should be faster than the `JSONPath.sh` tool that `bin/jval-wrapper.sh` uses now. Added `-Q` to `bin/jval-wrapper.sh` tool to perform a quick exit if `authors.html` is newer than all `author/author_handle.json` files. Updated the top level `Makefile` by adding `make quick_authors` rule that will invoke `bin/gen-authors.sh -Q`. Also changed `make quick_www` to call `make quick_authors` instead of `make authors`. Changed `bin/gen-authors.sh` VERSION from "1.10.7 2024-08-05" to "1.11 2024-08-13". Make a minor improvement in the usage message for `bin/gen-other-html.sh`. Performed `make www` to test the above under macOS. Performed `make quick_www` to test the above under macOS.
This commit is contained in:
1 parent
21e29c9a68
commit
317a2a0c2c
3 files changed
+70
-110
No files matched your search
@@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/env make
|
#build authors.html if out of date with author JSON files'!/usr/bin/env make
|
||||||
#
|
#
|
||||||
# IOCCC Makefile
|
# IOCCC Makefile
|
||||||
|
|
||||||
@@ -300,9 +300,9 @@ indent.c:
|
|||||||
# Finally: The rules in this section are NOT needed if you
|
# Finally: The rules in this section are NOT needed if you
|
||||||
# simple want to examine, run / test winning IOCCC entries.
|
# simple want to examine, run / test winning IOCCC entries.
|
||||||
|
|
||||||
.PHONY: help genpath genfilelist verify_entry_files gen_authors gen_location gen_years \
|
.PHONY: help genpath genfilelist verify_entry_files gen_authors quick_authors \
|
||||||
find_missing_links test entry_index gen_top_html thanks gen_other_html \
|
gen_location gen_years find_missing_links test entry_index gen_top_html \
|
||||||
quick_other_html quick_entry_index \
|
thanks gen_other_html quick_other_html quick_entry_index \
|
||||||
gen_year_index quick_www www untar_entry_tarball untar_year_tarball \
|
gen_year_index quick_www www untar_entry_tarball untar_year_tarball \
|
||||||
form_entry_tarball form_year_tarball tar gen_status gen_sitemap \
|
form_entry_tarball form_year_tarball tar gen_status gen_sitemap \
|
||||||
sitemap timestamp update csv2entry entry2csv
|
sitemap timestamp update csv2entry entry2csv
|
||||||
@@ -336,6 +336,7 @@ help:
|
|||||||
@echo 'make genfilelist ;: generate YYYY level .filelist'
|
@echo 'make genfilelist ;: generate YYYY level .filelist'
|
||||||
@echo 'make verify_entry_files ;: check to be sure all files in all entries exist'
|
@echo 'make verify_entry_files ;: check to be sure all files in all entries exist'
|
||||||
@echo 'make gen_authors ;: generate the top level authors.html page'
|
@echo 'make gen_authors ;: generate the top level authors.html page'
|
||||||
|
@echo 'make quick_authors ;: build authors.html if out of date with author JSON files'
|
||||||
@echo 'make gen_location ;: generate the top level location.html page'
|
@echo 'make gen_location ;: generate the top level location.html page'
|
||||||
@echo 'make gen_years ;: generate the top level years.html page'
|
@echo 'make gen_years ;: generate the top level years.html page'
|
||||||
@echo 'make entry_index ;: force the build of ALL winner index.html files'
|
@echo 'make entry_index ;: force the build of ALL winner index.html files'
|
||||||
@@ -475,6 +476,13 @@ gen_authors: ${GEN_AUTHORS} authors.html
|
|||||||
${GEN_AUTHORS} -v 1
|
${GEN_AUTHORS} -v 1
|
||||||
@echo '=-=-=-=-= IOCCC complete make $@ =-=-=-=-='
|
@echo '=-=-=-=-= IOCCC complete make $@ =-=-=-=-='
|
||||||
|
|
||||||
|
# build authors.html if it is out of date from any author/author_handle.json file
|
||||||
|
#
|
||||||
|
quick_authors: ${GEN_AUTHORS} authors.html
|
||||||
|
@echo '=-=-=-=-= IOCCC begin make $@ =-=-=-=-='
|
||||||
|
${GEN_AUTHORS} -v 1 -Q
|
||||||
|
@echo '=-=-=-=-= IOCCC complete make $@ =-=-=-=-='
|
||||||
|
|
||||||
# generate the top level location.html page using the
|
# generate the top level location.html page using the
|
||||||
# ${GEN_LOCATION} tool (bin/gen-location.sh).
|
# ${GEN_LOCATION} tool (bin/gen-location.sh).
|
||||||
#
|
#
|
||||||
@@ -668,7 +676,7 @@ quick_www:
|
|||||||
@echo '=-=-=-=-= IOCCC complete make genpath =-=-=-=-='
|
@echo '=-=-=-=-= IOCCC complete make genpath =-=-=-=-='
|
||||||
${MAKE} genfilelist
|
${MAKE} genfilelist
|
||||||
${MAKE} verify_entry_files
|
${MAKE} verify_entry_files
|
||||||
${MAKE} gen_authors
|
${MAKE} quick_authors
|
||||||
${MAKE} gen_location
|
${MAKE} gen_location
|
||||||
${MAKE} gen_years
|
${MAKE} gen_years
|
||||||
${MAKE} gen_year_index
|
${MAKE} gen_year_index
|
||||||
|
|||||||
+52
-101
@@ -85,7 +85,7 @@ shopt -s globstar # enable ** to match all files and zero or more directories an
|
|||||||
|
|
||||||
# set variables referenced in the usage message
|
# set variables referenced in the usage message
|
||||||
#
|
#
|
||||||
export VERSION="1.10.7 2024-08-05"
|
export VERSION="1.11 2024-08-13"
|
||||||
NAME=$(basename "$0")
|
NAME=$(basename "$0")
|
||||||
export NAME
|
export NAME
|
||||||
export V_FLAG=0
|
export V_FLAG=0
|
||||||
@@ -112,6 +112,7 @@ export SITE_URL="https://ioccc-src.github.io/temp-test-ioccc"
|
|||||||
#
|
#
|
||||||
export NOOP=
|
export NOOP=
|
||||||
export DO_NOT_PROCESS=
|
export DO_NOT_PROCESS=
|
||||||
|
export QUICK_MODE=
|
||||||
export EXIT_CODE="0"
|
export EXIT_CODE="0"
|
||||||
|
|
||||||
# Letter "is for" text
|
# Letter "is for" text
|
||||||
@@ -153,7 +154,7 @@ declare -ag TOOL_OPTION
|
|||||||
# usage
|
# usage
|
||||||
#
|
#
|
||||||
export USAGE="usage: $0 [-h] [-v level] [-V] [-d topdir] [-D docroot/] [-n] [-N]
|
export USAGE="usage: $0 [-h] [-v level] [-V] [-d topdir] [-D docroot/] [-n] [-N]
|
||||||
[-t tagline] [-T md2html.sh] [-p tool]
|
[-t tagline] [-T md2html.sh] [-p tool] [-Q]
|
||||||
|
|
||||||
-h print help message and exit
|
-h print help message and exit
|
||||||
-v level set verbosity level (def level: 0)
|
-v level set verbosity level (def level: 0)
|
||||||
@@ -176,6 +177,8 @@ export USAGE="usage: $0 [-h] [-v level] [-V] [-d topdir] [-D docroot/] [-n] [-N]
|
|||||||
-p tool run 'pandoc wrapper tool' (not pandoc path) during HTML phase number 21 (def: use $PANDOC_WRAPPER)
|
-p tool run 'pandoc wrapper tool' (not pandoc path) during HTML phase number 21 (def: use $PANDOC_WRAPPER)
|
||||||
NOTE: The '-p tool' is passed as leading options on tool command lines.
|
NOTE: The '-p tool' is passed as leading options on tool command lines.
|
||||||
|
|
||||||
|
-Q quick mode, do not run $MD2HTML_SH unless markdown is out of date (def: do)
|
||||||
|
|
||||||
-w site_url Base URL of the website (def: $SITE_URL)
|
-w site_url Base URL of the website (def: $SITE_URL)
|
||||||
NOTE: The '-w site_url' is passed as leading options on tool command lines.
|
NOTE: The '-w site_url' is passed as leading options on tool command lines.
|
||||||
|
|
||||||
@@ -201,12 +204,6 @@ $NAME version: $VERSION"
|
|||||||
#
|
#
|
||||||
# Write the entry ids from an author/author_handle.json file to standard output (stdout)
|
# Write the entry ids from an author/author_handle.json file to standard output (stdout)
|
||||||
#
|
#
|
||||||
# XXX - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - XXX
|
|
||||||
# XXX - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - XXX
|
|
||||||
# XXX - until we have the jnamval command, we must FAKE PARSE the author/author_handle.json file - XXX
|
|
||||||
# XXX - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - XXX
|
|
||||||
# XXX - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - XXX
|
|
||||||
#
|
|
||||||
# usage:
|
# usage:
|
||||||
# output_entry_ids author/author_handle.json
|
# output_entry_ids author/author_handle.json
|
||||||
#
|
#
|
||||||
@@ -241,7 +238,7 @@ function output_entry_ids
|
|||||||
|
|
||||||
# extract entry ids from the author/author_handle.json file
|
# extract entry ids from the author/author_handle.json file
|
||||||
#
|
#
|
||||||
grep -F entry_id "$AUTHOR_HANDLE_JSON_PATH" | awk 'NF == 5 { print $4; }' | tr -d '"'
|
"$JVAL_WRAPPER" -w -b "$AUTHOR_HANDLE_JSON_PATH" '$..entry_id'
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -249,12 +246,6 @@ function output_entry_ids
|
|||||||
#
|
#
|
||||||
# Write the author handles from an author/author_handle.json file to standard output (stdout)
|
# Write the author handles from an author/author_handle.json file to standard output (stdout)
|
||||||
#
|
#
|
||||||
# XXX - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - XXX
|
|
||||||
# XXX - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - XXX
|
|
||||||
# XXX - until we have the jnamval command, we must FAKE PARSE the author/author_handle.json file - XXX
|
|
||||||
# XXX - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - XXX
|
|
||||||
# XXX - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - XXX
|
|
||||||
#
|
|
||||||
# usage:
|
# usage:
|
||||||
# output_author_handle author/author_handle.json
|
# output_author_handle author/author_handle.json
|
||||||
#
|
#
|
||||||
@@ -288,7 +279,7 @@ function output_author_handle
|
|||||||
|
|
||||||
# extract entry ids from the author/author_handle.json file
|
# extract entry ids from the author/author_handle.json file
|
||||||
#
|
#
|
||||||
grep -F author_handle "$AUTHOR_HANDLE_JSON_PATH" | sed -e 's/.*"author_handle" : "//' -e 's/",.*//'
|
"$JVAL_WRAPPER" -w -b "$AUTHOR_HANDLE_JSON_PATH" '$..author_handle'
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -296,12 +287,6 @@ function output_author_handle
|
|||||||
#
|
#
|
||||||
# Write the Full Name from an author/author_handle.json file to standard output (stdout)
|
# Write the Full Name from an author/author_handle.json file to standard output (stdout)
|
||||||
#
|
#
|
||||||
# XXX - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - XXX
|
|
||||||
# XXX - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - XXX
|
|
||||||
# XXX - until we have the jnamval command, we must FAKE PARSE the author/author_handle.json file - XXX
|
|
||||||
# XXX - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - XXX
|
|
||||||
# XXX - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - XXX
|
|
||||||
#
|
|
||||||
# usage:
|
# usage:
|
||||||
# output_full_name author/author_handle.json
|
# output_full_name author/author_handle.json
|
||||||
#
|
#
|
||||||
@@ -335,7 +320,7 @@ function output_full_name
|
|||||||
|
|
||||||
# extract Full Name from the author/author_handle.json file
|
# extract Full Name from the author/author_handle.json file
|
||||||
#
|
#
|
||||||
grep -F full_name "$AUTHOR_HANDLE_JSON_PATH" | sed -e 's/.*"full_name" : "//' -e 's/",.*//'
|
"$JVAL_WRAPPER" -w -b "$AUTHOR_HANDLE_JSON_PATH" '$..full_name'
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -343,12 +328,6 @@ function output_full_name
|
|||||||
#
|
#
|
||||||
# Write the Location Code from an author/author_handle.json file to standard output (stdout)
|
# Write the Location Code from an author/author_handle.json file to standard output (stdout)
|
||||||
#
|
#
|
||||||
# XXX - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - XXX
|
|
||||||
# XXX - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - XXX
|
|
||||||
# XXX - until we have the jnamval command, we must FAKE PARSE the author/author_handle.json file - XXX
|
|
||||||
# XXX - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - XXX
|
|
||||||
# XXX - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - XXX
|
|
||||||
#
|
|
||||||
# usage:
|
# usage:
|
||||||
# output_location_code author/author_handle.json
|
# output_location_code author/author_handle.json
|
||||||
#
|
#
|
||||||
@@ -382,7 +361,7 @@ function output_location_code
|
|||||||
|
|
||||||
# extract Location Code from the author/author_handle.json file
|
# extract Location Code from the author/author_handle.json file
|
||||||
#
|
#
|
||||||
grep -F location_code "$AUTHOR_HANDLE_JSON_PATH" | sed -e 's/.*"location_code" : "*//' -e 's/"*,.*//'
|
"$JVAL_WRAPPER" -w -b "$AUTHOR_HANDLE_JSON_PATH" '$..location_code'
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -390,12 +369,6 @@ function output_location_code
|
|||||||
#
|
#
|
||||||
# Write the award name to standard output (stdout)
|
# Write the award name to standard output (stdout)
|
||||||
#
|
#
|
||||||
# XXX - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - XXX
|
|
||||||
# XXX - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - XXX
|
|
||||||
# XXX - until we have the jnamval command, we must FAKE PARSE the .entry.json file - XXX
|
|
||||||
# XXX - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - XXX
|
|
||||||
# XXX - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - XXX
|
|
||||||
#
|
|
||||||
# usage:
|
# usage:
|
||||||
# output_award YYYY/dir/.entry.json
|
# output_award YYYY/dir/.entry.json
|
||||||
#
|
#
|
||||||
@@ -406,7 +379,6 @@ function output_location_code
|
|||||||
function output_award
|
function output_award
|
||||||
{
|
{
|
||||||
local ENTRY_JSON_PATH; # the .entry.json path
|
local ENTRY_JSON_PATH; # the .entry.json path
|
||||||
local AWARD_STRING; # winning entry award string
|
|
||||||
|
|
||||||
# parse args
|
# parse args
|
||||||
#
|
#
|
||||||
@@ -430,12 +402,7 @@ function output_award
|
|||||||
|
|
||||||
# obtain the award string
|
# obtain the award string
|
||||||
#
|
#
|
||||||
AWARD_STRING=$(grep -F '"award" : "' "$ENTRY_JSON_PATH" | sed -e 's/^.*"award" : "//' -e 's/",//')
|
"$JVAL_WRAPPER" -w -b "$ENTRY_JSON_PATH" '$..award'
|
||||||
if [[ -z $AWARD_STRING ]]; then
|
|
||||||
echo "$0: ERROR: in output_award: no award found in .entry.json file: $ENTRY_JSON_PATH" 1>&2
|
|
||||||
return 5
|
|
||||||
fi
|
|
||||||
echo "$AWARD_STRING"
|
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -445,12 +412,6 @@ function output_award
|
|||||||
#
|
#
|
||||||
# NOTE: If the url for the author is null, nothing is written to standard output.
|
# NOTE: If the url for the author is null, nothing is written to standard output.
|
||||||
#
|
#
|
||||||
# XXX - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - XXX
|
|
||||||
# XXX - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - XXX
|
|
||||||
# XXX - until we have the jnamval command, we must FAKE PARSE the author/author_handle.json file - XXX
|
|
||||||
# XXX - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - XXX
|
|
||||||
# XXX - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - XXX
|
|
||||||
#
|
|
||||||
# usage:
|
# usage:
|
||||||
# output_url author/author_handle.json
|
# output_url author/author_handle.json
|
||||||
#
|
#
|
||||||
@@ -486,7 +447,7 @@ function output_url
|
|||||||
#
|
#
|
||||||
# NOTE: We output nothing if the JSON member value is null.
|
# NOTE: We output nothing if the JSON member value is null.
|
||||||
#
|
#
|
||||||
grep -F '"url"' "$AUTHOR_HANDLE_JSON_PATH" | grep -v -E ':\s*null' | sed -e 's/.*"url" : "//' -e 's/",.*//'
|
"$JVAL_WRAPPER" -w -b "$AUTHOR_HANDLE_JSON_PATH" '$..url' | grep -F -v null
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -496,12 +457,6 @@ function output_url
|
|||||||
#
|
#
|
||||||
# NOTE: If the alternate url for the author is null, nothing is written to standard output.
|
# NOTE: If the alternate url for the author is null, nothing is written to standard output.
|
||||||
#
|
#
|
||||||
# XXX - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - XXX
|
|
||||||
# XXX - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - XXX
|
|
||||||
# XXX - until we have the jnamval command, we must FAKE PARSE the author/author_handle.json file - XXX
|
|
||||||
# XXX - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - XXX
|
|
||||||
# XXX - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - XXX
|
|
||||||
#
|
|
||||||
# usage:
|
# usage:
|
||||||
# output_alt_url author/author_handle.json
|
# output_alt_url author/author_handle.json
|
||||||
#
|
#
|
||||||
@@ -537,7 +492,7 @@ function output_alt_url
|
|||||||
#
|
#
|
||||||
# NOTE: We output nothing if the JSON member value is null.
|
# NOTE: We output nothing if the JSON member value is null.
|
||||||
#
|
#
|
||||||
grep -F '"alt_url"' "$AUTHOR_HANDLE_JSON_PATH" | grep -v -E ':\s*null' | sed -e 's/.*"alt_url" : "//' -e 's/",.*//'
|
"$JVAL_WRAPPER" -w -b "$AUTHOR_HANDLE_JSON_PATH" '$..alt_url' | grep -F -v null
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -547,12 +502,6 @@ function output_alt_url
|
|||||||
#
|
#
|
||||||
# NOTE: If the mastodon handle for the author is null, nothing is written to standard output.
|
# NOTE: If the mastodon handle for the author is null, nothing is written to standard output.
|
||||||
#
|
#
|
||||||
# XXX - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - XXX
|
|
||||||
# XXX - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - XXX
|
|
||||||
# XXX - until we have the jnamval command, we must FAKE PARSE the author/author_handle.json file - XXX
|
|
||||||
# XXX - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - XXX
|
|
||||||
# XXX - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - XXX
|
|
||||||
#
|
|
||||||
# usage:
|
# usage:
|
||||||
# output_mastodon author/author_handle.json
|
# output_mastodon author/author_handle.json
|
||||||
#
|
#
|
||||||
@@ -588,7 +537,7 @@ function output_mastodon
|
|||||||
#
|
#
|
||||||
# NOTE: We output nothing if the JSON member value is null.
|
# NOTE: We output nothing if the JSON member value is null.
|
||||||
#
|
#
|
||||||
grep -F '"mastodon"' "$AUTHOR_HANDLE_JSON_PATH" | grep -v -E ':\s*null' | sed -e 's/.*"mastodon" : "//' -e 's/",.*//'
|
"$JVAL_WRAPPER" -w -b "$AUTHOR_HANDLE_JSON_PATH" '$..mastodon' | grep -F -v null
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -598,12 +547,6 @@ function output_mastodon
|
|||||||
#
|
#
|
||||||
# NOTE: If the mastodon URL for the author is null, nothing is written to standard output.
|
# NOTE: If the mastodon URL for the author is null, nothing is written to standard output.
|
||||||
#
|
#
|
||||||
# XXX - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - XXX
|
|
||||||
# XXX - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - XXX
|
|
||||||
# XXX - until we have the jnamval command, we must FAKE PARSE the author/author_handle.json file - XXX
|
|
||||||
# XXX - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - XXX
|
|
||||||
# XXX - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - XXX
|
|
||||||
#
|
|
||||||
# usage:
|
# usage:
|
||||||
# output_mastodon_url author/author_handle.json
|
# output_mastodon_url author/author_handle.json
|
||||||
#
|
#
|
||||||
@@ -639,7 +582,7 @@ function output_mastodon_url
|
|||||||
#
|
#
|
||||||
# NOTE: We output nothing if the JSON member value is null.
|
# NOTE: We output nothing if the JSON member value is null.
|
||||||
#
|
#
|
||||||
grep -F '"mastodon_url"' "$AUTHOR_HANDLE_JSON_PATH" | grep -v -E ':\s*null' | sed -e 's/.*"mastodon_url" : "//' -e 's/",.*//'
|
"$JVAL_WRAPPER" -w -b "$AUTHOR_HANDLE_JSON_PATH" '$..mastodon_url' | grep -F -v null
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -649,12 +592,6 @@ function output_mastodon_url
|
|||||||
#
|
#
|
||||||
# NOTE: If the GitHub handle for the author is null, nothing is written to standard output.
|
# NOTE: If the GitHub handle for the author is null, nothing is written to standard output.
|
||||||
#
|
#
|
||||||
# XXX - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - XXX
|
|
||||||
# XXX - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - XXX
|
|
||||||
# XXX - until we have the jnamval command, we must FAKE PARSE the author/author_handle.json file - XXX
|
|
||||||
# XXX - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - XXX
|
|
||||||
# XXX - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - XXX
|
|
||||||
#
|
|
||||||
# usage:
|
# usage:
|
||||||
# output_github author/author_handle.json
|
# output_github author/author_handle.json
|
||||||
#
|
#
|
||||||
@@ -690,7 +627,7 @@ function output_github
|
|||||||
#
|
#
|
||||||
# NOTE: We output nothing if the JSON member value is null.
|
# NOTE: We output nothing if the JSON member value is null.
|
||||||
#
|
#
|
||||||
grep -F '"github"' "$AUTHOR_HANDLE_JSON_PATH" | grep -v -E ':\s*null' | sed -e 's/.*"github" : "//' -e 's/",.*//'
|
"$JVAL_WRAPPER" -w -b "$AUTHOR_HANDLE_JSON_PATH" '$..github' | grep -F -v null
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -700,12 +637,6 @@ function output_github
|
|||||||
#
|
#
|
||||||
# NOTE: If the affiliation for the author is null, nothing is written to standard output.
|
# NOTE: If the affiliation for the author is null, nothing is written to standard output.
|
||||||
#
|
#
|
||||||
# XXX - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - XXX
|
|
||||||
# XXX - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - XXX
|
|
||||||
# XXX - until we have the jnamval command, we must FAKE PARSE the author/author_handle.json file - XXX
|
|
||||||
# XXX - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - XXX
|
|
||||||
# XXX - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - XXX
|
|
||||||
#
|
|
||||||
# usage:
|
# usage:
|
||||||
# output_affiliation author/author_handle.json
|
# output_affiliation author/author_handle.json
|
||||||
#
|
#
|
||||||
@@ -741,13 +672,13 @@ function output_affiliation
|
|||||||
#
|
#
|
||||||
# NOTE: We output nothing if the JSON member value is null.
|
# NOTE: We output nothing if the JSON member value is null.
|
||||||
#
|
#
|
||||||
grep -F '"affiliation"' "$AUTHOR_HANDLE_JSON_PATH" | grep -v -E ':\s*null' | sed -e 's/.*"affiliation" : "//' -e 's/",.*//'
|
"$JVAL_WRAPPER" -w -b "$AUTHOR_HANDLE_JSON_PATH" '$..affiliation' | grep -F -v null
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
# parse command line
|
# parse command line
|
||||||
#
|
#
|
||||||
while getopts :hv:Vd:D:nNt:T:p:w: flag; do
|
while getopts :hv:Vd:D:nNt:T:p:Qw: flag; do
|
||||||
case "$flag" in
|
case "$flag" in
|
||||||
h) echo "$USAGE" 1>&2
|
h) echo "$USAGE" 1>&2
|
||||||
exit 2
|
exit 2
|
||||||
@@ -804,6 +735,8 @@ while getopts :hv:Vd:D:nNt:T:p:w: flag; do
|
|||||||
TOOL_OPTION+=("-p")
|
TOOL_OPTION+=("-p")
|
||||||
TOOL_OPTION+=("$PANDOC_WRAPPER")
|
TOOL_OPTION+=("$PANDOC_WRAPPER")
|
||||||
;;
|
;;
|
||||||
|
Q) QUICK_MODE="-Q"
|
||||||
|
;;
|
||||||
w) SITE_URL="$OPTARG"
|
w) SITE_URL="$OPTARG"
|
||||||
TOOL_OPTION+=("-w")
|
TOOL_OPTION+=("-w")
|
||||||
TOOL_OPTION+=("$SITE_URL")
|
TOOL_OPTION+=("$SITE_URL")
|
||||||
@@ -941,6 +874,14 @@ if [[ ! -d $BIN_PATH ]]; then
|
|||||||
fi
|
fi
|
||||||
export BIN_DIR="bin"
|
export BIN_DIR="bin"
|
||||||
|
|
||||||
|
# find the jval-wrapper.sh tool
|
||||||
|
#
|
||||||
|
JVAL_WRAPPER="$BIN_PATH/jval-wrapper.sh"
|
||||||
|
if [[ ! -x $JVAL_WRAPPER ]]; then
|
||||||
|
echo "$0: ERROR: cannot find the bin/jval-wrapper.sh executable" 1>&2
|
||||||
|
exit 5
|
||||||
|
fi
|
||||||
|
|
||||||
# find the location tool
|
# find the location tool
|
||||||
#
|
#
|
||||||
LOCATION_TOOL=$(type -P location)
|
LOCATION_TOOL=$(type -P location)
|
||||||
@@ -980,6 +921,7 @@ if [[ $V_FLAG -ge 3 ]]; then
|
|||||||
echo "$0: debug[3]: NOOP=$NOOP" 1>&2
|
echo "$0: debug[3]: NOOP=$NOOP" 1>&2
|
||||||
echo "$0: debug[3]: DO_NOT_PROCESS=$DO_NOT_PROCESS" 1>&2
|
echo "$0: debug[3]: DO_NOT_PROCESS=$DO_NOT_PROCESS" 1>&2
|
||||||
echo "$0: debug[3]: EXIT_CODE=$EXIT_CODE" 1>&2
|
echo "$0: debug[3]: EXIT_CODE=$EXIT_CODE" 1>&2
|
||||||
|
echo "$0: debug[3]: QUICK_MODE=$QUICK_MODE" 1>&2
|
||||||
for index in "${!IS_FOR[@]}"; do
|
for index in "${!IS_FOR[@]}"; do
|
||||||
echo "$0: debug[3]: IS_FOR[$index]=${IS_FOR[$index]}" 1>&2
|
echo "$0: debug[3]: IS_FOR[$index]=${IS_FOR[$index]}" 1>&2
|
||||||
done
|
done
|
||||||
@@ -992,6 +934,7 @@ if [[ $V_FLAG -ge 3 ]]; then
|
|||||||
echo "$0: debug[3]: AUTHOR_DIR=$AUTHOR_DIR" 1>&2
|
echo "$0: debug[3]: AUTHOR_DIR=$AUTHOR_DIR" 1>&2
|
||||||
echo "$0: debug[3]: BIN_PATH=$BIN_PATH" 1>&2
|
echo "$0: debug[3]: BIN_PATH=$BIN_PATH" 1>&2
|
||||||
echo "$0: debug[3]: BIN_DIR=$BIN_DIR" 1>&2
|
echo "$0: debug[3]: BIN_DIR=$BIN_DIR" 1>&2
|
||||||
|
echo "$0: debug[3]: JVAL_WRAPPER=$JVAL_WRAPPER" 1>&2
|
||||||
echo "$0: debug[3]: LOCATION_TOOL=$LOCATION_TOOL" 1>&2
|
echo "$0: debug[3]: LOCATION_TOOL=$LOCATION_TOOL" 1>&2
|
||||||
echo "$0: debug[3]: AUTHORS_HTML=$AUTHORS_HTML" 1>&2
|
echo "$0: debug[3]: AUTHORS_HTML=$AUTHORS_HTML" 1>&2
|
||||||
fi
|
fi
|
||||||
@@ -1005,6 +948,17 @@ if [[ -n $DO_NOT_PROCESS ]]; then
|
|||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# case: -Q
|
||||||
|
#
|
||||||
|
# Do nothing if authors.html is newer than all author/author_handle.json files.
|
||||||
|
#
|
||||||
|
if [[ -n $QUICK_MODE ]]; then
|
||||||
|
NEWER=$(find "$AUTHOR_DIR" -mindepth 1 -maxdepth 1 -type f -name '*.json' -newer "$AUTHORS_HTML" 2>/dev/null)
|
||||||
|
if [[ -z $NEWER ]]; then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
# create a temporary entry markdown file
|
# create a temporary entry markdown file
|
||||||
#
|
#
|
||||||
export TMP_AUTHORS_MD=".tmp.$NAME.AUTHORS_MD.$$.tmp"
|
export TMP_AUTHORS_MD=".tmp.$NAME.AUTHORS_MD.$$.tmp"
|
||||||
@@ -1055,18 +1009,13 @@ for letter in "${!IS_FOR[@]}"; do
|
|||||||
echo "$letter ."
|
echo "$letter ."
|
||||||
done > "$TMP_SORT_WORD"
|
done > "$TMP_SORT_WORD"
|
||||||
|
|
||||||
# XXX - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - XXX
|
|
||||||
# XXX - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - XXX
|
|
||||||
# XXX - until we have the jnamval command, we must FAKE PARSE the author/author_handle.json file - XXX
|
|
||||||
# XXX - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - XXX
|
|
||||||
# XXX - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - XXX
|
|
||||||
|
|
||||||
# add author sort_word filename to the temporary sort word list file
|
# add author sort_word filename to the temporary sort word list file
|
||||||
#
|
#
|
||||||
|
if [[ $V_FLAG -ge 1 ]]; then
|
||||||
|
echo "$0: debug[1]: Forming temporary sort word list file: $TMP_SORT_WORD"
|
||||||
|
fi
|
||||||
find "$AUTHOR_DIR" -mindepth 1 -maxdepth 1 -type f -name '*.json' 2>/dev/null | while read -r json_file; do
|
find "$AUTHOR_DIR" -mindepth 1 -maxdepth 1 -type f -name '*.json' 2>/dev/null | while read -r json_file; do
|
||||||
SORT_WORD=$(grep -F '"sort_word" : "' "$json_file" 2>/dev/null | sed -e 's/",//' -e 's/^.*"//')
|
echo "$(bin/jval-wrapper.sh -w -b "$json_file" '$..sort_word') $json_file"
|
||||||
export SORT_WORD
|
|
||||||
echo "$SORT_WORD $json_file"
|
|
||||||
done >> "$TMP_SORT_WORD"
|
done >> "$TMP_SORT_WORD"
|
||||||
|
|
||||||
# sort the temporary sort word list file
|
# sort the temporary sort word list file
|
||||||
@@ -1080,12 +1029,6 @@ fi
|
|||||||
|
|
||||||
# generate the temporary entry markdown file
|
# generate the temporary entry markdown file
|
||||||
#
|
#
|
||||||
# XXX - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - XXX
|
|
||||||
# XXX - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - XXX
|
|
||||||
# XXX - until we have the jnamval command, we must FAKE PARSE the author/author_handle.json file - XXX
|
|
||||||
# XXX - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - XXX
|
|
||||||
# XXX - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - XXX
|
|
||||||
#
|
|
||||||
{
|
{
|
||||||
# output top of content
|
# output top of content
|
||||||
#
|
#
|
||||||
@@ -1144,6 +1087,11 @@ EOF
|
|||||||
echo "</div>"
|
echo "</div>"
|
||||||
echo '<hr style="width:10%;text-align:left;margin-left:0">'
|
echo '<hr style="width:10%;text-align:left;margin-left:0">'
|
||||||
echo
|
echo
|
||||||
|
if [[ $V_FLAG -ge 1 ]]; then
|
||||||
|
echo 1>&2
|
||||||
|
echo "$0: debug[1]: Processing author_handles that begin with $l for: $AUTHORS_HTML" 1>&2
|
||||||
|
echo 1>&2
|
||||||
|
fi
|
||||||
|
|
||||||
# case: we have a "sort_word file" line
|
# case: we have a "sort_word file" line
|
||||||
#
|
#
|
||||||
@@ -1204,6 +1152,9 @@ EOF
|
|||||||
echo "$0: ERROR: author handle is empty in: $filename" 1>&2
|
echo "$0: ERROR: author handle is empty in: $filename" 1>&2
|
||||||
exit 22
|
exit 22
|
||||||
fi
|
fi
|
||||||
|
if [[ $V_FLAG -ge 1 ]]; then
|
||||||
|
echo "$0: debug[1]: Processing author_handle $AUTHOR_HANDLE for: $AUTHORS_HTML" 1>&2
|
||||||
|
fi
|
||||||
|
|
||||||
# NOTE: AUTHOR_AFFILIATION will be empty if there is no affiliation
|
# NOTE: AUTHOR_AFFILIATION will be empty if there is no affiliation
|
||||||
AUTHOR_AFFILIATION=$(output_affiliation "$filename")
|
AUTHOR_AFFILIATION=$(output_affiliation "$filename")
|
||||||
|
|||||||
@@ -122,7 +122,7 @@ declare -ag TOOL_OPTION
|
|||||||
# usage
|
# usage
|
||||||
#
|
#
|
||||||
export USAGE="usage: $0 [-h] [-v level] [-V] [-d topdir] [-D docroot/] [-n] [-N]
|
export USAGE="usage: $0 [-h] [-v level] [-V] [-d topdir] [-D docroot/] [-n] [-N]
|
||||||
[-t tagline] [-T md2html.sh] [-Q] [-p tool] [-w site_url]
|
[-t tagline] [-T md2html.sh] [-p tool] [-Q] [-w site_url]
|
||||||
|
|
||||||
-h print help message and exit
|
-h print help message and exit
|
||||||
-v level set verbosity level (def level: 0)
|
-v level set verbosity level (def level: 0)
|
||||||
@@ -140,6 +140,7 @@ export USAGE="usage: $0 [-h] [-v level] [-V] [-d topdir] [-D docroot/] [-n] [-N]
|
|||||||
NOTE: The '-t tagline' is passed as leading options on tool command lines.
|
NOTE: The '-t tagline' is passed as leading options on tool command lines.
|
||||||
-T md2html.sh run 'markdown to html tool' to convert markdown into HTML (def: $MD2HTML_SH)
|
-T md2html.sh run 'markdown to html tool' to convert markdown into HTML (def: $MD2HTML_SH)
|
||||||
NOTE: The '-T md2html.sh' is passed as leading options on tool command lines.
|
NOTE: The '-T md2html.sh' is passed as leading options on tool command lines.
|
||||||
|
|
||||||
-Q quick mode, do not run $MD2HTML_SH unless markdown is out of date (def: do)
|
-Q quick mode, do not run $MD2HTML_SH unless markdown is out of date (def: do)
|
||||||
|
|
||||||
-p tool run 'pandoc wrapper tool' (not pandoc path) during HTML phase number 21 (def: use $PANDOC_WRAPPER)
|
-p tool run 'pandoc wrapper tool' (not pandoc path) during HTML phase number 21 (def: use $PANDOC_WRAPPER)
|
||||||
@@ -167,7 +168,7 @@ $NAME version: $VERSION"
|
|||||||
|
|
||||||
# parse command line
|
# parse command line
|
||||||
#
|
#
|
||||||
while getopts :hv:Vd:D:nNt:T:Qp:w: flag; do
|
while getopts :hv:Vd:D:nNt:T:p:Qw: flag; do
|
||||||
case "$flag" in
|
case "$flag" in
|
||||||
h) echo "$USAGE" 1>&2
|
h) echo "$USAGE" 1>&2
|
||||||
exit 2
|
exit 2
|
||||||
@@ -218,12 +219,12 @@ while getopts :hv:Vd:D:nNt:T:Qp:w: flag; do
|
|||||||
TOOL_OPTION+=("-T")
|
TOOL_OPTION+=("-T")
|
||||||
TOOL_OPTION+=("$MD2HTML_SH")
|
TOOL_OPTION+=("$MD2HTML_SH")
|
||||||
;;
|
;;
|
||||||
Q) QUICK_MODE="-Q"
|
|
||||||
;;
|
|
||||||
p) PANDOC_WRAPPER="$OPTARG"
|
p) PANDOC_WRAPPER="$OPTARG"
|
||||||
TOOL_OPTION+=("-p")
|
TOOL_OPTION+=("-p")
|
||||||
TOOL_OPTION+=("$PANDOC_WRAPPER")
|
TOOL_OPTION+=("$PANDOC_WRAPPER")
|
||||||
;;
|
;;
|
||||||
|
Q) QUICK_MODE="-Q"
|
||||||
|
;;
|
||||||
w) SITE_URL="$OPTARG"
|
w) SITE_URL="$OPTARG"
|
||||||
;;
|
;;
|
||||||
\?) echo "$0: ERROR: invalid option: -$OPTARG" 1>&2
|
\?) echo "$0: ERROR: invalid option: -$OPTARG" 1>&2
|
||||||
|
|||||||
Reference in new issue
Block a user