refactor, better var names, remove dup code
authorIan Kelling <ian@iankelling.org>
Mon, 13 Feb 2017 20:47:07 +0000 (12:47 -0800)
committerIan Kelling <ian@iankelling.org>
Mon, 13 Feb 2017 20:47:07 +0000 (12:47 -0800)
lnf

diff --git a/lnf b/lnf
index 50d8c3a63f75eb23b4b9d8fea7fbc8644e8481e4..1ab1cdf95689cdb5b754d6cc7e25559ca106baf1 100755 (executable)
--- a/lnf
+++ b/lnf
@@ -35,6 +35,7 @@ Do export LNF_VERBOSE=true for verbose output
         fi
     fi
 
         fi
     fi
 
+
     local reset_extglob=false
     ! shopt extglob >/dev/null && reset_extglob=true
     shopt -s extglob
     local reset_extglob=false
     ! shopt extglob >/dev/null && reset_extglob=true
     shopt -s extglob
@@ -45,18 +46,20 @@ Do export LNF_VERBOSE=true for verbose output
 
     to_remove=()
     if [[ $nodir ]]; then
 
     to_remove=()
     if [[ $nodir ]]; then
-        dir="$(dirname "$2")"
-        if [[ -e $2 || -L $2 ]]; then
-            to_remove+=("$2")
-        elif [[ ! -d $dir ]]; then
+        dest_file="$2"
+        dest_dir="$(dirname "$dest_file")"
+        if [[ -e $dest_file || -L $dest_file ]]; then
+            to_remove+=("$dest_file")
+        elif [[ ! -d $dest_dir ]]; then
             mkdir=true
             mkdir=true
-            if [[ -e $dir || -L $dir ]]; then
+            if [[ -e $dest_dir || -L $dest_dir ]]; then
                 to_remove+=("$dir")
             fi
         fi
     elif (( $# >= 2 )); then
                 to_remove+=("$dir")
             fi
         fi
     elif (( $# >= 2 )); then
-        if [[ -d ${!#} ]]; then
-            prefix="${!#}/" # last arg
+        dest_dir="${!#}"
+        if [[ -d $dest_dir ]]; then
+            prefix="$dest_dir/" # last arg
             for x in "${@:1:$(( $# - 1 ))}"; do # all but last arg
                 # Remove 1 or more trailing slashes, using.
                 x="${x%%+(/)}"
             for x in "${@:1:$(( $# - 1 ))}"; do # all but last arg
                 # Remove 1 or more trailing slashes, using.
                 x="${x%%+(/)}"
@@ -65,10 +68,7 @@ Do export LNF_VERBOSE=true for verbose output
                 [[ -e "$x" || -L "$x" ]] && to_remove+=("$x")
             done
         else
                 [[ -e "$x" || -L "$x" ]] && to_remove+=("$x")
             done
         else
-            if ! mkdir -p "${!#}"; then
-                echo "lnf error: failed to make directory ${!#}"
-                return 1
-            fi
+            mkdir=true
         fi
     elif  [[ $# -eq 1 ]]; then
         [[ -e "${1##*/}" || -L "${1##*/}" ]] && to_remove+=("${1##*/}")
         fi
     elif  [[ $# -eq 1 ]]; then
         [[ -e "${1##*/}" || -L "${1##*/}" ]] && to_remove+=("${1##*/}")
@@ -102,8 +102,8 @@ Do export LNF_VERBOSE=true for verbose output
     $reset_extglob && shopt -u extglob
 
     if $mkdir; then
     $reset_extglob && shopt -u extglob
 
     if $mkdir; then
-        if ! mkdir -p "$(dirname "$2")"; then
-            echo "lnf error: failed to make directory $(dirname "$2")"
+        if ! mkdir -p "$dest_dir"; then
+            echo "lnf error: failed to make directory $dest_dir"
             return 1
         fi
     fi
             return 1
         fi
     fi