-
-
Notifications
You must be signed in to change notification settings - Fork 24
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
In scripts/do_hcfiles.sh, save hcfiles.dribble and hcfiles-fails.txt …
…in loadups/. (#1786) * Add clean-hcfiles.sh; update do_hcfiles.sh to save hcfiles.dribble to loadups and to extract fails to hcfiles-fails.txt in loadups. * Fix clean_hcfiles.sh to handle pdf files that are tracked by git. * Tweak output of clean_hcfiles.sh
- Loading branch information
Showing
2 changed files
with
163 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,143 @@ | ||
#!/bin/sh | ||
# | ||
# clean_hcfiles.sh | ||
# | ||
# Script to clean Medley directory after running do_hcfiles.sh. | ||
# Removes pdf files and index.html files created by do_hcfiles.sh. | ||
# | ||
# Caution: uses git clean - so it will delete any untracked files in | ||
# the Medley directory tree. | ||
# | ||
# FGH 2024-07-15 | ||
# | ||
# Copyright 2024 Interlisp.org | ||
# | ||
|
||
main() { | ||
|
||
MEDLEYDIR=$(cd "${SCRIPTDIR}/.." && pwd) | ||
export MEDLEYDIR | ||
cd "${MEDLEYDIR}" || exit | ||
|
||
shellfile=/tmp/checkgit-$$.sh | ||
|
||
cat >"${shellfile}" <<-'EOF' | ||
#!/bin/sh | ||
git status --porcelain "$1" | grep --quiet --no-messages "??" | ||
if [ $? -eq 0 ] | ||
then | ||
rm -f "$1" | ||
rm -f "$1".~*~ | ||
fi | ||
EOF | ||
|
||
chmod +x "${shellfile}" | ||
|
||
find . -iname index.html -exec "${shellfile}" {} \; | ||
find . -iname \*.pdf -exec "${shellfile}" {} \; | ||
|
||
rm -f "${shellfile}" | ||
|
||
} | ||
|
||
|
||
# shellcheck disable=SC2164,SC2034 | ||
if [ -z "${SCRIPTDIR}" ] | ||
then | ||
# | ||
# | ||
# Some functions to determine what directory this script is being executed from | ||
# | ||
# | ||
get_abs_filename() { | ||
# $1 : relative filename | ||
echo "$(cd "$(dirname "$1")" && pwd)/$(basename "$1")" | ||
} | ||
|
||
# This function taken from | ||
# https://stackoverflow.com/questions/29832037/how-to-get-script-directory-in-posix-sh | ||
rreadlink() ( | ||
|
||
# Execute this function in a *subshell* to localize variables and the effect of `cd`. | ||
|
||
target=$1 | ||
fname= | ||
targetDir= | ||
CDPATH= | ||
|
||
# Try to make the execution environment as predictable as possible: | ||
# All commands below are invoked via `command`, so we must make sure that `command` | ||
# itself is not redefined as an alias or shell function. | ||
# (Note that command is too inconsistent across shells, so we don't use it.) | ||
# `command` is a *builtin* in bash, dash, ksh, zsh, and some platforms do not even have | ||
# an external utility version of it (e.g, Ubuntu). | ||
# `command` bypasses aliases and shell functions and also finds builtins | ||
# in bash, dash, and ksh. In zsh, option POSIX_BUILTINS must be turned on for that | ||
# to happen. | ||
{ \unalias command; \unset -f command; } >/dev/null 2>&1 | ||
[ -n "$ZSH_VERSION" ] && options[POSIX_BUILTINS]=on # make zsh find *builtins* with `command` too. | ||
|
||
while :; do # Resolve potential symlinks until the ultimate target is found. | ||
[ -L "$target" ] || [ -e "$target" ] || { command printf '%s\n' "ERROR: '$target' does not exist." >&2; return 1; } | ||
command cd "$(command dirname -- "$target")" # Change to target dir; necessary for correct resolution of target path. | ||
fname=$(command basename -- "$target") # Extract filename. | ||
[ "$fname" = '/' ] && fname='' # !! curiously, `basename /` returns '/' | ||
if [ -L "$fname" ]; then | ||
# Extract [next] target path, which may be defined | ||
# *relative* to the symlink's own directory. | ||
# Note: We parse `ls -l` output to find the symlink target | ||
# which is the only POSIX-compliant, albeit somewhat fragile, way. | ||
target=$(command ls -l "$fname") | ||
target=${target#* -> } | ||
continue # Resolve [next] symlink target. | ||
fi | ||
break # Ultimate target reached. | ||
done | ||
targetDir=$(command pwd -P) # Get canonical dir. path | ||
# Output the ultimate target's canonical path. | ||
# Note that we manually resolve paths ending in /. and /.. to make sure we have a normalized path. | ||
if [ "$fname" = '.' ]; then | ||
command printf '%s\n' "${targetDir%/}" | ||
elif [ "$fname" = '..' ]; then | ||
# Caveat: something like /var/.. will resolve to /private (assuming /var@ -> /private/var), i.e. the '..' is applied | ||
# AFTER canonicalization. | ||
command printf '%s\n' "$(command dirname -- "${targetDir}")" | ||
else | ||
command printf '%s\n' "${targetDir%/}/$fname" | ||
fi | ||
) | ||
|
||
get_script_dir() { | ||
|
||
# call this with $0 (from main script) as its (only) parameter | ||
# if you need to preserve cwd, run this is a subshell since | ||
# it can change cwd | ||
|
||
# set -x | ||
|
||
local_SCRIPT_PATH="$( get_abs_filename "$1" )"; | ||
|
||
while [ -h "$local_SCRIPT_PATH" ]; | ||
do | ||
cd "$( dirname -- "$local_SCRIPT_PATH"; )"; | ||
local_SCRIPT_PATH="$( rreadlink "$local_SCRIPT_PATH" )"; | ||
done | ||
|
||
cd "$( dirname -- "$local_SCRIPT_PATH"; )" > '/dev/null'; | ||
local_SCRIPT_PATH="$( pwd; )"; | ||
|
||
# set +x | ||
|
||
echo "${local_SCRIPT_PATH}" | ||
} | ||
|
||
# end of script directory functions | ||
############################################################################### | ||
|
||
# figure out the script dir | ||
SCRIPTDIR="$(get_script_dir "$0")" | ||
export SCRIPTDIR | ||
|
||
fi | ||
|
||
main "$@" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters