forked from HPR/hpr-tools
		
	
		
			
	
	
		
			391 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			391 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
								 | 
							
								#!/bin/bash -
							 | 
						||
| 
								 | 
							
								#===============================================================================
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#         FILE: do_upload
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#        USAGE: ./do_upload <epno> [files...]
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#  DESCRIPTION: Uploads the processed HTML back to the HPR server. Also
							 | 
						||
| 
								 | 
							
								#               capable of uploading supplementary files such as a missed
							 | 
						||
| 
								 | 
							
								#               audio file, pictures, etc.
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#               There are two main types of uploads:
							 | 
						||
| 
								 | 
							
								#               1) Extracted and edited show notes to go back to the server as
							 | 
						||
| 
								 | 
							
								#                  HTML. Possiblly altered 'shotnotes.txt' as a means of
							 | 
						||
| 
								 | 
							
								#                  fixing errors in the title, summary or tags.
							 | 
						||
| 
								 | 
							
								#               2) Assets collected by 'parse_JSON' and possibly changed by
							 | 
						||
| 
								 | 
							
								#                  'do_pictures' if there are pictures provided and referenced
							 | 
						||
| 
								 | 
							
								#                  in the notes. Any archives will have had files extracted so
							 | 
						||
| 
								 | 
							
								#                  that there is much less to do on the server.
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#               Assets are sent to a directory under '~hpr/www/eps/' named
							 | 
						||
| 
								 | 
							
								#               'hprNNNN'. This is created here and files copied with 'rsync'.
							 | 
						||
| 
								 | 
							
								#               There is a local directory in the show directory which is
							 | 
						||
| 
								 | 
							
								#               called 'uploads'. Unless the host has provided archives to be
							 | 
						||
| 
								 | 
							
								#               downloaded with their show we will not send such files to the
							 | 
						||
| 
								 | 
							
								#               server. We ask that such files be enclosed in an archive when
							 | 
						||
| 
								 | 
							
								#               sent - so we never extract the archives we have extracted from
							 | 
						||
| 
								 | 
							
								#               the sent archives!
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#      OPTIONS: ---
							 | 
						||
| 
								 | 
							
								# REQUIREMENTS: ---
							 | 
						||
| 
								 | 
							
								#         BUGS: ---
							 | 
						||
| 
								 | 
							
								#        NOTES: 2021-03-15: Added code to place the "assets" in the final
							 | 
						||
| 
								 | 
							
								#               directory on the server. This will be 'www/eps/hprNNNN/'.
							 | 
						||
| 
								 | 
							
								#       AUTHOR: Dave Morriss (djm), Dave.Morriss@gmail.com
							 | 
						||
| 
								 | 
							
								#      VERSION: 0.1.2
							 | 
						||
| 
								 | 
							
								#      CREATED: 2017-03-06 19:11:51
							 | 
						||
