forked from HPR/hpr-tools
Moved project directories and files to an empty local repo
This commit is contained in:
222
Show_Submission/move_shownotes
Executable file
222
Show_Submission/move_shownotes
Executable file
@@ -0,0 +1,222 @@
|
||||
#!/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
|
||||
|
Reference in New Issue
Block a user