forked from HPR/hpr-tools
		
	
		
			
	
	
		
			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 |