134 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			134 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
								 | 
							
								#!/bin/bash -
							 | 
						||
| 
								 | 
							
								#===============================================================================
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#         FILE: do_brave
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#        USAGE: ./do_brave <epno>
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#  DESCRIPTION: Run the Brave browser to view completed notes
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#      OPTIONS: ---
							 | 
						||
| 
								 | 
							
								# REQUIREMENTS: ---
							 | 
						||
| 
								 | 
							
								#         BUGS: 2020-06-01: New version of Brave (now called 'brave-browser')
							 | 
						||
| 
								 | 
							
								#               necessitates changes in how this script was originally
							 | 
						||
| 
								 | 
							
								#               designed. The softlink between hpr????.out and hpr????.html
							 | 
						||
| 
								 | 
							
								#               has been converted to a hard link.
							 | 
						||
| 
								 | 
							
								#        NOTES: We use a link 'do_browser' to point to whichever script runs
							 | 
						||
| 
								 | 
							
								#               the preferred browser. It's been Brave for several years now,
							 | 
						||
| 
								 | 
							
								#               but we haven't changed this!
							 | 
						||
| 
								 | 
							
								#               2022-12-22: We now write state changes to the file .status in
							 | 
						||
| 
								 | 
							
								#               the show directory, so we need to do that here too. Also
							 | 
						||
| 
								 | 
							
								#               changed to using the function library for cleanup_temp.
							 | 
						||
| 
								 | 
							
								#       AUTHOR: Dave Morriss (djm), Dave.Morriss@gmail.com
							 | 
						||
| 
								 | 
							
								#      VERSION: 0.0.5
							 | 
						||
| 
								 | 
							
								#      CREATED: 2016-03-20 15:22:29
							 | 
						||