| 
								 | 
							
								#     REVISION: 2023-06-14 23:12:04
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#===============================================================================
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								set -o nounset                              # Treat unset variables as an error
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								SCRIPT=${0##*/}
							 | 
						||
| 
								 | 
							
								# DIR=${0%/*}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								VERSION="0.1.2"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								STDOUT="/dev/fd/2"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Load library functions
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								LIB="$HOME/bin/function_lib.sh"
							 | 
						||
| 
								 | 
							
								[ -e "$LIB" ] || { echo "$SCRIPT: ${red}Unable to source functions${reset}"; exit 1; }
							 | 
						||
| 
								 | 
							
								# shellcheck source=/home/cendjm/bin/function_lib.sh
							 | 
						||
| 
								 | 
							
								source "$LIB"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Colour codes
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								define_colours
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# {{{ --- Functions: usage, dryrun ---
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#===  FUNCTION  ================================================================
							 | 
						||
| 
								 | 
							
								#         NAME: _usage
							 | 
						||
| 
								 | 
							
								#  DESCRIPTION: Report usage
							 | 
						||
| 
								 | 
							
								#   PARAMETERS: None
							 | 
						||
| 
								 | 
							
								#      RETURNS: Nothing
							 | 
						||
| 
								 | 
							
								#===============================================================================
							 | 
						||
| 
								 | 
							
								_usage () {
							 | 
						||
| 
								 | 
							
								    cat >$STDOUT <<-endusage
							 | 
						||
| 
								 | 
							
								Usage: ./${SCRIPT} [-h] [-a] [-d] [-D] shownumber [file1 file2...]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Version: $VERSION
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Uploads the processed HTML back to the HPR server. Also
							 | 
						||
| 
								 | 
							
								capable of uploading supplementary files such as a missed
							 | 
						||
| 
								 | 
							
								audio file.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Options:
							 | 
						||
| 
								 | 
							
								  -h                    Print this help
							 | 
						||
| 
								 | 
							
								  -a                    Send any assets to the show sub-directory on the HPR
							 | 
						||
| 
								 | 
							
								                        server
							 | 
						||
| 
								 | 
							
								  -d                    Select dry run mode
							 | 
						||
| 
								 | 
							
								  -D                    Select debug mode (works the same; more output)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Arguments:
							 | 
						||
| 
								 | 
							
								    shownumber
							 | 
						||
| 
								 | 
							
								    list of files to be uploaded in addition
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Examples
							 | 
						||
| 
								 | 
							
								  ./${SCRIPT} -h
							 | 
						||
| 
								 | 
							
								  ./${SCRIPT} -d 3099
							 | 
						||
| 
								 | 
							
								  ./${SCRIPT} -d 3123 otherfile1.txt otherfile2.dat
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								endusage
							 | 
						||
| 
								 | 
							
								    exit
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#===  FUNCTION  ================================================================
							 | 
						||
| 
								 | 
							
								#         NAME: _dryrun
							 | 
						||
| 
								 | 
							
								#  DESCRIPTION: Output a dry run message
							 | 
						||
| 
								 | 
							
								#   PARAMETERS: List of messages
							 | 
						||
| 
								 | 
							
								#      RETURNS: Nothing
							 | 
						||
| 
								 | 
							
								#===============================================================================
							 | 
						||
| 
								 | 
							
								_dryrun () {
							 | 
						||
| 
								 | 
							
								    for msg in "$@"; do
							 | 
						||
| 
								 | 
							
								        printf 'Dry run: %s\n' "$msg"
							 | 
						||
| 
								 | 
							
								    done
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#===  FUNCTION  ================================================================
							 | 
						||
| 
								 | 
							
								#         NAME: trimpath
							 | 
						||
| 
								 | 
							
								#  DESCRIPTION: Trim a file path to its last few components for display
							 | 
						||
| 
								 | 
							
								#   PARAMETERS: $1 - path to trim
							 | 
						||
| 
								 | 
							
								#               $2 - number of elements to retain
							 | 
						||
| 
								 | 
							
								#      RETURNS: Trimmed path
							 | 
						||
| 
								 | 
							
								#===============================================================================
							 | 
						||
| 
								 | 
							
								# trimpath () {
							 | 
						||
| 
								 | 
							
								#     local path=${1:?Usage: mpath path elements}
							 | 
						||
| 
								 | 
							
								#     local elements=${2:?Usage: mpath path elements}
							 | 
						||
| 
								 | 
							
								#     local -a arr1 arr2
							 | 
						||
| 
								 | 
							
								# 
							 | 
						||
| 
								 | 
							
								#     # Split the path
							 | 
						||
| 
								 | 
							
								# #   IFS='/' arr1=($path)
							 | 
						||
| 
								 | 
							
								#     IFS='/' mapfile -d'/' -t arr1 <<<"$path"
							 | 
						||
| 
								 | 
							
								# 
							 | 
						||
| 
								 | 
							
								#     if [[ ${#arr1[@]} -gt $elements ]]; then
							 | 
						||
| 
								 | 
							
								#         # Put the last elements in another array
							 | 
						||
| 
								 | 
							
								# #       arr2=(${arr1[@]: -$elements})
							 | 
						||
| 
								 | 
							
								#         mapfile -t arr2 < <(printf '%s\n' "${arr1[@]: -$elements}")
							 | 
						||
| 
								 | 
							
								# 
							 | 
						||
| 
								 | 
							
								#         # return the second array interleaved with '/'
							 | 
						||
| 
								 | 
							
								#         echo "${arr2[*]/#/}"
							 | 
						||
| 
								 | 
							
								#     else
							 | 
						||
| 
								 | 
							
								#         echo "$path"
							 | 
						||
| 
								 | 
							
								#     fi
							 | 
						||
| 
								 | 
							
								# }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# }}}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Option defaults
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								ASSETUPLOAD=0
							 | 
						||
| 
								 | 
							
								DEBUG=0
							 | 
						||
| 
								 | 
							
								DRYRUN=0
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Process options
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								while getopts :ahdD opt
							 | 
						||
| 
								 | 
							
								do
							 | 
						||
| 
								 | 
							
								    case "${opt}" in
							 | 
						||
| 
								 | 
							
								        a) ASSETUPLOAD=1;;
							 | 
						||
| 
								 | 
							
								        h) _usage;;
							 | 
						||
| 
								 | 
							
								        d) DRYRUN=1;;
							 | 
						||
