aboutsummaryrefslogtreecommitdiffstats
path: root/home-manager/config/lf/commands/scripts/archive
diff options
context:
space:
mode:
authorSoispha <soispha@vhack.eu>2023-05-28 22:10:24 +0200
committerSoispha <soispha@vhack.eu>2023-05-28 22:10:24 +0200
commite5af81a5f9d9d3a2af0d3e970815e3c73beb0840 (patch)
treea8acf6adde5c6f509bf523c28d4243869a3d1107 /home-manager/config/lf/commands/scripts/archive
parentFix(bootstrap): Quote scripts (diff)
downloadnixos-config-e5af81a5f9d9d3a2af0d3e970815e3c73beb0840.zip
Fix(hm/conf/lf/cmds): Rework some of them
Diffstat (limited to '')
-rwxr-xr-xhome-manager/config/lf/commands/scripts/archive42
1 files changed, 29 insertions, 13 deletions
diff --git a/home-manager/config/lf/commands/scripts/archive b/home-manager/config/lf/commands/scripts/archive
index 617a4ace..3d267fa1 100755
--- a/home-manager/config/lf/commands/scripts/archive
+++ b/home-manager/config/lf/commands/scripts/archive
@@ -9,30 +9,46 @@ SHELL_LIBRARY_VERSION="1.1.3" . %SHELL_LIBRARY_PATH
# times.
set -f
-archivers=$(tmp 'echo "gzip xz 7z zip"');
+archivers="$(tmp 'echo "gzip xz 7z zip"')";
-readp "File Name: " name;
+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
-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' ' '")")";
+ if [ "$ans" = "y" ]; then
+ break
+ else
+ prompt "Archive name: "
+ fi
+ fi
+done
-case $(awk '{for (i=1; i<=NF; i++) print $i}' $archivers | fzf) in
+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 $FX
+ tar -czf "$name".tar.gz "$@"
;;
"xz")
- tar -cf "$name".tar $FX
+ tar -cf "$name".tar "$@"
xz -z -9 -e -T0 "$name".tar
;;
"7z")
- 7z a "$name".7z $FX
+ 7z a "$name".7z "$@"
;;
"zip")
- zip --symlinks -r "$name".zip $FX
+ zip --symlinks -r "$name".zip "$@"
;;
esac
# vim: ft=sh