about summary refs log tree commit diff stats
path: root/modules/home.legacy/conf/lf/commands/scripts/unarchive.sh
diff options
context:
space:
mode:
Diffstat (limited to 'modules/home.legacy/conf/lf/commands/scripts/unarchive.sh')
-rwxr-xr-xmodules/home.legacy/conf/lf/commands/scripts/unarchive.sh36
1 files changed, 36 insertions, 0 deletions
diff --git a/modules/home.legacy/conf/lf/commands/scripts/unarchive.sh b/modules/home.legacy/conf/lf/commands/scripts/unarchive.sh
new file mode 100755
index 00000000..d4835f6b
--- /dev/null
+++ b/modules/home.legacy/conf/lf/commands/scripts/unarchive.sh
@@ -0,0 +1,36 @@
+#! /usr/bin/env dash
+
+# shellcheck source=/dev/null
+SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH
+
+# shellcheck disable=SC2269
+f="$f"
+# shellcheck disable=SC2269
+fx="$fx"
+# shellcheck disable=SC2269
+fs="$fs"
+# shellcheck disable=SC2269
+id="$id"
+
+# extract the current file with the right command
+# (xkcd link: https://xkcd.com/1168/)
+set -f
+
+unarchive() {
+    case "$1" in
+    *.tar.bz | *.tar.bz2 | *.tbz | *.tbz2) tar xjvf "$1" ;;
+    *.tar.gz | *.tgz) tar xzvf "$1" ;;
+    *.tar.xz | *.txz) tar xJvf "$1" ;;
+    *.zip) unzip "$1" ;;
+    *.rar)
+        die "rar is a unfree format!"
+        ;;
+    *.7z) 7z x "$1" ;;
+    *) die "Unsupported format" ;;
+    esac
+}
+
+while read -r file; do
+    unarchive "$file"
+done <"$fx"
+# vim: ft=sh