diff --git a/README.MD b/README.MD index 0e9cdbb..8dce52a 100644 --- a/README.MD +++ b/README.MD @@ -32,6 +32,7 @@ Exit Codes: 2 Invalid Argument 3 Source Unreachable 4 Destination Unreachable + 5 Command failed ``` diff --git a/music-sync.sh b/music-sync.sh index 7773fe7..d0f0c6e 100755 --- a/music-sync.sh +++ b/music-sync.sh @@ -131,6 +131,7 @@ Usage() { echo " 2 Invalid Argument" echo " 3 Source Unreachable" echo " 4 Destination Unreachable" + echo " 5 Command failed" echo "" } @@ -243,14 +244,18 @@ CopyFiles() { if [[ "$dest/$line" = */* ]]; then mkdir -p "$dest/${line%/*}"; fi; + cp -f $temp/$line $dest/$line 1>/dev/null 2>/dev/null + done < "/tmp/music-sync-filelist" VerboseOutput 2 "Copied: $line" } CleanUp() { VerboseOutput 1 "Cleaning Up" - rm "/tmp/music-sync-filelist" + if [[ -f /tmp/music-sync-filelist ]]; then + rm "/tmp/music-sync-filelist" + fi VerboseOutput 1 "Done" } @@ -260,6 +265,21 @@ ExecTime() { VerboseOutput 1 "$(($difftimelps / 60)) minutes and $(($difftimelps % 60)) seconds elapsed for Script Execution." } +ErrorHandler() { + VerboseOutput 5 "Error while executing $1" + CleanUp + exit 5 +} + +ExitHandler() { + VerboseOutput 5 "Aborted" + CleanUp + exit 0 +} + +trap 'ExitHandler' SIGINT +trap 'ErrorHandler $BASH_COMMAND' ERR + CheckDeps GetOptions $@ if [[ $help == true ]]; then @@ -272,6 +292,7 @@ fi CreateFileList $source $dest "" if [[ ! -f /tmp/music-sync-filelist ]]; then VerboseOutput 2 "Nothing to do!" + CleanUp exit 0 fi ConvertFiles