diff --git a/bash/jpg b/bash/jpg index 55061ac..cb78678 100755 --- a/bash/jpg +++ b/bash/jpg @@ -5,23 +5,33 @@ # Command: # https://zwbetz.com/convert-heic-images-to-jpg/ +red="$(tput setaf 1)" +rst="$(tput sgr0)" + # trap ctrl-c and call ctrl_c() # https://rimuhosting.com/knowledgebase/linux/misc/trapping-ctrl-c-in-bash trap ctrl_c INT function ctrl_c() { - echo "${rst}${red}CTRL+C Detected, exiting.${rst}" + if [ $filecount -eq 0 ]; then printf "%s\n" "${rst}${red}exiting${rst}" + else printf "\n%s\n%s\n\n" "${rst}${red}CTRL+C detected - this may have corrupted the most recent attempted file" "conversion. Please inspect the latest file and delete or retry as needed.${rst}" + fi exit } padding=" " if [[ "${@}" == *"-h"* ]]; then + printf "%s\n" "Command:" + printf "$padding%s\n" "Converts heic files (Apple's native picture format) to either jpg (default)" + printf "$padding%s\n" "or png (larger file size) for easier manipulation or sharing. Requires that" + printf "$padding%s\n" "Imagemagick's mogrify tool be complied and installed with heic support. See" + printf "$padding%s\n" "step 1 at https://dismy.link/heicmogrify for a brief install guide." printf "%s\n" "Command usage:" printf "$padding%-20s%s\n" "--dir [directory]" "Specify a directory other than current" printf "$padding%-20s%s\n" "-d --delete" "Delete original files (default keeps originals)" printf "$padding%-20s%s\n" "-q --quiet" "Suppresses progress output (summaries are still displayed)" printf "$padding%-20s%s\n" "[--png|--jpg]" "Save as jpg/png (default is jpg)" - printf "$padding%-20s%s\n" "-h" "Print this help message and exit" + printf "$padding%-20s%s\n" "-h --help" "Print this help message and exit" exit 0 fi @@ -35,6 +45,7 @@ saveasjpg=1 # Suppress progress output keepquiet=0 +filecount=0 customdir=0 for _arg in ${@}; do if [ $customdir -eq 1 ]; then directory="$_arg"; customdir=2; continue; fi @@ -50,16 +61,22 @@ done # Make sure the mogrify command is available. If this is being # run as a cron job the which command will fail so we check the # default location just in case. +mymogrify=`which mogrify` which mogrify > /dev/null if [[ $? -eq 1 ]]; then - if [[ ! -e "/usr/local/bin/mogrify" ]]; then - echo "Unable to run the mogrify command. Please follow the build and installation instructions at the top of the script to install the program on your system." - exit + if [[ -e "/usr/local/bin/mogrify" ]]; then + mymogrify="/usr/local/bin/mogrify" + else + printf "%s\n" "Unable to locate the mogrify command. Please follow the build and" + printf "%s\n" "installation guide at https://dismy.link/heicmogrify to install" + printf "%s\n" "the ImageMagick mogfify tool on your system with heic support." + exit 1 fi fi # summary: printf "\n%s\n" "Summary:" +printf "$padding%s\n" "Binary: $mymogrify" printf "$padding%s\n" "Directory: $directory" [ $keeporiginals -eq 0 ] && printf "$padding%s\n" "Originals: Delete" || printf "$padding%s\n" "Originals: Keep" [ $keepquiet -eq 0 ] && printf "$padding%s\n" "Output: Visible" || printf "$padding%s\n" "Output: Hidden" @@ -67,7 +84,6 @@ printf "$padding%s\n" "Directory: $directory" printf "\n%s" "Press enter to begin or ^c to exit" read -filecount=0 [ $saveasjpg -eq 0 ] && destformat="png" || destformat="jpg" # Loop over all the .heic files in the folder for heic in *.heic; do @@ -77,7 +93,14 @@ for heic in *.heic; do else [ $keepquiet -eq 0 ] && printf "%s\n" "Converting $heic to $img"; fi [ -f "$img" ] || let filecount=filecount+1 # If the file we are going to make does not exist, run the command to convert it - [ -f "$img" ] || /usr/local/bin/mogrify -format $destformat "$heic" + if [ ! -f "$img" ]; then + $mymogrify -format $destformat "$heic" + mogrified=$? + if [ $mogrified -ne 0 ]; then + printf "\n%s\n\n" "${rst}${red}Encountered the above error while trying to mogrify. Exiting.${rst}" + exit $mogrified + fi + fi # If we don't want the originals, give them the axe [ $keeporiginals -eq 0 ] && rm "$heic" done @@ -93,4 +116,5 @@ else printf "\n%s\n\n" "Found 0 heic files to convert. Are you sure you specified the right directory?" else printf "\n%s\n\n" "Found 0 heic files to convert. Are you sure you're in the right directory?" + fi fi