about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorSoispha <soispha@vhack.eu>2023-11-25 12:54:37 +0100
committerSoispha <soispha@vhack.eu>2023-11-25 12:54:37 +0100
commit9d4e1de936a675c8b3015a2750442d46842e3a75 (patch)
treef1064b06c587f962136f7322af67a8999259f72f
parentbuild(treewide): Update (diff)
downloadnixos-config-9d4e1de936a675c8b3015a2750442d46842e3a75.tar.gz
nixos-config-9d4e1de936a675c8b3015a2750442d46842e3a75.zip
feat(hm/pkgs/scrs/con2pdf): Enable completions
-rw-r--r--hm/soispha/pkgs/scripts.nix17
-rwxr-xr-xhm/soispha/pkgs/scripts/apps/con2pdf38
2 files changed, 45 insertions, 10 deletions
diff --git a/hm/soispha/pkgs/scripts.nix b/hm/soispha/pkgs/scripts.nix
index 4a20eb55..fa7ba7ab 100644
--- a/hm/soispha/pkgs/scripts.nix
+++ b/hm/soispha/pkgs/scripts.nix
@@ -21,10 +21,23 @@
     path = "apps";
     dependencies = builtins.attrValues {inherit (pkgs) udisks gawk gnused gnugrep sudo;};
   };
-  con2pdf-scr = write_script {
+  con2pdf-scr = sysLib.writeShellScriptWithLibrary {
     name = "con2pdf";
-    path = "apps";
+    path = ./scripts/apps/con2pdf;
     dependencies = builtins.attrValues {inherit (pkgs) sane-backends imagemagick coreutils fd;};
+    generateCompletions = true;
+    replacementStrings = {
+      DEVICE_FUNCTION =
+        # This is here, because escaping the whole function, to use it in the shell script
+        # directly just isn't possible
+        pkgs.writeText "DEVICE_FUNCTION"
+        /*
+        bash
+        */
+        ''
+          scanimage -L | awk 'BEGIN { FS = "`" } { gsub(/'.*/, "", $2); print $2 }'
+        '';
+    };
   };
   dldragon-scr = write_script {
     name = "dldragon";
diff --git a/hm/soispha/pkgs/scripts/apps/con2pdf b/hm/soispha/pkgs/scripts/apps/con2pdf
index 0c4ec993..550fe5e9 100755
--- a/hm/soispha/pkgs/scripts/apps/con2pdf
+++ b/hm/soispha/pkgs/scripts/apps/con2pdf
@@ -17,23 +17,45 @@ cat << EOF
 Scan images and turn them into a pdf.
 
 Usage:
-    $NAME [--help|--version|--out-dir|--num-pages|--method] --name --device
+    $NAME [OPTIONS] --name --device
 
-Options:
-    --out-dir | -o
+OPTIONS:
+    --out-dir | -o [FILE]
                             Path to place the generated pdf files (default: ./pdf).
-    --name | -n
-                            Name for the pdf files (e.g. "\$name"_1.pdf).
-    --num-pages | -p
+
+    --name | -n NAME
+                            Name for the pdf files (e.g. <NAME>_1.pdf).
+
+    --num-pages | -p NUM
                             Number of pages to merge into one pdf (default: 1).
-    --device | -d
+
+    --device | -d DEVICE
                             Device used for scanning.
-    --method | -m
+
+    --method | -m METHOD
                             Method to use for scanning (default: ADF).
+
     --help | -h
                             Display this help and exit.
+
     --version | -v
                             Display version and copyright information and exit.
+ARGUMENTS:
+    FILE := [[fd .]]
+                            A name of a file to store, default is: ./pdf
+
+    NAME | * := [[fd .]]
+                            The basename of the generated files
+
+    NUM | *([0-9]) := 0 | 1 | 2 | 3 | 4
+                            Possible numbers of pages, can be more than 4
+
+    DEVICE := [[$(cat %DEVICE_FUNCTION)]]
+                            Possible scanner names
+
+    METHOD := ADF | Flatbed
+                            The scanning method to use, not all scanners support both of
+                            these. The default is ADF
 EOF
 }