diff options
Diffstat (limited to 'home-manager/config/lf/commands/scripts/archive')
-rwxr-xr-x | home-manager/config/lf/commands/scripts/archive | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/home-manager/config/lf/commands/scripts/archive b/home-manager/config/lf/commands/scripts/archive new file mode 100755 index 00000000..fd032dd4 --- /dev/null +++ b/home-manager/config/lf/commands/scripts/archive @@ -0,0 +1,39 @@ +#! /usr/bin/env dash +# shellcheck disable=SC2086 +# shellcheck source=/dev/null +# . ~/.local/lib/shell/lib +. %SHELL_LIBRARY_PATH + +# Option '-f' disables pathname expansion which can be useful when $f, $fs, and +# $fx variables contain names with '*' or '?' characters. However, this option +# is used selectively within individual commands as it can be limiting at +# times. +set -f + +archivers=$(tmp 'echo "gzip xz 7z zip"'); + +readp "File Name: " name; + +FX="$(awk -v Root="$(if [ "$(pwd)" = "/" ]; then pwd; else echo "$(pwd)/";fi)" '{ +for (i=1; i<=NF; i++) { + gsub(Root, "", $i); + print $i; +} +}' "$(tmp "echo \"$fx\" | tr '\n' ' '")")"; + +case $(awk '{for (i=1; i<=NF; i++) print $i}' $archivers | fzf) in + "gzip") + tar -czf "$name".tar.gz $FX + ;; + "xz") + tar -cf "$name".tar $FX + xz -z -9 -e -T0 "$name".tar + ;; + "7z") + 7z a "$name".7z $FX + ;; + "zip") + zip --symlinks -r "$name".zip $FX + ;; +esac +# vim: ft=sh |