#! /usr/bin/env dash # shellcheck source=/dev/null SHELL_LIBRARY_VERSION="1.1.3" . %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"')"; prompt "Archive name: " name="" while [ -z "$name" ] || [ -e "$name" ] do read -r name if [ -e "$name" ]; then prompt "Archive already exists, overwrite [y|N]: " read -r ans if [ "$ans" = "y" ]; then break else prompt "Archive name: " fi fi done root="$(if [ "$(pwd)" = "/" ]; then pwd; else echo "$(pwd)/";fi)"; # fx contains all selected file name separated by a newline while read -r raw_file; do file="$(echo "$raw_file" | sed "s|$root||")"; set -- "$@" "$file"; done < "$(tmp "echo '$fx'")"; case "$(awk '{for (i=1; i<=NF; i++) print $i}' "$archivers" | fzf)" in "gzip") tar -czf "$name".tar.gz "$@" ;; "xz") tar -cf "$name".tar "$@" xz -z -9 -e -T0 "$name".tar ;; "7z") 7z a "$name".7z "$@" ;; "zip") zip --symlinks -r "$name".zip "$@" ;; esac # vim: ft=sh