| 
								 | 
							
								        D) DEBUG=1;;
							 | 
						||
| 
								 | 
							
								        ?) echo "$SCRIPT: Invalid option; aborting"; exit 1;;
							 | 
						||
| 
								 | 
							
								    esac
							 | 
						||
| 
								 | 
							
								done
							 | 
						||
| 
								 | 
							
								shift $((OPTIND - 1))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Check there's at least one argument after removing any options. Abort if not
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								if [[ $# -eq 0 ]]; then
							 | 
						||
| 
								 | 
							
								    echo "Missing argument(s)"
							 | 
						||
| 
								 | 
							
								    _usage
							 | 
						||
| 
								 | 
							
								fi
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Paths to files
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# 2021-02-12 Not using the .format file any more
							 | 
						||
| 
								 | 
							
								BASEDIR="$HOME/HPR/Show_Submission"
							 | 
						||
| 
								 | 
							
								LOCAL_UPLOAD="$BASEDIR/upload"
							 | 
						||
| 
								 | 
							
								SHOWDIR="$BASEDIR/shownotes/hpr${1}"
							 | 
						||
| 
								 | 
							
								FROM="$SHOWDIR/hpr${1}.html"
							 | 
						||
| 
								 | 
							
								# FORMAT="$SHOWDIR/.format"
							 | 
						||
| 
								 | 
							
								ORIGIN="$SHOWDIR/.origin"
							 | 
						||
| 
								 | 
							
								UPLOADED="$SHOWDIR/.uploaded"
							 | 
						||
| 
								 | 
							
								STATUSFILE="$SHOWDIR/.status"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# If there are HTML errors
							 | 
						||
| 
								 | 
							
								REPORT="$SHOWDIR/errors.txt"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# For differences
							 | 
						||
| 
								 | 
							
								# 2021-02-12 $RE removed since we find differences for all formats
							 | 
						||
| 
								 | 
							
								RAWNOTES="$SHOWDIR/hpr${1}.orig"
							 | 
						||
| 
								 | 
							
								PROCESSED="$SHOWDIR/hpr${1}.out"
							 | 
						||
| 
								 | 
							
								# RE='plain_text|markdown_standard|Markdown_GitHub|Markdown_Pandoc|restructured_text|txt2tags'
							 | 
						||
| 
								 | 
							
								DIFFFILE="$SHOWDIR/hpr${1}.diff"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# PORT=22074
							 | 
						||
| 
								 | 
							
								PORT=22
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Asset locations for upload
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# If there are supplementary files
							 | 
						||
| 
								 | 
							
								# SUPPDIR="$SHOWDIR/hpr${1}"
							 | 
						||
| 
								 | 
							
								TARFILE="$SHOWDIR/hpr${1}.tgz"
							 | 
						||
| 
								 | 
							
								PICLIST="$SHOWDIR/.pictures"
							 | 
						||
| 
								 | 
							
								ASSETLIST="$SHOWDIR/.assets"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Where any "assets" (pictures, scripts, etc) come from and will go on the server
							 | 
						||
| 
								 | 
							
								LOCAL_ASSETDIR="$SHOWDIR/uploads"
							 | 
						||
| 
								 | 
							
								REMOTE_ASSETDIR="www/eps/hpr${1}"
							 | 
						||
| 
								 | 
							
								CMDTPL='ssh hpr@hackerpublicradio.org -p %d %s'
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Use to build the rsync command, assuming the tunnel is open:
							 | 
						||
| 
								 | 
							
								# rsync -a -e 'ssh -p 22' $SHOWDIR/hpr3656/ hpr@hpr:www/eps/hpr3656/
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								RSYNCTPL="rsync -a -e 'ssh -p %d' %s hpr@hpr:www/eps/%s"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Did the following by hand for uploading
							 | 
						||
| 
								 | 
							
								# ssh -p $PORT hpr@hpr 'mkdir ~/www/eps/hpr3685'
							 | 
						||
| 
								 | 
							
								# scp -P $PORT shownotes/hpr3685/Budget_sample_2022-9-9.ods hpr@hpr:www/eps/hpr3685/
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								EXTRA=0
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Is there a marker to indicate the show has already been uploaded? This
							 | 
						||
| 
								 | 
							
								# isn't an error, but a warning is in order.
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								if [[ -e $UPLOADED ]]; then
							 | 
						||
| 
								 | 
							
								    echo "$SCRIPT: ${yellow}Warning - the notes have already been uploaded${reset}"
							 | 
						||
| 
								 | 
							
								fi
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Check we actually have a file to upload
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								if [[ ! -e $FROM ]]; then
							 | 
						||
| 
								 | 
							
								    echo "$SCRIPT: ${red}File not found: ${FROM}${reset}"
							 | 
						||
| 
								 | 
							
								    exit 1
							 | 
						||
| 
								 | 
							
								fi
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# If there's an error report then add it to the list of supplementary files
							 | 
						||
| 
								 | 
							
								# (which may be none)
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								if [[ -e $REPORT ]]; then
							 | 
						||
| 
								 | 
							
								    _DEBUG "Error report being added"
							 | 
						||
| 
								 | 
							
								    set -- "$@" "${REPORT##*/}"
							 | 
						||
| 
								 | 
							
								fi
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Deal with the raw notes extracted by 'parse_shownotes' and saved in
							 | 
						||
| 
								 | 
							
								# hprXXXX.orig and the edited notes in hprXXXX.out
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# 2021-02-12 Now using the same code for all formats
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# if [[ -e $RAWNOTES && -e $PROCESSED ]]; then
							 | 
						||
| 
								 | 
							
								#     FMT="$(cat "$FORMAT")"
							 | 
						||
| 
								 | 
							
								#     if [[ $FMT =~ $RE ]]; then
							 | 
						||
| 
								 | 
							
								#         diff "$RAWNOTES" "$PROCESSED" > "$DIFFFILE"
							 | 
						||
| 
								 | 
							
								#         if [[ -s $DIFFFILE ]]; then
							 | 
						||
| 
								 | 
							
								#             set -- "$@" "${DIFFFILE##*/}"
							 | 
						||
| 
								 | 
							
								#         else
							 | 
						||
| 
								 | 
							
								#             echo "$SCRIPT: ${red}No differences found${reset}"
							 | 
						||
| 
								 | 
							
								#         fi
							 | 
						||
| 
								 | 
							
								#     fi
							 | 
						||
| 
								 | 
							
								# fi
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if [[ -e $RAWNOTES && -e $PROCESSED ]]; then
							 | 
						||
| 
								 | 
							
								    _DEBUG "Differences being determined:" "$RAWNOTES vs $PROCESSED"
							 | 
						||
| 
								 | 
							
								    diff "$RAWNOTES" "$PROCESSED" > "$DIFFFILE"
							 | 
						||
| 
								 | 
							
								    if [[ -s $DIFFFILE ]]; then
							 | 
						||
| 
								 | 
							
								        _DEBUG "Differences found"
							 | 
						||
| 
								 | 
							
								        set -- "$@" "${DIFFFILE##*/}"
							 | 
						||
| 
								 | 
							
								    else
							 | 
						||
| 
								 | 
							
								        _DEBUG "Differences file is empty"
							 | 
						||
| 
								 | 
							
								        echo "$SCRIPT: ${red}No differences found${reset}"
							 | 
						||
| 
								 | 
							
								    fi
							 | 
						||
| 
								 | 
							
								fi
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# If there's a picture list and a tarfile has been made add the latter to the
							 | 
						||
| 
								 | 
							
								# upload list
							 | 
						||
| 
								 | 
							
								# TODO: Not needed in next iteration
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								if [[ -e $PICLIST && -e $TARFILE ]]; then
							 | 
						||
| 
								 | 
							
								    _DEBUG "Tar file being added"
							 | 
						||
| 
								 | 
							
								    set -- "$@" "${TARFILE##*/}"
							 | 
						||
| 
								 | 
							
								fi
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Check any supplementary files in the argument list (added by the user or
							 | 
						||
| 
								 | 
							
								# this script)
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								if [[ $# -gt 1 ]]; then
							 | 
						||
| 
								 | 
							
								    EXTRA=1
							 | 
						||
| 
								 | 
							
								    shift               # Delete argument 1, the show number
							 | 
						||
| 
								 | 
							
								    for arg; do
							 | 
						||
| 
								 | 
							
								        if [[ ! -e "$SHOWDIR/$arg" ]]; then
							 | 
						||
| 
								 | 
							
								            echo "$SCRIPT: ${red}File missing: $SHOWDIR/$arg${reset}"
							 | 
						||
| 
								 | 
							
								            echo "Can't continue"
							 | 
						||
| 
								 | 
							
								            exit 1
							 | 
						||
| 
								 | 
							
								        fi
							 | 
						||
| 
								 | 
							
								    done
							 | 
						||
| 
								 | 
							
								    echo "$SCRIPT: ${blue}Number of supplementary files to upload: $#${reset}"
							 | 
						||
| 
								 | 
							
								fi
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Check we have a record of where the files are to go
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								if [[ ! -e $ORIGIN ]]; then
							 | 
						||
| 
								 | 
							
								    echo "$SCRIPT: ${red}Unable to find the .origin file${reset}"
							 | 
						||
| 
								 | 
							
								    echo "(This holds the directory on the server where the files are to be sent)"
							 | 
						||
| 
								 | 
							
								    exit
							 | 
						||
| 
								 | 
							
								fi
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Check there's a local copy of the upload directory. If not, then the rsync
							 | 
						||
| 
								 | 
							
								# run has deleted it because the directory on the server has been deleted.
							 | 
						||
| 
								 | 
							
								# This implies the show has been processed on the server.
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								upload_dir="$(cat "$ORIGIN")"
							 | 
						||
| 
								 | 
							
								_DEBUG "upload_dir = $upload_dir"
							 | 
						||
| 
								 | 
							
								if [[ ! -e "$LOCAL_UPLOAD/$upload_dir" ]]; then
							 | 
						||
| 
								 | 
							
								    echo "$SCRIPT: ${red}The upload directory seems to have been deleted${reset}"
							 | 
						||
| 
								 | 
							
								    echo "(This happens after the show is processed on the server)"
							 | 
						||
| 
								 | 
							
								    exit
							 | 
						||
| 
								 | 
							
								fi
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Upload the processed show notes
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								if [[ $DRYRUN -eq 0 ]]; then
							 | 
						||
| 
								 | 
							
								    echo "Copying $FROM to upload/$upload_dir/shownotes.html on the HPR server"
							 | 
						||
| 
								 | 
							
								    scp -P $PORT "$FROM" "hpr@hackerpublicradio.org:upload/$upload_dir/shownotes.html"
							 | 
						||
| 
								 | 
							
								    RES=$?
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if [[ $RES -eq 0 ]]; then
							 | 
						||
| 
								 | 
							
								        echo "$SCRIPT: ${green}Uploaded successfully${reset}"
							 | 
						||
| 
								 | 
							
								        touch "$UPLOADED"
							 | 
						||
| 
								 | 
							
								    else
							 | 
						||
| 
								 | 
							
								        echo "$SCRIPT: ${red}Oops! Something went wrong!${reset}"
							 | 
						||
| 
								 | 
							
								        echo "$SCRIPT: Aborting now"
							 | 
						||
| 
								 | 
							
								        exit 1
							 | 
						||
| 
								 | 
							
								    fi
							 | 
						||
| 
								 | 
							
								else
							 | 
						||
| 
								 | 
							
								    _dryrun "would have copied $FROM to the server"
							 | 
						||
| 
								 | 
							
								fi
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Handle supplementary files if there are any. The remaining arguments are
							 | 
						||
| 
								 | 
							
								# these file names without any path information. Variable 'EXTRA' is
							 | 
						||
| 
								 | 
							
								# true/false if there are/are not extra arguments. If there are we have
							 | 
						||
| 
								 | 
							
								# already deleted the first argument and we've checked the existence of the
							 | 
						||
| 
								 | 
							
								# file(s).
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								if [[ $EXTRA -eq 1 ]]; then
							 | 
						||
| 
								 | 
							
								    _DEBUG "Uploading supplementary files"
							 | 
						||
| 
								 | 
							
								    for arg; do
							 | 
						||
| 
								 | 
							
								        FROM="$SHOWDIR/$arg"
							 | 
						||
| 
								 | 
							
								        if [[ $DRYRUN -eq 0 ]]; then
							 | 
						||
| 
								 | 
							
								            echo "Copying $FROM to upload/$upload_dir/$arg on the HPR server"
							 | 
						||
| 
								 | 
							
								            scp -P $PORT "$FROM" "hpr@hackerpublicradio.org:upload/$upload_dir/$arg"
							 | 
						||
| 
								 | 
							
								            RES=$?
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            if [[ $RES -eq 0 ]]; then
							 | 
						||
| 
								 | 
							
								                echo "$SCRIPT: ${green}Uploaded ${arg} successfully${reset}"
							 | 
						||
| 
								 | 
							
								            else
							 | 
						||
| 
								 | 
							
								                echo "$SCRIPT: ${red}Oops! Something went wrong with ${arg}!${reset}"
							 | 
						||
| 
								 | 
							
								                echo "$SCRIPT: Aborting now"
							 | 
						||
| 
								 | 
							
								                exit 1
							 | 
						||
| 
								 | 
							
								            fi
							 | 
						||
| 
								 | 
							
								        else
							 | 
						||
| 
								 | 
							
								            _dryrun "would have copied $FROM to the server"
							 | 
						||
| 
								 | 
							
								        fi
							 | 
						||
| 
								 | 
							
								    done
							 | 
						||
| 
								 | 
							
								fi
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Update the status file
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								if [[ $DRYRUN -eq 0 ]]; then
							 | 
						||
| 
								 | 
							
								    echo "uploaded" >> "$STATUSFILE" || \
							 | 
						||
| 
								 | 
							
								        { echo "Failed to update $STATUSFILE"; exit 1; }
							 | 
						||
| 
								 | 
							
								fi
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								exit
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# vim: syntax=sh:ts=8:sw=4:ai:et:tw=78:fo=tcrqn21:fdm=marker
							 |