117 lines
3.0 KiB
Plaintext
117 lines
3.0 KiB
Plaintext
|
#!/usr/bin/env bash
|
||
|
#===============================================================================
|
||
|
#
|
||
|
# FILE: copy_shownotes
|
||
|
#
|
||
|
# USAGE: ./copy_shownotes
|
||
|
#
|
||
|
# DESCRIPTION: Copies the shownotes (and related files) downloaded from the
|
||
|
# HPR server. This happens after 'sync_hpr' has been run to
|
||
|
# collect updates from the ~hpr/upload/ directory on the server
|
||
|
# and store the result in the local upload/ directory.
|
||
|
# 2022-12-17: Converted to shownotes.json.
|
||
|
#
|
||
|
# OPTIONS: ---
|
||
|
# REQUIREMENTS: ---
|
||
|
# BUGS: ---
|
||
|
# NOTES: ---
|
||
|
# AUTHOR: Dave Morriss (djm), Dave.Morriss@gmail.com
|
||
|
# VERSION: 0.0.10
|
||
|
# CREATED: 2015-09-16 21:51:15
|
||
|
# REVISION: 2023-07-01 22:48:53
|
||
|
#
|
||
|
#===============================================================================
|
||
|
|
||
|
set -o nounset # Treat unset variables as an error
|
||
|
|
||
|
SCRIPT=${0##*/}
|
||
|
|
||
|
#
|
||
|
# 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
|
||
|
|
||
|
#
|
||
|
# Directories
|
||
|
#
|
||
|
BASEDIR="$HOME/HPR/Show_Submission"
|
||
|
LOGS="$BASEDIR/logs"
|
||
|
UPLOAD="$BASEDIR/upload"
|
||
|
CACHE="$BASEDIR/shownotes"
|
||
|
|
||
|
#
|
||
|
# Filenames
|
||
|
#
|
||
|
LOGFILE="$LOGS/${SCRIPT}.log"
|
||
|
#SHOWNOTES='shownotes.txt'
|
||
|
SHOWNOTES='shownotes.json'
|
||
|
ORIGIN='.origin'
|
||
|
STATUS='.status'
|
||
|
DUMMY='.dummy'
|
||
|
|
||
|
#
|
||
|
# Loop through everything in the $UPLOAD directory using a regular expression
|
||
|
# to find sub-directories. These look like:
|
||
|
# 1445633350_1906_2015-11-23_f348faf9125c129c1ebe0dd0edd721a0562a9d464bbbf
|
||
|
#
|
||
|
# The regex used in find takes into account that it needs to match the full
|
||
|
# path.
|
||
|
#
|
||
|
count=0
|
||
|
target=".*/[0-9]+_[0-9]{4}_[0-9]{4}-[0-9]{2}-[0-9]{2}_.+$"
|
||
|
while read -r d
|
||
|
do
|
||
|
#
|
||
|
# Parse out the show number
|
||
|
#
|
||
|
show="$(echo "$d" | cut -f2 -d_)"
|
||
|
from="$UPLOAD/$d/"
|
||
|
dir="$CACHE/hpr${show}"
|
||
|
to="$dir/$SHOWNOTES"
|
||
|
origin="$dir/$ORIGIN"
|
||
|
status="$dir/$STATUS"
|
||
|
dummy="$dir/$DUMMY"
|
||
|
|
||
|
#
|
||
|
# Make the receiving directory if it doesn't exist
|
||
|
#
|
||
|
if [[ ! -e $dir ]]; then
|
||
|
mkdir "$dir"
|
||
|
fi
|
||
|
|
||
|
#
|
||
|
# Copy files if there are no shownotes or the file exists and is empty.
|
||
|
#
|
||
|
# 2022-12-17: We're soon not using shownotes.txt any more. The data is in
|
||
|
# shownotes.json instead. Also, dummy shows have a '.dummy' file rather
|
||
|
# than empty notes.
|
||
|
#
|
||
|
# if [[ ! -e $to || ! -s $to ]]; then
|
||
|
if [[ ! -e $to || -e $dummy ]]; then
|
||
|
rsync -vaP "$from" "${dir}/"
|
||
|
echo "$d" > "$origin"
|
||
|
echo "copied" > "$status"
|
||
|
((count++))
|
||
|
printf '%(%F %T)T %s\n' -1 "$dir" >> "$LOGFILE"
|
||
|
echo "${green}Copied notes for show $show${reset}"
|
||
|
fi
|
||
|
done < <(find "$UPLOAD" -maxdepth 1 -regextype posix-egrep -regex "$target" -type d -printf '%f\n')
|
||
|
|
||
|
if [[ $count -eq 0 ]]; then
|
||
|
echo "${yellow}Nothing to do${reset}"
|
||
|
else
|
||
|
echo "${green}Notes copied: $count${reset}"
|
||
|
fi
|
||
|
|
||
|
exit
|
||
|
|
||
|
# vim: syntax=sh:ts=8:sw=4:ai:et:tw=78:fo=tcrqn21
|