forked from HPR/hpr-tools
		
	
		
			
				
	
	
		
			223 lines
		
	
	
		
			6.4 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			223 lines
		
	
	
		
			6.4 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/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
 | |
| 
 |