about summary refs log tree commit diff stats
path: root/hm/soispha/conf/lf/commands/scripts/archive.sh
diff options
context:
space:
mode:
authorSoispha <soispha@vhack.eu>2024-02-23 21:00:46 +0100
committerSoispha <soispha@vhack.eu>2024-02-23 21:18:34 +0100
commit2f1960bacc4b6956d0a4a2e80eb17014f1d6767d (patch)
tree8b7ae3da2dfec18f54bcf37cf0c8e3e909fe4cfe /hm/soispha/conf/lf/commands/scripts/archive.sh
parentfix(hm/conf/lf/commands): Remove useless 'open_config' cmd (diff)
downloadnixos-config-2f1960bacc4b6956d0a4a2e80eb17014f1d6767d.zip
fix(hm/conf/lf/commands): Check for the file name with the extension added
Beforehand it resolved a name conflict based on the base name alone:
```
USER: script
ALREADY_EXISTING_FILE: script
```
But the final script would then be named `script.sh`, thus, the check
must include the `.sh`.
Diffstat (limited to '')
-rwxr-xr-xhm/soispha/conf/lf/commands/scripts/archive.sh22
1 files changed, 19 insertions, 3 deletions
diff --git a/hm/soispha/conf/lf/commands/scripts/archive.sh b/hm/soispha/conf/lf/commands/scripts/archive.sh
index 9ac07898..bee9c341 100755
--- a/hm/soispha/conf/lf/commands/scripts/archive.sh
+++ b/hm/soispha/conf/lf/commands/scripts/archive.sh
@@ -17,12 +17,28 @@ fx="$fx"
 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
+while [ -z "$name" ] || [ -e "$name.$ext" ]; do
     read -r name
-    if [ -e "$name" ]; then
+    if [ -e "$name.$ext" ]; then
         prompt "Archive already exists, overwrite [y|N]: "
         read -r ans
 
@@ -42,7 +58,7 @@ while read -r raw_file; do
     set -- "$@" "$file"
 done <"$(tmp echo "$fx")"
 
-case "$(awk '{for (i=1; i<=NF; i++) print $i}' "$archivers" | fzf)" in
+case "$archiver" in
 "gzip")
     tar -czf "$name".tar.gz "$@"
     ;;