The use of exit codes and exit code ranges has been made more consistent across most bin tools.
543 lines
17 KiB
Bash
Executable File
543 lines
17 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
#
|
|
# quick-readme2index.sh - quickly determine if readme2index.sh needs to be run
|
|
#
|
|
# If YYYY/dir/.entry.json exists and was modified newer than
|
|
# YYYY/dir/index.html or if YYYY/dir/index.html does not exist,
|
|
# then we will form YYYY/dir/index.html using the bin/md2html.sh tool.
|
|
#
|
|
# If YYYY/dir/.entry.json does not exist, then an error will thrown.
|
|
#
|
|
# If YYYY/dir/.entry.json exists and was modified the same or older than
|
|
# YYYY/dir/index.html, then nothing will happen.
|
|
#
|
|
# Copyright (c) 2024 by Landon Curt Noll. All Rights Reserved.
|
|
#
|
|
# Permission to use, copy, modify, and distribute this software and
|
|
# its documentation for any purpose and without fee is hereby granted,
|
|
# provided that the above copyright, this permission notice and text
|
|
# this comment, and the disclaimer below appear in all of the following:
|
|
#
|
|
# supporting documentation
|
|
# source copies
|
|
# source works derived from this source
|
|
# binaries derived from this source or from derived source
|
|
#
|
|
# LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
|
|
# INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
|
|
# EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
|
|
# CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
|
|
# USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
# PERFORMANCE OF THIS SOFTWARE.
|
|
#
|
|
# chongo (Landon Curt Noll, http://www.isthe.com/chongo/index.html) /\oo/\
|
|
#
|
|
# Share and enjoy! :-)
|
|
|
|
# firewall - must be bash with a version 4.2 or later
|
|
#
|
|
# We must declare arrays with -ag or -Ag, and we need loops to "export" modified variables.
|
|
#
|
|
if [[ -z ${BASH_VERSINFO[0]} || ${BASH_VERSINFO[0]} -lt 4 || ${BASH_VERSINFO[0]} -eq 4 && ${BASH_VERSINFO[1]} -lt 2 ]]; then
|
|
echo "$0: ERROR: bash version must be >= 4.2: $BASH_VERSION" 1>&2
|
|
exit 4
|
|
fi
|
|
|
|
# setup bash file matching
|
|
#
|
|
# Requires bash with a version 4.2 or later
|
|
#
|
|
shopt -s nullglob # enable expanded to nothing rather than remaining unexpanded
|
|
shopt -u failglob # disable error message if no matches are found
|
|
shopt -u dotglob # disable matching files starting with .
|
|
shopt -s globskipdots # enable never matching . or ..
|
|
shopt -u nocaseglob # disable strict case matching
|
|
shopt -u extglob # enable extended globbing patterns
|
|
shopt -s globstar # enable ** to match all files and zero or more directories and subdirectories
|
|
|
|
# set variables referenced in the usage message
|
|
#
|
|
export VERSION="1.1.1 2024-02-23"
|
|
NAME=$(basename "$0")
|
|
export NAME
|
|
export V_FLAG=0
|
|
GIT_TOOL=$(type -P git)
|
|
export GIT_TOOL
|
|
if [[ -z "$GIT_TOOL" ]]; then
|
|
echo "$0: FATAL: git tool is not installed or not in \$PATH" 1>&2
|
|
exit 5
|
|
fi
|
|
"$GIT_TOOL" rev-parse --is-inside-work-tree >/dev/null 2>&1
|
|
status="$?"
|
|
if [[ $status -eq 0 ]]; then
|
|
TOPDIR=$("$GIT_TOOL" rev-parse --show-toplevel)
|
|
fi
|
|
export TOPDIR
|
|
export DOCROOT_SLASH="../../"
|
|
# We use the tagline of "bin/readme2index.sh" instead of:
|
|
#
|
|
# export TAGLINE="bin/$NAME"
|
|
#
|
|
# because we do not want the "markdown content was formed by" comment
|
|
# in index.html to change just because we used this "bin/quick-readme2index.sh"
|
|
# instead of the slightly-slower "bin/readme2index.sh" tool.
|
|
#
|
|
export TAGLINE="bin/readme2index.sh"
|
|
export MD2HTML_SH="bin/md2html.sh"
|
|
export PANDOC_WRAPPER="bin/pandoc-wrapper.sh"
|
|
export REPO_URL="https://github.com/ioccc-src/temp-test-ioccc"
|
|
export SITE_URL="https://ioccc-src.github.io/temp-test-ioccc"
|
|
#
|
|
export NOOP=
|
|
export DO_NOT_PROCESS=
|
|
export EXIT_CODE="0"
|
|
|
|
# clear options we will add to tools
|
|
#
|
|
unset TOOL_OPTION
|
|
declare -ag TOOL_OPTION
|
|
|
|
# usage
|
|
#
|
|
export USAGE="usage: $0 [-h] [-v level] [-V] [-d topdir] [-D docroot/] [-n] [-N]
|
|
[-t tagline] [-T md2html.sh] [-p tool] [-u repo_url] [-w site_url]
|
|
tool [more_options]
|
|
|
|
-h print help message and exit
|
|
-v level set verbosity level (def level: 0)
|
|
-V print version string and exit
|
|
|
|
-d topdir set topdir (def: $TOPDIR)
|
|
NOTE: The '-d topdir' is passed as leading options on tool command lines.
|
|
-D docroot/ set the document root path followed by slash (def: $DOCROOT_SLASH)
|
|
NOTE: The '-D docroot/' is passed as leading options on tool command lines.
|
|
NOTE: 'docroot' must end in a slash
|
|
|
|
-n go thru the actions, but do not update any files (def: do the action)
|
|
-N do not process anything, just parse arguments (def: process something)
|
|
|
|
-t tagline string to write about the tool that formed the markdown content (def: $TAGLINE)
|
|
-T md2html.sh run 'markdown to html tool' to convert markdown into HTML (def: $MD2HTML_SH)
|
|
|
|
-p tool run 'pandoc wrapper tool' (not pandoc path) during HTML phase number 21 (def: use $PANDOC_WRAPPER)
|
|
|
|
-u repo_url Base level URL of target git repo (def: $REPO_URL)
|
|
NOTE: The '-u repo_url' is passed as leading options on tool command lines.
|
|
-w site_url Base URL of the web site (def: $SITE_URL)
|
|
NOTE: The '-w site_url' is passed as leading options on tool command lines.
|
|
|
|
tool the tool to run over all entries
|
|
[more_options] additional tool command line options to use before the YYYY/dir argument
|
|
|
|
NOTE: Any '-t tagline', '-T md2html.sh', '-p tool', '-u repo_url', '-w site_url'
|
|
are passed to the 'tool' at the beginning of the command line, and
|
|
before any optional 'more_options' and before the final YYYY/dir argument.
|
|
|
|
Exit codes:
|
|
0 all OK
|
|
1 some internal tool exited non-zero
|
|
2 -h and help string printed or -V and version string printed
|
|
3 command line error
|
|
4 bash version is < 4.2
|
|
5 some internal tool is not found or not an executable file
|
|
6 problems found with or in the topdir or topdir/YYYY directory
|
|
7 problems found with or in the entry topdir/YYYY/dir directory
|
|
>= 10 internal error
|
|
|
|
$NAME version: $VERSION"
|
|
|
|
# parse command line
|
|
#
|
|
while getopts :hv:Vd:D:nNt:T:p:u:w: flag; do
|
|
case "$flag" in
|
|
h) echo "$USAGE" 1>&2
|
|
exit 2
|
|
;;
|
|
v) V_FLAG="$OPTARG"
|
|
;;
|
|
V) echo "$VERSION"
|
|
exit 2
|
|
;;
|
|
d) TOPDIR="$OPTARG"
|
|
;;
|
|
D) # parse -D docroot/
|
|
case "$OPTARG" in
|
|
*/) ;;
|
|
*) echo "$0: ERROR: in -D docroot/, the docroot must end in /" 1>&2
|
|
echo 1>&2
|
|
print_usage 1>&2
|
|
exit 3
|
|
;;
|
|
esac
|
|
DOCROOT_SLASH="$OPTARG"
|
|
TOOL_OPTION+=("-D")
|
|
TOOL_OPTION+=("$DOCROOT_SLASH")
|
|
;;
|
|
n) NOOP="-n"
|
|
;;
|
|
N) DO_NOT_PROCESS="-N"
|
|
;;
|
|
t) # parse -t tagline
|
|
case "$OPTARG" in
|
|
*"'"*)
|
|
echo "$0: ERROR: in -t tagline, the tagline may not contain a single-quote character: $OPTARG" 1>&2
|
|
echo 1>&2
|
|
print_usage 1>&2
|
|
exit 3
|
|
;;
|
|
*'"'*)
|
|
echo "$0: ERROR: in -t tagline, the tagline may not contain a double-quote character: $OPTARG" 1>&2
|
|
echo 1>&2
|
|
print_usage 1>&2
|
|
exit 3
|
|
;;
|
|
*) ;;
|
|
esac
|
|
TAGLINE="$OPTARG"
|
|
TOOL_OPTION+=("-t")
|
|
TOOL_OPTION+=("$TAGLINE")
|
|
;;
|
|
T) MD2HTML_SH="$OPTARG"
|
|
TOOL_OPTION+=("-T")
|
|
TOOL_OPTION+=("$MD2HTML_SH")
|
|
;;
|
|
p) PANDOC_WRAPPER="$OPTARG"
|
|
TOOL_OPTION+=("-p")
|
|
TOOL_OPTION+=("$PANDOC_WRAPPER")
|
|
;;
|
|
u) REPO_URL="$OPTARG"
|
|
TOOL_OPTION+=("-u")
|
|
TOOL_OPTION+=("$REPO_URL")
|
|
;;
|
|
w) SITE_URL="$OPTARG"
|
|
TOOL_OPTION+=("-w")
|
|
TOOL_OPTION+=("$SITE_URL")
|
|
;;
|
|
\?) echo "$0: ERROR: invalid option: -$OPTARG" 1>&2
|
|
echo 1>&2
|
|
print_usage 1>&2
|
|
exit 3
|
|
;;
|
|
:) echo "$0: ERROR: option -$OPTARG requires an argument" 1>&2
|
|
echo 1>&2
|
|
echo "$USAGE" 1>&2
|
|
exit 3
|
|
;;
|
|
*) echo "$0: ERROR: unexpected value from getopts: $flag" 1>&2
|
|
echo 1>&2
|
|
echo "$USAGE" 1>&2
|
|
exit 3
|
|
;;
|
|
esac
|
|
done
|
|
|
|
# remove the options
|
|
#
|
|
shift $(( OPTIND - 1 ));
|
|
#
|
|
# verify arg count and parse args
|
|
#
|
|
if [[ $V_FLAG -ge 5 ]]; then
|
|
echo "$0: debug[5]: file argument count: $#" 1>&2
|
|
fi
|
|
#
|
|
if [[ $# -ne 1 ]]; then
|
|
echo "$0: ERROR: expected 1 arg, found: $#" 1>&2
|
|
exit 3
|
|
fi
|
|
#
|
|
export ENTRY_PATH="$1"
|
|
if [[ $V_FLAG -ge 3 ]]; then
|
|
echo "$0: debug[3]: ENTRY_PATH=$ENTRY_PATH" 1>&2
|
|
fi
|
|
|
|
# always add the '-v level' option, unless level is empty, to the set of options passed to the md2html.sh tool
|
|
#
|
|
if [[ -n $V_FLAG ]]; then
|
|
TOOL_OPTION+=("-v")
|
|
TOOL_OPTION+=("$V_FLAG")
|
|
fi
|
|
|
|
# always add the '-t tagline' option, unless tagline is empty, to the set of options passed to the md2html.sh tool
|
|
#
|
|
if [[ -n $TAGLINE ]]; then
|
|
TOOL_OPTION+=("-t")
|
|
TOOL_OPTION+=("$TAGLINE")
|
|
fi
|
|
|
|
# verify that we have a topdir directory
|
|
#
|
|
REPO_NAME=$(basename "$REPO_URL")
|
|
export REPO_NAME
|
|
if [[ -z $TOPDIR ]]; then
|
|
echo "$0: ERROR: cannot find top of git repo directory" 1>&2
|
|
echo "$0: Notice: if needed: $GIT_TOOL clone $REPO_URL; cd $REPO_NAME" 1>&2
|
|
exit 6
|
|
fi
|
|
if [[ ! -e $TOPDIR ]]; then
|
|
echo "$0: ERROR: TOPDIR does not exist: $TOPDIR" 1>&2
|
|
echo "$0: Notice: if needed: $GIT_TOOL clone $REPO_URL; cd $REPO_NAME" 1>&2
|
|
exit 6
|
|
fi
|
|
if [[ ! -d $TOPDIR ]]; then
|
|
echo "$0: ERROR: TOPDIR is not a directory: $TOPDIR" 1>&2
|
|
echo "$0: Notice: if needed: $GIT_TOOL clone $REPO_URL; cd $REPO_NAME" 1>&2
|
|
exit 6
|
|
fi
|
|
|
|
# cd to topdir
|
|
#
|
|
if [[ ! -e $TOPDIR ]]; then
|
|
echo "$0: ERROR: cannot cd to non-existent path: $TOPDIR" 1>&2
|
|
exit 6
|
|
fi
|
|
if [[ ! -d $TOPDIR ]]; then
|
|
echo "$0: ERROR: cannot cd to a non-directory: $TOPDIR" 1>&2
|
|
exit 6
|
|
fi
|
|
export CD_FAILED
|
|
if [[ $V_FLAG -ge 5 ]]; then
|
|
echo "$0: debug[5]: about to: cd $TOPDIR" 1>&2
|
|
fi
|
|
cd "$TOPDIR" || CD_FAILED="true"
|
|
if [[ -n $CD_FAILED ]]; then
|
|
echo "$0: ERROR: cd $TOPDIR failed" 1>&2
|
|
exit 6
|
|
fi
|
|
if [[ $V_FLAG -ge 3 ]]; then
|
|
echo "$0: debug[3]: now in directory: $(/bin/pwd)" 1>&2
|
|
fi
|
|
|
|
# verify that ENTRY_PATH is a entry directory
|
|
#
|
|
if [[ ! -d $ENTRY_PATH ]]; then
|
|
echo "$0: ERROR: arg is not a directory: $ENTRY_PATH" 1>&2
|
|
exit 3
|
|
fi
|
|
if [[ ! -w $ENTRY_PATH ]]; then
|
|
echo "$0: ERROR: arg is not a writable directory: $ENTRY_PATH" 1>&2
|
|
exit 3
|
|
fi
|
|
export YEAR_DIR=${ENTRY_PATH%%/*}
|
|
if [[ -z $YEAR_DIR ]]; then
|
|
echo "$0: ERROR: arg not in YYYY/dir form: $ENTRY_PATH" 1>&2
|
|
exit 3
|
|
fi
|
|
export ENTRY_DIR=${ENTRY_PATH#*/}
|
|
if [[ -z $ENTRY_DIR ]]; then
|
|
echo "$0: ERROR: arg: $ENTRY_PATH not in $YEAR_DIR/dir form: $ENTRY_PATH" 1>&2
|
|
exit 3
|
|
fi
|
|
if [[ $ENTRY_DIR = */* ]]; then
|
|
echo "$0: ERROR: dir from arg: $ENTRY_PATH contains a /: $ENTRY_DIR" 1>&2
|
|
exit 3
|
|
fi
|
|
if [[ ! -d $YEAR_DIR ]]; then
|
|
echo "$0: ERROR: YYYY from arg: $ENTRY_PATH is not a directory: $YEAR_DIR" 1>&2
|
|
exit 3
|
|
fi
|
|
export ENTRY_ID="${YEAR_DIR}_${ENTRY_DIR}"
|
|
export DOT_YEAR="$YEAR_DIR/.year"
|
|
if [[ ! -s $DOT_YEAR ]]; then
|
|
echo "$0: ERROR: not a non-empty file: $DOT_YEAR" 1>&2
|
|
exit 6
|
|
fi
|
|
# Now that we have moved to topdir, form and verify YYYY_DIR is a writable directory
|
|
export YYYY_DIR="$YEAR_DIR/$ENTRY_DIR"
|
|
if [[ ! -e $YYYY_DIR ]]; then
|
|
echo "$0: ERROR: YYYY/dir from arg: $ENTRY_PATH does not exist: $YYYY_DIR" 1>&2
|
|
exit 7
|
|
fi
|
|
if [[ ! -d $YYYY_DIR ]]; then
|
|
echo "$0: ERROR: YYYY/dir from arg: $ENTRY_PATH is not a directory: $YYYY_DIR" 1>&2
|
|
exit 7
|
|
fi
|
|
if [[ ! -w $YYYY_DIR ]]; then
|
|
echo "$0: ERROR: YYYY/dir from arg: $ENTRY_PATH is not a writable directory: $YYYY_DIR" 1>&2
|
|
exit 7
|
|
fi
|
|
export DOT_PATH="$YYYY_DIR/.path"
|
|
if [[ ! -s $DOT_PATH ]]; then
|
|
echo "$0: ERROR: not a non-empty file: $DOT_PATH" 1>&2
|
|
exit 7
|
|
fi
|
|
DOT_PATH_CONTENT=$(< "$DOT_PATH")
|
|
if [[ $ENTRY_PATH != "$DOT_PATH_CONTENT" ]]; then
|
|
echo "$0: ERROR: arg: $ENTRY_PATH does not match $DOT_PATH contents: $DOT_PATH_CONTENT" 1>&2
|
|
exit 7
|
|
fi
|
|
export ENTRY_JSON="$YYYY_DIR/.entry.json"
|
|
if [[ ! -e $ENTRY_JSON ]]; then
|
|
echo "$0: ERROR: .entry.json does not exist: $ENTRY_JSON" 1>&2
|
|
exit 7
|
|
fi
|
|
if [[ ! -f $ENTRY_JSON ]]; then
|
|
echo "$0: ERROR: .entry.json is not a file: $ENTRY_JSON" 1>&2
|
|
exit 7
|
|
fi
|
|
if [[ ! -r $ENTRY_JSON ]]; then
|
|
echo "$0: ERROR: .entry.json is not a readable file: $ENTRY_JSON" 1>&2
|
|
exit 7
|
|
fi
|
|
|
|
# verify that the md2html tool is executable
|
|
#
|
|
if [[ ! -e $MD2HTML_SH ]]; then
|
|
echo "$0: ERROR: md2html.sh does not exist: $MD2HTML_SH" 1>&2
|
|
exit 5
|
|
fi
|
|
if [[ ! -f $MD2HTML_SH ]]; then
|
|
echo "$0: ERROR: md2html.sh is not a regular file: $MD2HTML_SH" 1>&2
|
|
exit 5
|
|
fi
|
|
if [[ ! -x $MD2HTML_SH ]]; then
|
|
echo "$0: ERROR: md2html.sh is not an executable file: $MD2HTML_SH" 1>&2
|
|
exit 5
|
|
fi
|
|
|
|
# setup README_PATH and INDEX_PATH using YYYY_DIR
|
|
#
|
|
export README_PATH="$YYYY_DIR/README.md"
|
|
export INDEX_PATH="$YYYY_DIR/index.html"
|
|
if [[ ! -e $README_PATH ]]; then
|
|
echo "$0: ERROR: in $ENTRY_PATH README.md does not exist: $README_PATH" 1>&2
|
|
exit 7
|
|
fi
|
|
if [[ ! -f $README_PATH ]]; then
|
|
echo "$0: ERROR: in $ENTRY_PATH README.md is not a file: $README_PATH" 1>&2
|
|
exit 7
|
|
fi
|
|
if [[ ! -r $README_PATH ]]; then
|
|
echo "$0: ERROR: in $ENTRY_PATH README.md is not a readable file: $README_PATH" 1>&2
|
|
exit 7
|
|
fi
|
|
if [[ ! -s $README_PATH ]]; then
|
|
echo "$0: ERROR: in $ENTRY_PATH README.md is not a non-empty readable file: $README_PATH" 1>&2
|
|
exit 7
|
|
fi
|
|
|
|
# verify that .entry.json is a non-empty readable file
|
|
#
|
|
export ENTRY_JSON="$YYYY_DIR/.entry.json"
|
|
if [[ ! -e $ENTRY_JSON ]]; then
|
|
echo "$0: ERROR: in $ENTRY_PATH .entry.json does not exist: $ENTRY_JSON" 1>&2
|
|
exit 7
|
|
fi
|
|
if [[ ! -f $ENTRY_JSON ]]; then
|
|
echo "$0: ERROR: in $ENTRY_PATH .entry.json is not a file: $ENTRY_JSON" 1>&2
|
|
exit 7
|
|
fi
|
|
if [[ ! -r $ENTRY_JSON ]]; then
|
|
echo "$0: ERROR: in $ENTRY_PATH .entry.json is not a readable file: $ENTRY_JSON" 1>&2
|
|
exit 7
|
|
fi
|
|
if [[ ! -s $ENTRY_JSON ]]; then
|
|
echo "$0: ERROR: in $ENTRY_PATH .entry.json is not a non-empty readable file: $ENTRY_JSON" 1>&2
|
|
exit 7
|
|
fi
|
|
|
|
# always add the '-U URL' for the entry's index.html file
|
|
#
|
|
TOOL_OPTION+=("-U")
|
|
TOOL_OPTION+=("$SITE_URL/$YYYY_DIR/index.html")
|
|
|
|
# print running info if verbose
|
|
#
|
|
# If -v 3 or higher, print exported variables in order that they were exported.
|
|
#
|
|
if [[ $V_FLAG -ge 3 ]]; then
|
|
echo "$0: debug[3]: VERSION=$VERSION" 1>&2
|
|
echo "$0: debug[3]: NAME=$NAME" 1>&2
|
|
echo "$0: debug[3]: V_FLAG=$V_FLAG" 1>&2
|
|
echo "$0: debug[3]: GIT_TOOL=$GIT_TOOL" 1>&2
|
|
echo "$0: debug[3]: TOPDIR=$TOPDIR" 1>&2
|
|
echo "$0: debug[3]: DOCROOT_SLASH=$DOCROOT_SLASH" 1>&2
|
|
echo "$0: debug[3]: TAGLINE=$TAGLINE" 1>&2
|
|
echo "$0: debug[3]: MD2HTML_SH=$MD2HTML_SH" 1>&2
|
|
echo "$0: debug[3]: PANDOC_WRAPPER=$PANDOC_WRAPPER" 1>&2
|
|
echo "$0: debug[3]: REPO_URL=$REPO_URL" 1>&2
|
|
echo "$0: debug[3]: SITE_URL=$SITE_URL" 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]: EXIT_CODE=$EXIT_CODE" 1>&2
|
|
echo "$0: debug[3]: ENTRY_PATH=$ENTRY_PATH" 1>&2
|
|
echo "$0: debug[3]: YEAR_DIR=$YEAR_DIR" 1>&2
|
|
echo "$0: debug[3]: ENTRY_DIR=$ENTRY_DIR" 1>&2
|
|
for index in "${!TOOL_OPTION[@]}"; do
|
|
echo "$0: debug[3]: TOOL_OPTION[$index]=${TOOL_OPTION[$index]}" 1>&2
|
|
done
|
|
echo "$0: debug[3]: REPO_NAME=$REPO_NAME" 1>&2
|
|
echo "$0: debug[3]: YYYY_DIR=$YYYY_DIR" 1>&2
|
|
echo "$0: debug[3]: DOT_YEAR=$DOT_YEAR" 1>&2
|
|
echo "$0: debug[3]: DOT_PATH=$DOT_PATH" 1>&2
|
|
echo "$0: debug[3]: README_PATH=$README_PATH" 1>&2
|
|
echo "$0: debug[3]: INDEX_PATH=$INDEX_PATH" 1>&2
|
|
echo "$0: debug[3]: ENTRY_JSON=$ENTRY_JSON" 1>&2
|
|
fi
|
|
|
|
# -N stops early before any processing is performed
|
|
#
|
|
if [[ -n $DO_NOT_PROCESS ]]; then
|
|
if [[ $V_FLAG -ge 3 ]]; then
|
|
echo "$0: debug[3]: arguments parsed, -N given, exiting 0" 1>&2
|
|
fi
|
|
exit 0
|
|
fi
|
|
|
|
# determine if we need to run the tool
|
|
#
|
|
# If the non-empty index.html is newer than the .entry.json file,
|
|
#
|
|
if [[ $V_FLAG -ge 5 ]]; then
|
|
echo "$0: debug[5]: listing of important files, if they exist, starts below" 1>&2
|
|
ls -lRt -- "$INDEX_PATH" "$ENTRY_JSON" "$README_PATH" 2>/dev/null
|
|
echo "$0: debug[5]: listing of important files, if they exist, ends above" 1>&2
|
|
fi
|
|
if [[ -s $INDEX_PATH && $INDEX_PATH -nt $ENTRY_JSON && $INDEX_PATH -nt $README_PATH ]]; then
|
|
if [[ $V_FLAG -ge 3 ]]; then
|
|
echo "$0: debug[3]: does not need to be updated: $INDEX_PATH" 1>&2
|
|
fi
|
|
exit 0
|
|
fi
|
|
|
|
# run the md2html.sh tool, unless -n
|
|
#
|
|
if [[ -z $NOOP ]]; then
|
|
if [[ $V_FLAG -ge 3 ]]; then
|
|
echo "$0: debug[3]: about to run: $MD2HTML_SH ${TOOL_OPTION[*]} -- $README_PATH $INDEX_PATH" 1>&2
|
|
fi
|
|
"$MD2HTML_SH" "${TOOL_OPTION[@]}" -- "$README_PATH" "$INDEX_PATH"
|
|
status="$?"
|
|
if [[ $status -ne 0 ]]; then
|
|
echo "$0: Warning: md2html.sh: $MD2HTML_SH ${TOOL_OPTION[*]} -- $README_PATH $INDEX_PATH failed, error: $status" 1>&2
|
|
EXIT_CODE="1" # exit 1
|
|
echo "$0: Warning: EXIT_CODE set to: $EXIT_CODE" 1>&2
|
|
fi
|
|
if [[ $V_FLAG -ge 5 ]]; then
|
|
echo "$0: debug[5]: about to: touch $INDEX_PATH" 1>&2
|
|
fi
|
|
touch "$INDEX_PATH"
|
|
status="$?"
|
|
if [[ $status -ne 0 ]]; then
|
|
echo "$0: Warning: unable to touch $INDEX_PATH, error: $status" 1>&2
|
|
fi
|
|
if [[ $V_FLAG -ge 3 ]]; then
|
|
echo "$0: debug[3]: now up to date: $INDEX_PATH" 1>&2
|
|
fi
|
|
if [[ $V_FLAG -ge 5 ]]; then
|
|
echo "$0: debug[5]: listing of important files starts below" 1>&2
|
|
ls -lRt -- "$INDEX_PATH" "$ENTRY_JSON" "$README_PATH" 2>/dev/null
|
|
echo "$0: debug[5]: listing of important files ends above" 1>&2
|
|
fi
|
|
|
|
# report disabled by -n
|
|
#
|
|
elif [[ $V_FLAG -ge 5 ]]; then
|
|
echo "$0: debug[5]: because of -n, did not run: $MD2HTML_SH ${TOOL_OPTION[*]} -- $README_PATH $INDEX_PATH" 1>&2
|
|
fi
|
|
|
|
# All Done!!! -- Jessica Noll, Age 2
|
|
#
|
|
exit 0
|