Files
ioccc/tmp/gen_path_list.found.sh
T
Cody Boone Ferguson 205fa25ced Change references of many terms to new names
This is a HUGE commit and this task is not done. There are still some
changes that might need to be discussed and since so much is done here I
think it's better to let this go through and then make sure everything
is okay. When the remaining references are discussed they can also be
changed.

I did NOT include changes in the tmp/OLD_manifest directory.

Some of the changes in this commit (it might be exhaustive but it might
not be - not sure):

- In the Makefiles the WINNERS was renamed AUTHORS.
- References to winners.html were changed to authors.html.
- The FAQ named anchor 'fix_a_winner' was renamed 'fix_an_entry'.
- The JSON fields (or whatever they're called) 'winner_id' and
'winner_JSON_format_version' were changed so that 'winner' is 'entry'.
- In scripts for entries 'IOCCC winner' was changed to 'IOCCC entry'.
- 'winners_text' is now 'entries_text'. It might be better to be
'entry_text' as it's per entry but this was not noticed at first. Since
this is easy to fix I am holding off on this for the meantime.
- The script tmp/update-manifest.sh now has the commit log messages
changed to the correct terms as well.

The index.html files were updated as well with any of the above
changes.

There are some references that should NOT be updated. Two examples
caught (and maybe more have slipped through that will have to be changed
back): in 1984/anonymous/README.md the author wrote back to Landon after
being told about the famous tattoo and they used the words:

    .. my entry will be the first IOCCC winner ..

but since this comes from the author it should remain so.

The other one is that winners.html should still refer to winners.html as
it informs people that it's been moved to authors.html (it does redirect
too but even so if it was changed it would defeat the purpose of the
message).

With paths like authors.html I tried to copy paste so that hopefully
there are no typos. It is possible that I did not end up doing this with
all but these can be fixed when discovered.
2024-02-13 07:31:36 -08:00

165 lines
4.1 KiB
Bash
Executable File

#!/usr/bin/env bash
#
# gen_path_list.found.sh - generate tmp/path_list.found.txt for entry
# directories under a year
#
# XXX - This is a temporary utility that will be replaced when
# the .entry.json files are built.
#
# Copyright (c) 2023 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! :-)
# setup
#
export VERSION="1.1 2024-01-14"
NAME=$(basename "$0"); export NAME
TOPDIR=".."
#
export V_FLAG=0
# usage
#
export USAGE="usage: $0 [-h] [-v level] [-V] [-t topdir]
-h print help message and exit
-v level set verbosity level (def level: $V_FLAG)
-V print version string and exit
-t topdir top directory under which year dirs are found (def: ..)
Exit codes:
0 all OK
2 -h and help string printed or -V and version string printed
3 command line error
>= 10 internal error
$NAME version: $VERSION"
# parse command line
#
while getopts :hv:Vt: flag; do
case "$flag" in
h) echo "$USAGE"
exit 2
;;
v) V_FLAG="$OPTARG"
;;
V) echo "$VERSION"
exit 2
;;
t) TOPDIR="$OPTARG"
;;
\?) echo "$0: ERROR: invalid option: -$OPTARG" 1>&2
echo 1>&2
echo "$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
#
if [[ $# -ne 0 ]]; then
echo "$0: ERROR: expected 0 args, found: $#" 1>&2
echo "$USAGE" 1>&2
exit 3
fi
#
# verify TOPDIR
#
if [[ -z $TOPDIR ]]; then
echo "$0: ERROR: TOPDIR is empty" 1>&2
exit 3
fi
if [[ ! -d $TOPDIR ]]; then
echo "$0: ERROR: TOPDIR: $TOPDIR is not directory" 1>&2
exit 3
fi
if [[ ! -d $TOPDIR/1984 ]]; then
echo "$0: ERROR: TOPDIR: $TOPDIR is missing the 1984 sub-directory" 1>&2
exit 3
fi
if [[ ! -d $TOPDIR/tmp ]]; then
echo "$0: ERROR: TOPDIR: $TOPDIR is missing the tmp sub-directory" 1>&2
exit 3
fi
if [[ ! -f $TOPDIR/Makefile ]]; then
echo "$0: ERROR: TOPDIR: $TOPDIR is missing the top level Makefile" 1>&2
exit 3
fi
# move to TOPDIR
#
cd "$TOPDIR" || echo "$0: ERROR: cd $TOPDIR failed" 1>&2 || exit 10
export PATH_LIST="tmp/path_list.found.txt"
# make clobber
#
make clobber >/dev/null 2>&1
status="$?"
if [[ $status -ne 0 ]]; then
echo "$0: ERROR: make clobber failed, error code: $status" 1>&2
exit 11
fi
# find files under 4 character dirs that aren't .DS_Store or *.dSYM with a depth of at least 2
#
TMPFILE="tmp/tmp.path_list.found.txt.$$"
trap 'rm -f $TMPFILE; exit' 0 1 2 3 15
find -- ???? -mindepth 2 ! -name .DS_Store ! -name '.*.swp' -type f -print | sort -t/ > "$TMPFILE"
if [[ ! -s $TMPFILE ]]; then
echo "$0: ERROR: TMPFILE: $TMPFILE is empty" 1>&2
exit 12
fi
if ! cmp -s "$TMPFILE" "$PATH_LIST"; then
# replace the file list
#
echo "$0: updating $PATH_LIST"
mv -f -v "$TMPFILE" "$PATH_LIST"
status="$?"
if [[ $status -ne 0 ]]; then
echo "$0: ERROR: mv -f -v $TMPFILE $PATH_LIST failed, error: $status" 1>&2
exit 13
fi
fi
# All Done!!! -- Jessica Noll, Age 2
#
exit 0