]> Sergey Matveev's repositories - nnn.git/commitdiff
Added execute fallback to nuke
authorJonathan Rash <jonathanmrash@gmail.com>
Tue, 20 Jul 2021 23:12:37 +0000 (19:12 -0400)
committerArun Prakash Jana <engineerarun@gmail.com>
Wed, 21 Jul 2021 04:58:33 +0000 (10:28 +0530)
plugins/nuke

index 371693817c34b65c8ab82a2318ff901de624b917..86eb5fe81f5bed496ec6f0930602da35438f02b7 100755 (executable)
 #   Guards against accidentally opening mime types like executables, shared libs etc.
 #
 #   Tries to play 'file' (1st argument) in the following order:
-#   i. by extension
-#   ii. by mime (image, video, audio, pdf)
-#   iii. by mime (other file types)
+#     1. by extension
+#     2. by mime (image, video, audio, pdf)
+#     3. by mime (other file types)
+#     4. by mime (prompt and run executables)
 #
 # Modification tips:
 #   1. Invokes CLI utilities by default. Set GUI to 1 to enable GUI apps.
@@ -63,8 +64,9 @@
 #   1. Adapt, test and enable all mimes
 #   2. Clean-up the unnecessary exit codes
 
-# set to 1 to enable GUI apps
+# set to 1 to enable GUI apps and/or BIN execution
 GUI="${GUI:-0}"
+BIN="${BIN:-0}"
 
 set -euf -o noclobber -o noglob -o nounset
 IFS="$(printf '%b_' '\n')"; IFS="${IFS%_}" # protect trailing \n
@@ -513,10 +515,25 @@ handle_blocked() {
     esac
 }
 
+handle_bin() {
+    case "${MIMETYPE}" in
+        application/x-executable|application/x-shellscript)
+        clear
+        echo '-------- Executable File --------' && file --dereference --brief -- "${FPATH}"
+        printf "Run executable (y/N)? "
+        read -r answer
+        case "$answer" in
+            [Yy]* ) exec "${FPATH}";;
+            [Nn]* ) exit;;
+        esac
+    esac
+}
+
 MIMETYPE="$( file -bL --mime-type -- "${FPATH}" )"
 handle_extension
 handle_multimedia "${MIMETYPE}"
 handle_mime "${MIMETYPE}"
+[ "$BIN" -ne 0 ] && [ -x "${FPATH}" ] && handle_bin
 handle_blocked "${MIMETYPE}"
 handle_fallback