From c52c7f314ccadcc2fcd91e28c8fd1b88f6d5ce0c Mon Sep 17 00:00:00 2001 From: Benedikt Peetz Date: Fri, 18 Oct 2024 17:07:46 +0200 Subject: refactor(modules): Move all system modules to `by-name` From now on all modules should be added to the new `by-name` directory. This should help remove the (superficial and utterly useless) distinction between `home-manager` and `NixOS` modules. --- .../conf/lf/commands/scripts/archive.sh | 77 ++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100755 modules/home.legacy/conf/lf/commands/scripts/archive.sh (limited to 'modules/home.legacy/conf/lf/commands/scripts/archive.sh') diff --git a/modules/home.legacy/conf/lf/commands/scripts/archive.sh b/modules/home.legacy/conf/lf/commands/scripts/archive.sh new file mode 100755 index 00000000..25f40534 --- /dev/null +++ b/modules/home.legacy/conf/lf/commands/scripts/archive.sh @@ -0,0 +1,77 @@ +#! /usr/bin/env dash + +# shellcheck source=/dev/null +SHELL_LIBRARY_VERSION="2.1.2" . %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 + +# shellcheck disable=SC2269 +f="$f" +# shellcheck disable=SC2269 +fx="$fx" +# shellcheck disable=SC2269 +fs="$fs" + +archivers="$(tmp echo gzip xz 7z zip)" +archiver="$(awk '{for (i=1; i<=NF; i++) print $i}' "$archivers" | fzf)" + +case "$archiver" in +"gzip") + ext=tar.gz + ;; +"xz") + ext=tar.xz + ;; +"7z") + ext=7z + ;; +"zip") + ext=zip + ;; +esac + +prompt "Archive name: " +name="" +while [ -z "$name" ] || [ -e "$name" ]; do + read -r name_base + name="$name_base.$ext" + 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 "$archiver" in +"gzip") + tar --create --gzip -file="$name" "$@" + ;; +"xz") + tar --create --file="$name" "$@" + xz --compress -9 --extreme --threads=0 "$name" + ;; +"7z") + 7z a "$name" "$@" + ;; +"zip") + zip --symlinks -9 -r "$name" "$@" + ;; +esac +# vim: ft=sh -- cgit 1.4.1