223 lines
6.4 KiB
Plaintext
223 lines
6.4 KiB
Plaintext
|
#!/bin/bash -
|
||
|
#===============================================================================
|
||
|
#
|
||
|
# FILE: move_shownotes
|
||
|
#
|
||
|
# USAGE: ./move_shownotes original_show new_show
|
||
|
#
|
||
|
# DESCRIPTION: After a show has been moved from one slot to another on the
|
||
|
# HPR server this script ensures that the local versions of
|
||
|
# processed show notes correspond to the change by moving
|
||
|
# directories around and correcting file names and some
|
||
|
# contents.
|
||
|
#
|
||
|
# ** Under development **
|
||
|
#
|
||
|
# OPTIONS: ---
|
||
|
# REQUIREMENTS: ---
|
||
|
# BUGS: ---
|
||
|
# NOTES: ---
|
||
|
# AUTHOR: Dave Morriss (djm), Dave.Morriss@gmail.com
|
||
|
# VERSION: 0.0.2
|
||
|
# CREATED: 2022-12-02 22:12:20
|
||
|
# REVISION: 2022-12-06 23:03:12
|
||
|
#
|
||
|
#===============================================================================
|
||
|
|
||
|
set -o nounset # Treat unset variables as an error
|
||
|
|
||
|
SCRIPT=${0##*/}
|
||
|
DIR=${0%/*}
|
||
|
|
||
|
VERSION='0.0.2'
|
||
|
|
||
|
STDOUT="/dev/fd/2"
|
||
|
|
||
|
#
|
||
|
# Load library functions
|
||
|
#
|
||
|
LIB="$HOME/bin/function_lib.sh"
|
||
|
[ -e "$LIB" ] || { echo "$SCRIPT: Unable to source functions"; exit 1; }
|
||
|
# shellcheck source=/home/cendjm/bin/function_lib.sh
|
||
|
source "$LIB"
|
||
|
|
||
|
#
|
||
|
# Colour codes
|
||
|
#
|
||
|
define_colours
|
||
|
|
||
|
#=== 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
|
||
|
Usage: ./${SCRIPT} [-h] [-d] [-D] original_show new_show
|
||
|
|
||
|
Version: $VERSION
|
||
|
|
||
|
When a show has been processed and posted on the server, but needs to be moved
|
||
|
to another slot (after getting the host's permission) this script assists with
|
||
|
the processes involved in ensuring the local shownote caches reflect the
|
||
|
server state.
|
||
|
|
||
|
The need to move a show is rare, but often follows when a host has forgotten
|
||
|
the request to spread their shows out by at least two weeks and has sent them
|
||
|
in to clots too close in time to one another.
|
||
|
|
||
|
Options:
|
||
|
-h Print this help
|
||
|
-d Select dry run mode
|
||
|
-D Turn on debug mode with lots of extra output
|
||
|
|
||
|
Arguments:
|
||
|
original_show
|
||
|
new_show
|
||
|
|
||
|
Both arguments can use either an integer number or a format like 'hpr9999'
|
||
|
and also compensate for the use of 'HPR' rather than 'hpr'.
|
||
|
|
||
|
Examples
|
||
|
./${SCRIPT} -h
|
||
|
./${SCRIPT} -d 3742 3756
|
||
|
./${SCRIPT} -D 3738 3746
|
||
|
|
||
|
endusage
|
||
|
exit "$result"
|
||
|
|
||
|
}
|
||
|
|
||
|
#=== FUNCTION ================================================================
|
||
|
# NAME: _DEBUG
|
||
|
# DESCRIPTION: Writes one or more message lines if in DEBUG mode
|
||
|
# PARAMETERS: List of messages
|
||
|
# RETURNS: Nothing
|
||
|
#===============================================================================
|
||
|
_DEBUG () {
|
||
|
[ "$DEBUG" == 0 ] && return
|
||
|
for msg in "$@"; do
|
||
|
printf 'D> %s\n' "$msg"
|
||
|
done
|
||
|
}
|
||
|
|
||
|
#=== FUNCTION ================================================================
|
||
|
# NAME: coloured
|
||
|
# DESCRIPTION: Write a message with colour codes
|
||
|
# PARAMETERS: 1 - colour name
|
||
|
# 2 - message
|
||
|
# RETURNS: Nothing
|
||
|
#===============================================================================
|
||
|
coloured () {
|
||
|
local colour="${1:-green}"
|
||
|
local message="${2:-no message}"
|
||
|
|
||
|
printf '%s%s%s\n' "${!colour}" "$message" "${reset}"
|
||
|
}
|
||
|
|
||
|
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||
|
|
||
|
#
|
||
|
# Directories
|
||
|
#
|
||
|
BASEDIR="$HOME/HPR/Show_Submission"
|
||
|
RES="$BASEDIR/reservations"
|
||
|
SN="$BASEDIR/shownotes"
|
||
|
|
||
|
#
|
||
|
# Check arguments
|
||
|
#
|
||
|
if [[ $# -ne 2 ]]; then
|
||
|
_usage 1
|
||
|
fi
|
||
|
|
||
|
#
|
||
|
# Check the arguments and standardise them
|
||
|
#
|
||
|
declare -a ARGS
|
||
|
re="^(hpr|HPR)?([0-9]{1,4})$"
|
||
|
for arg; do
|
||
|
if [[ $arg =~ $re ]]; then
|
||
|
printf -v n '%04d' "${BASH_REMATCH[2]}"
|
||
|
ARGS+=("hpr$n")
|
||
|
else
|
||
|
coloured 'red' "Invalid show specification: $arg"
|
||
|
fi
|
||
|
done
|
||
|
|
||
|
if [[ ${#ARGS[@]} -ne 2 ]]; then
|
||
|
coloured 'red' "Unable to continue with invalid arguments"
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
#
|
||
|
# Save the parsed show details
|
||
|
#
|
||
|
original_show="${ARGS[0]}"
|
||
|
new_show="${ARGS[1]}"
|
||
|
coloured 'blue' "Moving from $original_show to $new_show"
|
||
|
|
||
|
#-------------------------------------------------------------------------------
|
||
|
# Consistency checks
|
||
|
#-------------------------------------------------------------------------------
|
||
|
#
|
||
|
# We expect the original show to have been moved into the reservations/
|
||
|
# directory
|
||
|
#
|
||
|
if [[ ! -e "$RES/$original_show" ]]; then
|
||
|
coloured 'red' "Did not find the moved original show as $RES/$original_show."
|
||
|
|
||
|
#
|
||
|
# Perhaps the original show hasn't been moved yet, otherwise there's an
|
||
|
# error - the wrong show has been specified.
|
||
|
#
|
||
|
if [[ -e "$SN/$original_show" ]]; then
|
||
|
coloured 'red' "Found the original show as $SN/$original_show."
|
||
|
coloured 'yellow' "Double check that this show has been moved on the HPR server."
|
||
|
coloured 'yellow' "If so, wait for 'scan_HPR' to move it locally."
|
||
|
coloured 'yellow' "If not, the show numbers you used are wrong."
|
||
|
else
|
||
|
coloured 'red' "Did not find the original show as $SN/$original_show."
|
||
|
coloured 'yellow' "It looks as if the show numbers you used are wrong."
|
||
|
fi
|
||
|
|
||
|
coloured 'red' "Unable to continue"
|
||
|
exit
|
||
|
fi
|
||
|
|
||
|
#
|
||
|
# Is the destination free? It may have been filled with a dummy show by
|
||
|
# 'scrape_HPR' or there may have been a mistake in the arguments.
|
||
|
#
|
||
|
if [[ -e "$SN/$new_show" ]]; then
|
||
|
coloured 'yellow' "Found a directory at $SN/$new_show"
|
||
|
|
||
|
#
|
||
|
# A dummy show directory will only contain 'shownotes.txt', 'hpr1234.out'
|
||
|
# and 'hpr1234.html' to keep other scripts happy and a file called .dummy
|
||
|
# to be detected by this script. So look for this signature, and if not
|
||
|
# found halt with an error.
|
||
|
#
|
||
|
if [[ ! -e "$SN/$new_show/.dummy" ]]; then
|
||
|
coloured 'red' "The directory seems to hold a live show!"
|
||
|
coloured 'red' "Cannot continue; please check the situation"
|
||
|
exit
|
||
|
fi
|
||
|
fi
|
||
|
|
||
|
#
|
||
|
# Now we should have found the original show has been placed in the
|
||
|
# reservations/ directory and the new slot should have had a dummy show placed
|
||
|
# in it. We now need to move the reserved show into the destination slot after
|
||
|
# removing the dummy show. Once done we need to rename files and change the
|
||
|
# contents of some files.
|
||
|
#
|
||
|
|
||
|
exit
|
||
|
|
||
|
# vim: syntax=sh:ts=8:sw=4:ai:et:tw=78:fo=tcrqn21
|
||
|
|