| 
								 | 
							
								#     REVISION: 2022-12-22 17:28:12
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#===============================================================================
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								set -o nounset                              # Treat unset variables as an error
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								SCRIPT=${0##*/}
							 | 
						||
| 
								 | 
							
								#DIR=${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"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Basic validation
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								if [[ $# -ne 1 ]]; then
							 | 
						||
| 
								 | 
							
								    echo "Usage $SCRIPT shownumber"
							 | 
						||
| 
								 | 
							
								    exit 1
							 | 
						||
| 
								 | 
							
								fi
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Directories and files
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								BASENAME="$HOME/HPR/Show_Submission"
							 | 
						||
| 
								 | 
							
								SHOWDIR="$BASENAME/shownotes/hpr${1}"
							 | 
						||
| 
								 | 
							
								RAWNOTES="$SHOWDIR/hpr${1}.out"
							 | 
						||
| 
								 | 
							
								HTML="$SHOWDIR/hpr${1}.html"
							 | 
						||
| 
								 | 
							
								FULLHTML="$SHOWDIR/hpr${1}_full.html"
							 | 
						||
| 
								 | 
							
								STATUSFILE="$SHOWDIR/.status"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								HTMLFILE="$FULLHTML"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Check we have this browser
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								BRAVE=$(command -v brave-browser)
							 | 
						||
| 
								 | 
							
								[[ -v BRAVE ]] || { echo "Problem finding the Brave browser"; exit 1; }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# We prefer to view the 'full' html which we do by default. If not found
							 | 
						||
| 
								 | 
							
								# (because the host sent in HTML themselves) we look for hpr????.html, which
							 | 
						||
| 
								 | 
							
								# is a link to the notes from the form (hpr????.out), and view that. If the
							 | 
						||
| 
								 | 
							
								# link didn't get created (not sure why) we copy the "raw" notes to
							 | 
						||
| 
								 | 
							
								# a temporary file with an '.html' extension (TODO: we could just make a link
							 | 
						||
| 
								 | 
							
								# here). Otherwise we found nothing viewable.
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								if [[ ! -e $FULLHTML ]]; then
							 | 
						||
| 
								 | 
							
								    if [[ -e $HTML ]]; then
							 | 
						||
| 
								 | 
							
								        echo "No full HTML found, viewing $HTML instead"
							 | 
						||
| 
								 | 
							
								        HTMLFILE="$HTML"
							 | 
						||
| 
								 | 
							
								    elif [[ -e $RAWNOTES ]]; then
							 | 
						||
| 
								 | 
							
								        echo "No files with ''.HTML' suffix, viewing raw notes"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        TMP1=$(mktemp '/tmp/notes_XXXXXX.html') || { echo "$SCRIPT: creation of temporary file failed!"; exit 1; }
							 | 
						||
| 
								 | 
							
								        trap 'cleanup_temp $TMP1' SIGHUP SIGINT SIGPIPE SIGTERM EXIT
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        cp "$RAWNOTES" "$TMP1"
							 | 
						||
| 
								 | 
							
								        HTMLFILE="$TMP1"
							 | 
						||
| 
								 | 
							
								    else
							 | 
						||
| 
								 | 
							
								        echo "Nothing to view, giving up"
							 | 
						||
| 
								 | 
							
								        exit
							 | 
						||
| 
								 | 
							
								    fi
							 | 
						||
| 
								 | 
							
								fi
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Open a parent instance of Brave (in the background), then open the HTML
							 | 
						||
| 
								 | 
							
								# notes after a short delay, thereby ensuring they open in a tab rather than
							 | 
						||
| 
								 | 
							
								# in another window.  Brave has great potential but documentation is a bit
							 | 
						||
| 
								 | 
							
								# sparse.
							 | 
						||
| 
								 | 
							
								# NOTE: We're using debug statements for the moment until this method is shown
							 | 
						||
| 
								 | 
							
								# to be a good one.
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# if [[ $(pgrep -u "$USER" -f '/usr/bin/brave-browser' -c) -eq 0 ]]; then
							 | 
						||
| 
								 | 
							
								#     echo "D> Starting parent browser"
							 | 
						||
| 
								 | 
							
								#     $BRAVE > /dev/null 2>&1 &
							 | 
						||
| 
								 | 
							
								#     echo "D> Delaying ..."
							 | 
						||
| 
								 | 
							
								#     sleep 3
							 | 
						||
| 
								 | 
							
								# fi
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# 2020-11-29 Looks like the parent + child model doesn't work any more (they
							 | 
						||
| 
								 | 
							
								# keep changing this browser!). Also, just running the browser doesn't return
							 | 
						||
| 
								 | 
							
								# to the command line any more so it seems to need to be in the background.
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# echo "D> Starting browser tab"
							 | 
						||
| 
								 | 
							
								echo "D> Starting browser itself"
							 | 
						||
| 
								 | 
							
								$BRAVE "${HTMLFILE}" > /dev/null 2>&1 &
							 | 
						||
| 
								 | 
							
								# $BRAVE "${HTMLFILE}&"
							 | 
						||
| 
								 | 
							
								# $BRAVE "${HTMLFILE}"
							 | 
						||
| 
								 | 
							
								RES=$?
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if [[ $RES -eq 0 ]]; then
							 | 
						||
| 
								 | 
							
								    #
							 | 
						||
| 
								 | 
							
								    # Update the status file
							 | 
						||
| 
								 | 
							
								    #
							 | 
						||
| 
								 | 
							
								    echo "rendered" >> "$STATUSFILE" || \
							 | 
						||
| 
								 | 
							
								        { echo "Failed to update $STATUSFILE"; exit 1; }
							 | 
						||
| 
								 | 
							
								else
							 | 
						||
| 
								 | 
							
								    echo "Oops! Something went wrong!"
							 | 
						||
| 
								 | 
							
								    exit 1
							 | 
						||
| 
								 | 
							
								fi
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								exit
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# vim: syntax=sh:ts=8:sw=4:ai:et:tw=78:fo=tcrqn21
							 |