forked from HPR/hpr-tools
Updates since 2024-06-15
Database/query2tt2: comment and documentation updates; use of Perl's try/catch. InternetArchive/.make_metadata.cfg: added comments for readability InternetArchive/make_metadata: bug fix needed now that all shows on the HPR server have a directory with assets under it. InternetArchive/repair_assets: new Bash script in development. Collects assets from the IA and uploads them to a new directory on the HPR server. Will run 'fix_asset_links' (to repair asset links for their new directories) once it is ready. InternetArchive/repair_item: Bash script which was originally written to run on 'borg' and upload files to a new IA item when the uploads timed out. Now enhanced to upload missing files recovered from the HPR backup disk, such as transcripts.
This commit is contained in:
627
InternetArchive/repair_assets
Executable file
627
InternetArchive/repair_assets
Executable file
@@ -0,0 +1,627 @@
|
||||
#!/bin/bash -
|
||||
#===============================================================================
|
||||
#
|
||||
# FILE: repair_assets
|
||||
#
|
||||
# USAGE: ./repair_assets showid
|
||||
#
|
||||
# DESCRIPTION: Given a show where there was a directory of asset files on the
|
||||
# old HPR server whichj got lost in the migration, rebuild it
|
||||
# and fill it with assets from the IA. Modify the show notes to
|
||||
# point to these recovered assets.
|
||||
#
|
||||
# OPTIONS: ---
|
||||
# REQUIREMENTS: ---
|
||||
# BUGS: ---
|
||||
# NOTES: ---
|
||||
# AUTHOR: Dave Morriss (djm), Dave.Morriss@gmail.com
|
||||
# VERSION: 0.0.6
|
||||
# CREATED: 2024-05-10 21:26:31
|
||||
# REVISION: 2024-07-10 15:12:54
|
||||
#
|
||||
#===============================================================================
|
||||
|
||||
# set -o nounset # Treat unset variables as an error
|
||||
|
||||
VERSION="0.0.6"
|
||||
|
||||
SCRIPT=${0##*/}
|
||||
# DIR=${0%/*}
|
||||
|
||||
STDOUT="/dev/fd/2"
|
||||
|
||||
#
|
||||
# Select the appropriate working directory for the host
|
||||
#
|
||||
case $(hostname) in
|
||||
i7-desktop)
|
||||
BASEDIR="$HOME/HPR/InternetArchive"
|
||||
;;
|
||||
borg)
|
||||
BASEDIR="$HOME/IA"
|
||||
;;
|
||||
*)
|
||||
echo "Wrong host!"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
cd "$BASEDIR" || { echo "Failed to cd to $BASEDIR"; exit 1; }
|
||||
|
||||
#
|
||||
# Load library functions
|
||||
#
|
||||
LIB="$HOME/HPR/function_lib.sh"
|
||||
[ -e "$LIB" ] || { echo "Unable to source functions"; exit; }
|
||||
# shellcheck disable=SC1090
|
||||
source "$LIB"
|
||||
|
||||
#
|
||||
# Enable coloured messages
|
||||
#
|
||||
define_colours
|
||||
|
||||
#
|
||||
# Sanity checks
|
||||
#
|
||||
IA=$(command -v ia)
|
||||
[ -n "$IA" ] || { echo "Program 'ia' was not found"; exit 1; }
|
||||
Q2T=$(command -v query2tt2)
|
||||
[ -n "$Q2T" ] || { echo "Program 'query2tt2' was not found"; exit 1; }
|
||||
FIXAL="$BASEDIR/fix_asset_links"
|
||||
[ -e "$FIXAL" ] || { echo "Program '$FIXAL' was not found"; exit 1; }
|
||||
|
||||
#
|
||||
# Make temporary files and set traps to delete them
|
||||
#
|
||||
TMP1=$(mktemp) || { echo "$SCRIPT: creation of temporary file failed!"; exit 1; }
|
||||
TMP2=$(mktemp) || { echo "$SCRIPT: creation of temporary file failed!"; exit 1; }
|
||||
trap 'cleanup_temp $TMP1 $TMP2' SIGHUP SIGINT SIGPIPE SIGTERM EXIT
|
||||
|
||||
# {{{ -- Functions -- _verbose, _usage, _log, find_missing, make_dir
|
||||
|
||||
#=== FUNCTION ================================================================
|
||||
# NAME: find_missing
|
||||
# DESCRIPTION: Given two arrays containing IA assets and HPR assets,
|
||||
# determine which IA assets are missing from the HPR list.
|
||||
# PARAMETERS: $1 (nameref) IA list
|
||||
# $2 (nameref) HPR list
|
||||
# $3 Name of array to receive list of missing assets
|
||||
# RETURNS: Nothing
|
||||
#===============================================================================
|
||||
find_missing () {
|
||||
local -n IA="${1}"
|
||||
local -n HPR="${2}"
|
||||
local output="${3}"
|
||||
|
||||
local -A hIA hHPR
|
||||
local i key
|
||||
|
||||
#
|
||||
# Make a hash keyed by the IA file base names from an indexed array
|
||||
#
|
||||
for (( i=0; i<${#IA[@]}; i++ )); do
|
||||
hIA+=([${IA[$i]##*/}]=${IA[$i]})
|
||||
done
|
||||
|
||||
#
|
||||
# Make a hash keyed by the HPR file base names from an indexed array
|
||||
#
|
||||
for (( i=0; i<${#HPR[@]}; i++ )); do
|
||||
hHPR+=([${HPR[$i]##*/}]=${HPR[$i]})
|
||||
done
|
||||
|
||||
#
|
||||
# Use the basename keys to check what's missing, but return the full path
|
||||
# names.
|
||||
#
|
||||
for key in "${!hIA[@]}"; do
|
||||
if ! exists_in hHPR "$key"; then
|
||||
eval "$output+=('${hIA[$key]}')"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
#=== FUNCTION ================================================================
|
||||
# NAME: make_dir
|
||||
# DESCRIPTION: Make a directory if it doesn't exist, failing gracefully on
|
||||
# errors.
|
||||
# PARAMETERS: $1 directory path
|
||||
# RETURNS: True if success, otherwise exits the caller script
|
||||
#===============================================================================
|
||||
make_dir () {
|
||||
local dir="${1}"
|
||||
|
||||
if [[ ! -d $dir ]]; then
|
||||
mkdir -p "$dir" || {
|
||||
coloured 'red' "Failed to create $dir"
|
||||
exit 1
|
||||
}
|
||||
fi
|
||||
}
|
||||
|
||||
#=== FUNCTION ================================================================
|
||||
# NAME: _verbose
|
||||
# DESCRIPTION: Writes a message in verbose mode
|
||||
# PARAMETERS: * message strings to write
|
||||
# RETURNS: Nothing
|
||||
#===============================================================================
|
||||
_verbose () {
|
||||
[ "$VERBOSE" -eq 0 ] && return
|
||||
for msg; do
|
||||
printf '%s\n' "$msg"
|
||||
done
|
||||
}
|
||||
|
||||
#=== FUNCTION ================================================================
|
||||
# NAME: _log
|
||||
# DESCRIPTION: Appends a record to the file "$LOGFILE"
|
||||
# PARAMETERS: $1 Message to write
|
||||
# RETURNS: Nothing
|
||||
#===============================================================================
|
||||
_log () {
|
||||
local message="${1}"
|
||||
|
||||
echo "$(date +%F\ %T) $message" >> "$LOGFILE"
|
||||
}
|
||||
|
||||
#=== FUNCTION ================================================================
|
||||
# NAME: _usage
|
||||
# DESCRIPTION: Reports usage; always exits the script after doing so
|
||||
# PARAMETERS: 1 - the integer to pass to the 'exit' command
|
||||
# RETURNS: Nothing
|
||||
#===============================================================================
|
||||
_usage () {
|
||||
local -i result=${1:-0}
|
||||
|
||||
cat >$STDOUT <<-endusage
|
||||
${SCRIPT} - version: ${VERSION}
|
||||
|
||||
Usage: ./${SCRIPT} [-h] [-v] [-d {0|1}] [-D] showid
|
||||
|
||||
Attempts to repair an show where the directory of assets was not transferred
|
||||
from the old HPR server.
|
||||
|
||||
Options:
|
||||
-h Print this help
|
||||
-v Run in verbose mode where more information is
|
||||
reported. Default is off. If -v is repeated it
|
||||
increases the verbosity level (levels 1 and 2 only).
|
||||
-d 0|1 Dry run: -d 1 (the default) runs the script in dry-run
|
||||
mode where nothing is changed but the actions that
|
||||
will be taken are reported; -d 0 turns off dry-run
|
||||
mode and the actions will be carried out.
|
||||
-D Run in debug mode where a lot more information is
|
||||
reported
|
||||
|
||||
Arguments:
|
||||
showid The show id in the form 'hpr1234'
|
||||
|
||||
endusage
|
||||
exit "$result"
|
||||
}
|
||||
|
||||
# }}}
|
||||
|
||||
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# Directories and files
|
||||
#-------------------------------------------------------------------------------
|
||||
LOGS="$BASEDIR/logs"
|
||||
make_dir "${LOGS}"
|
||||
LOGFILE="$LOGS/$SCRIPT.log"
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# Options
|
||||
#-------------------------------------------------------------------------------
|
||||
# Default settings
|
||||
#
|
||||
VERBOSE=0
|
||||
|
||||
#
|
||||
# Process options
|
||||
#
|
||||
while getopts :d:Dhv opt
|
||||
do
|
||||
case "${opt}" in
|
||||
D) DEBUG=1;;
|
||||
d) DRYRUN=$OPTARG;;
|
||||
h) _usage 0;;
|
||||
v) ((VERBOSE++));;
|
||||
*) echo "** Unknown option"
|
||||
_usage 1;;
|
||||
esac
|
||||
done
|
||||
shift $((OPTIND - 1))
|
||||
|
||||
#
|
||||
# Set option defaults and check their values
|
||||
#
|
||||
DRYRUN=${DRYRUN:-1}
|
||||
if [[ $DRYRUN -ne 0 && $DRYRUN -ne 1 ]]; then
|
||||
coloured 'red' "** Use '-d 0' or '-d 1'"
|
||||
_usage 1
|
||||
fi
|
||||
[[ $VERBOSE -gt 0 && $DRYRUN -eq 1 ]] && echo "Dry run mode"
|
||||
|
||||
DEBUG=${DEBUG:-0}
|
||||
[[ $DEBUG -eq 1 ]] && coloured 'yellow' "Debug mode"
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# Argument check
|
||||
#-------------------------------------------------------------------------------
|
||||
# Should have one argument
|
||||
#
|
||||
if [[ $# != 1 ]]; then
|
||||
coloured 'red' "Missing argument"
|
||||
_usage 1
|
||||
fi
|
||||
show="${1,,}"
|
||||
|
||||
#
|
||||
# Ensure show id is correctly formatted. We want it to be 'hpr1234'
|
||||
#
|
||||
if [[ $show =~ (hpr)?([0-9]+) ]]; then
|
||||
printf -v show 'hpr%04d' "${BASH_REMATCH[2]}"
|
||||
else
|
||||
coloured 'red' "Incorrect show specification: $show"
|
||||
coloured 'yellow' "Use 'hpr9999' or '9999' format"
|
||||
exit 1
|
||||
fi
|
||||
_DEBUG "Parsed item: $show"
|
||||
echo "Processing show $show"
|
||||
_log "Processing show $show; dry-run: $([ "$DRYRUN" -eq 1 ] && echo "on" || echo "off")"
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# Declarations and constants
|
||||
#-------------------------------------------------------------------------------
|
||||
declare -a iacache
|
||||
|
||||
#
|
||||
# SHOWURL is where the show will be on the webserver
|
||||
#
|
||||
printf -v SHOWURL 'https://hackerpublicradio.org/eps/%s/index.html' "$show"
|
||||
|
||||
#
|
||||
# CACHEDIR is where we store asset details and files
|
||||
#
|
||||
CACHEDIR="$BASEDIR/assets"
|
||||
[ ! -d "$CACHEDIR" ] && {
|
||||
coloured 'red' "Creating cache directory"
|
||||
make_dir "$CACHEDIR"
|
||||
}
|
||||
|
||||
#
|
||||
# Pointers into the cache:
|
||||
# LOCAL_ASSETDIR - where the cache for this show lives
|
||||
# LOCAL_FILEDIR - where the IA files have been placed
|
||||
# LOCAL_PARENTDIR - the equivalent directory to the top show dir
|
||||
#
|
||||
LOCAL_ASSETDIR="$CACHEDIR/${show}"
|
||||
LOCAL_FILEDIR="$LOCAL_ASSETDIR/files"
|
||||
LOCAL_PARENTDIR="$LOCAL_FILEDIR/${show}"
|
||||
|
||||
#
|
||||
# Pointers to the HPR server directories:
|
||||
# REMOTE_ASSETDIR - where the assets are to go
|
||||
# REMOTE_PARENTDIR - the remote parent directory
|
||||
#
|
||||
REMOTE_ASSETDIR="public_html/eps/${show}/${show}"
|
||||
REMOTE_PARENTDIR="public_html/eps/${show}"
|
||||
|
||||
CMDTPL='ssh hpr@hackerpublicradio.org %s'
|
||||
|
||||
MANIFEST="$CACHEDIR/$show/manifest"
|
||||
DBNOTES="$CACHEDIR/$show/notes.html"
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# Check the show exists in the database (or is visible on the website).
|
||||
#-------------------------------------------------------------------------------
|
||||
_verbose "Checking the show exists on the HPR server"
|
||||
result=$(curl --head --silent --write-out "%{http_code}" --output /dev/null "$SHOWURL")
|
||||
if [[ $result -eq 404 ]]; then
|
||||
coloured 'red' "Could not detect show '$show' on the HPR server"
|
||||
_log "Show '$show' not on the HPR server"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# Check the show exists on the IA
|
||||
#-------------------------------------------------------------------------------
|
||||
_verbose "Checking the show exists on the IA server"
|
||||
if ! ia metadata "$show" --exists > /dev/null 2>&1; then
|
||||
coloured 'red' "Could not detect show '$show' on the IA server"
|
||||
coloured 'yellow' "Check that archive.org is available"
|
||||
coloured 'yellow' "Try https://downfor.io/internet-archive"
|
||||
_log "Show '$show' not on the IA server"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# Check IA, collect contents, classify them
|
||||
#-------------------------------------------------------------------------------
|
||||
# Interrogate the IA for the required item contents. If it returns True we can
|
||||
# collect its contents, otherwise we can't proceed. The file 'TMP1' contains
|
||||
# just a simple list of the files on the IA relating to this item.
|
||||
#
|
||||
_verbose "Collecting filenames from the IA server"
|
||||
if ia list "$show" > "$TMP1"; then
|
||||
while read -r iafile; do
|
||||
iacache+=("$iafile")
|
||||
done < "$TMP1"
|
||||
else
|
||||
coloured 'red' "Item $show can't be found on the IA"
|
||||
coloured 'red' "Can't continue"
|
||||
_log "Files for show '$show' not on the IA server"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
_DEBUG "$(printf '%s\n' "${iacache[@]}")"
|
||||
|
||||
#
|
||||
# Determine which files are assets
|
||||
#
|
||||
_verbose "Categorising files held on the IA"
|
||||
|
||||
declare -a audio ia_transcript ia_asset
|
||||
|
||||
audio_re="^${show}\.(flac|mp3|ogg|opus|spx|wav)\$"
|
||||
# transcript_re="^${show}/${show}/${show}\.(json|srt|tsv|txt|vtt)\$"
|
||||
transcript_re="^${show}/${show}\.(json|srt|tsv|txt|vtt)\$"
|
||||
asset_re="^${show}/(${show}/)?.*\$"
|
||||
metadata_re="^(__ia_thumb.jpg|${show}[^/]+\.(afpk|torrent|gz|xml|sqlite|png))\$"
|
||||
|
||||
for file in "${iacache[@]}"; do
|
||||
if [[ $file =~ $audio_re ]]; then
|
||||
audio+=("$file")
|
||||
elif [[ $file =~ $metadata_re ]]; then
|
||||
_verbose "Skipping $file"
|
||||
continue
|
||||
elif [[ $file =~ $transcript_re ]]; then
|
||||
ia_transcript+=("$file")
|
||||
elif [[ $file =~ $asset_re ]]; then
|
||||
ia_asset+=("$file")
|
||||
fi
|
||||
done
|
||||
|
||||
#
|
||||
# Report what was collected at verbosity level 2
|
||||
#
|
||||
if [[ $VERBOSE -gt 1 ]]; then
|
||||
coloured 'cyan' "** audio (${#audio[@]}):"
|
||||
printf '%s\n' "${audio[@]}"
|
||||
|
||||
coloured 'cyan' "** transcript (${#ia_transcript[@]}):"
|
||||
printf '%s\n' "${ia_transcript[@]}"
|
||||
|
||||
coloured 'cyan' "** asset (${#ia_asset[@]}):"
|
||||
printf '%s\n' "${ia_asset[@]}"
|
||||
|
||||
_log "IA asset count for show '$show' = ${#ia_asset[@]}"
|
||||
fi
|
||||
|
||||
#
|
||||
# No assets, no need to proceed!
|
||||
#
|
||||
if [[ ${#ia_asset[@]} -eq 0 ]]; then
|
||||
coloured 'green' "No IA assets found for show $show; nothing to do"
|
||||
_log "Nothing to do for show $show"
|
||||
exit
|
||||
fi
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# Check what's on the HPR server
|
||||
#-------------------------------------------------------------------------------
|
||||
#
|
||||
# 'rc' is the remote command template
|
||||
#
|
||||
printf -v rc 'find public_html/eps/%s -type f -printf "%s/%%P\\n"' "$show" "$show"
|
||||
|
||||
#
|
||||
# 'command' is the local command we'll run to run a remote command on the HPR
|
||||
# server
|
||||
#
|
||||
# shellcheck disable=SC2059 disable=SC2089
|
||||
printf -v command "$CMDTPL" "'$rc'"
|
||||
|
||||
if [[ $VERBOSE -gt 1 ]]; then
|
||||
echo "Command: $command"
|
||||
fi
|
||||
|
||||
declare -a hpr_asset
|
||||
ignore_re="index.html$"
|
||||
|
||||
#
|
||||
# Run the command and save the output. Save the asset names returned in an
|
||||
# array. TODO: Handle errors from the command
|
||||
#
|
||||
if [[ $DRYRUN -eq 0 ]]; then
|
||||
eval "$command" > "$TMP2"
|
||||
RES=$?
|
||||
if [[ $RES -eq 0 ]]; then
|
||||
_verbose "$(coloured 'green' "Remote command successful")"
|
||||
while read -r hprfile; do
|
||||
if [[ ! $hprfile =~ $ignore_re ]]; then
|
||||
hpr_asset+=("${hprfile}")
|
||||
fi
|
||||
done < "$TMP2"
|
||||
_verbose "$(coloured 'green' "Assets found on HPR server = ${#hpr_asset[@]}")"
|
||||
_verbose "$(printf '%s\n' "${hpr_asset[@]}")"
|
||||
_log "Assets found on HPR server = ${#hpr_asset[@]}"
|
||||
else
|
||||
coloured 'red' "Remote command failed"
|
||||
_log "Failed while searching for HPR assets"
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
coloured 'yellow' "Would have searched for assets on the HPR server"
|
||||
fi
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# Compare the two asset lists and return what's missing on the HPR server
|
||||
#-------------------------------------------------------------------------------
|
||||
declare -a missing
|
||||
find_missing ia_asset hpr_asset missing
|
||||
_verbose "$(coloured 'cyan' "** missing (${#missing[@]}):")"
|
||||
_verbose "$(printf '%s\n' "${missing[@]}")"
|
||||
|
||||
if [[ ${#missing[@]} -eq 0 ]]; then
|
||||
coloured 'green' "No missing assets detected; nothing to do"
|
||||
_log "No missing assets detected; nothing to do"
|
||||
exit
|
||||
else
|
||||
coloured 'yellow' "Found ${#missing[@]} files missing on the HPR server"
|
||||
fi
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# Prepare to copy the missing files
|
||||
#-------------------------------------------------------------------------------
|
||||
make_dir "$LOCAL_FILEDIR"
|
||||
|
||||
declare -a downloads
|
||||
|
||||
#
|
||||
# Check whether files are already downloaded
|
||||
#
|
||||
for file in "${missing[@]}"; do
|
||||
if [[ ! -e "$LOCAL_FILEDIR/$show/$file" ]]; then
|
||||
downloads+=("$file")
|
||||
fi
|
||||
done
|
||||
|
||||
_verbose "$(coloured 'cyan' "** downloads (${#downloads[@]}):")"
|
||||
_verbose "$(printf '%s\n' "${downloads[@]}")"
|
||||
|
||||
#
|
||||
# If we have files to download get them now
|
||||
#
|
||||
if [[ ${#downloads[@]} -gt 0 ]]; then
|
||||
if [[ $DRYRUN -eq 1 ]]; then
|
||||
coloured 'yellow' "Would have downloaded missing files from the IA"
|
||||
else
|
||||
ia download "$show" --destdir="$LOCAL_FILEDIR" "${downloads[@]}"
|
||||
RES=$?
|
||||
if [[ $RES -eq 0 ]]; then
|
||||
coloured 'green' "Downloads complete"
|
||||
_log "Downloaded IA assets for show $show"
|
||||
fi
|
||||
fi
|
||||
else
|
||||
coloured 'yellow' "IA files are already downloaded"
|
||||
fi
|
||||
|
||||
# shellcheck disable=SC2089
|
||||
RSYNCTPL="rsync -a -e 'ssh' %s hpr@hpr:%s"
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# Build the 'ssh' command to make a directory
|
||||
#-------------------------------------------------------------------------------
|
||||
#
|
||||
# Prepare to make the remote directory if necessary.
|
||||
#
|
||||
# - $rc is the remote command we'll run on the server
|
||||
# - $command is the full 'ssh' command including $rc
|
||||
#
|
||||
printf -v rc 'if [ ! -e "%s" ]; then mkdir -p "%s"; fi' \
|
||||
"$REMOTE_ASSETDIR" "$REMOTE_ASSETDIR"
|
||||
|
||||
# shellcheck disable=SC2059 disable=SC2089
|
||||
printf -v command "$CMDTPL" "'$rc'"
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# Run or report the command that would be run
|
||||
#-------------------------------------------------------------------------------
|
||||
if [[ $DRYRUN -eq 0 ]]; then
|
||||
eval "$command"
|
||||
RES=$?
|
||||
if [[ $RES -eq 0 ]]; then
|
||||
coloured 'green' "Remote directory creation successful"
|
||||
else
|
||||
coloured 'red' "Remote directory creation failed"
|
||||
fi
|
||||
else
|
||||
coloured 'yellow' "Would have created the remote directory"
|
||||
echo "$command"
|
||||
fi
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# Synchronise assets to the directory
|
||||
#-------------------------------------------------------------------------------
|
||||
# shellcheck disable=SC2059 disable=SC2089
|
||||
printf -v command "$RSYNCTPL" "$LOCAL_PARENTDIR/" "$REMOTE_PARENTDIR/"
|
||||
|
||||
if [[ $DRYRUN -eq 0 ]]; then
|
||||
eval "$command"
|
||||
RES=$?
|
||||
if [[ $RES -eq 0 ]]; then
|
||||
coloured 'green' "Remote upload successful"
|
||||
_log "Uploaded assets for show $show"
|
||||
else
|
||||
coloured 'red' "Remote upload failed"
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
coloured 'yellow' "Would have synchronised local assets with the remote directory"
|
||||
echo "$command"
|
||||
fi
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# Make a 'manifest' file if necessary
|
||||
#-------------------------------------------------------------------------------
|
||||
if [[ $DRYRUN -eq 0 ]]; then
|
||||
if [[ ! -e $MANIFEST ]]; then
|
||||
find "$LOCAL_PARENTDIR" -type f -printf '%P\n' > "$MANIFEST"
|
||||
_verbose "$(coloured 'green' "Created manifest file")"
|
||||
_log "Created manifest file $MANIFEST"
|
||||
fi
|
||||
fi
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# Save the notes from the database if necessary
|
||||
#-------------------------------------------------------------------------------
|
||||
if [[ $DRYRUN -eq 0 ]]; then
|
||||
if [[ ! -e $DBNOTES ]]; then
|
||||
if ! tunnel_is_open; then
|
||||
open_tunnel
|
||||
fi
|
||||
if query2tt2 -config="$BASEDIR/.hpr_livedb.cfg" \
|
||||
-temp="$BASEDIR/query2tt2_nokey.tpl" \
|
||||
-out="$DBNOTES" \
|
||||
-dbarg="${show:3}" \
|
||||
'select notes from eps where id = ?'
|
||||
then
|
||||
_verbose "$(coloured 'green' "Created notes file")"
|
||||
_log "Created notes file $DBNOTES"
|
||||
else
|
||||
_verbose "$(coloured 'red' "Creation of notes file failed")"
|
||||
_log "Creation of notes file $DBNOTES failed"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# Adjust the notes with 'fix_asset_links'
|
||||
#-------------------------------------------------------------------------------
|
||||
if [[ $DRYRUN -eq 0 ]]; then
|
||||
echo "$FIXAL"
|
||||
# $FIXAL
|
||||
fi
|
||||
|
||||
|
||||
#
|
||||
# All done
|
||||
#
|
||||
if [[ $DRYRUN -eq 0 ]]; then
|
||||
_log "Repaired show $show"
|
||||
fi
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# √ Make a place to hold the files on this machine
|
||||
# √ Download them from the IA
|
||||
# √ Make a directory on the HPR server
|
||||
# √ Copy the assets to the HPR server
|
||||
# Modify the notes to point to the assets on the server
|
||||
#-------------------------------------------------------------------------------
|
||||
|
||||
# vim: syntax=sh:ts=8:sw=4:ai:et:tw=78:fo=tcrqn21:fdm=marker
|
Reference in New Issue
Block a user