From: Ian Kelling Date: Mon, 13 Feb 2017 20:47:07 +0000 (-0800) Subject: refactor, better var names, remove dup code X-Git-Url: https://iankelling.org/git/?p=lnf;a=commitdiff_plain;h=b6ffa65f29eacbe5d010548b2bfa2c071e87fb11 refactor, better var names, remove dup code --- diff --git a/lnf b/lnf index 50d8c3a..1ab1cdf 100755 --- a/lnf +++ b/lnf @@ -35,6 +35,7 @@ Do export LNF_VERBOSE=true for verbose output fi fi + 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 - 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 - if [[ -e $dir || -L $dir ]]; then + if [[ -e $dest_dir || -L $dest_dir ]]; 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%%+(/)}" @@ -65,10 +68,7 @@ Do export LNF_VERBOSE=true for verbose output [[ -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##*/}") @@ -102,8 +102,8 @@ Do export LNF_VERBOSE=true for verbose output $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