add verbose mode to log removals
[lnf] / lnf
diff --git a/lnf b/lnf
index ac5ebcc020d04c0a49999bc2488080a5fbbba675..50d8c3a63f75eb23b4b9d8fea7fbc8644e8481e4 100755 (executable)
--- a/lnf
+++ b/lnf
@@ -3,21 +3,24 @@
 # This program is under GPL v. 3 or later, see <http://www.gnu.org/licenses/>
 
 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