X-Git-Url: https://iankelling.org/git/?p=lnf;a=blobdiff_plain;f=lnf;h=50d8c3a63f75eb23b4b9d8fea7fbc8644e8481e4;hp=ac5ebcc020d04c0a49999bc2488080a5fbbba675;hb=7c25f51849fd18cc0955a311fa53fcbb718539f6;hpb=5da4a11f4c6f6cd7f0dd79d2402acaa78eb66f03 diff --git a/lnf b/lnf index ac5ebcc..50d8c3a 100755 --- a/lnf +++ b/lnf @@ -3,21 +3,24 @@ # This program is under GPL v. 3 or later, see lnf() { - local help="lnf - Create symlinks conveniently and forcefully. -Usage: + local help="Usage: lnf -T TARGET LINK_NAME (1st form) lnf TARGET (2nd form) lnf TARGET... DIRECTORY (3rd form) +Create symlinks forcefully -Remove existing file in the using trash-put or rm -rf if it is not available, -or trash-put fails due to a cross-filesystem link. +Removes existing files using trash-put or rm -rf if it is not available, +or trash-put fails due to a limitation such as a cross-filesystem link. Create directory if needed. Slightly more restrictive arguments than ln. In the 1st form, create a link to TARGET with the name LINK_NAME. In the 2nd form, create a link to TARGET in the current directory. In the 3rd form, create -links to each TARGET in DIRECTORY." +links to each TARGET in DIRECTORY. - if [[ $1 == --help || $# -eq 0 ]]; then +Do export LNF_VERBOSE=true for verbose output +" + + if [[ $1 == --help || $1 == -h || $# -eq 0 ]]; then echo "$help" return 0 fi @@ -72,6 +75,9 @@ links to each TARGET in DIRECTORY." fi if (( ${#to_remove[@]} >= 1 )); then if type -P trash-put >/dev/null; then + if [[ $LNF_VERBOSE == true ]]; then + echo "lnf: trash-put -- ${to_remove[*]}" + fi trash-put -- "${to_remove[@]}" || ret=$? # trash-put will fail to trash a link that goes across filesystems (72), # and for empty files (74) @@ -80,12 +86,15 @@ links to each TARGET in DIRECTORY." echo "$0: using rm -rf to overcome cross filesystem trash-put limitation" rm -rf -- "${to_remove[@]}" elif [[ $ret == 74 ]]; then - echo "$0: using rm -rf to overcome empty file/dir trash-put limitation" + echo "$0: using rm -rf to overcome empty file & hardlink trash-put limitation" rm -rf -- "${to_remove[@]}" elif [[ $ret && $ret != 0 ]]; then return $x fi else + if [[ $LNF_VERBOSE == true ]]; then + echo "lnf: rm -rf -- ${to_remove[*]}" + fi rm -rf -- "${to_remove[@]}" fi fi