diff --git a/nix/packages/by-name/easyscan/easyscan.sh b/nix/packages/by-name/easyscan/easyscan.sh new file mode 100644 index 00000000..726ffe78 --- /dev/null +++ b/nix/packages/by-name/easyscan/easyscan.sh @@ -0,0 +1,49 @@ +if [ $# -eq 0 ]; then + OUTPUT_FILE=./scan_"$(date)".pdf +else + OUTPUT_FILE="''${1%.*}.pdf" +fi + +tempdir="$(mktemp -d)" + +device=$(scanimage --formatted-device-list="%d (%v %m)" --list-devices | + fzf --header "Pick a device:" | + cut -d ' ' -f 1) + +do_scan() { + filename="$tempdir/$(date).pdf" + while ! scanimage --format=pdf --device="$device" --resolution 300 >"$filename"; do + : + done + echo "$filename" +} + +do_fix() { + read -r filename + fixed_name="${filename%.pdf}_fixed.pdf" + gs -o "$fixed_name" -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress "$filename" + rm "$filename" + mv "$fixed_name" "$filename" + echo "$filename" +} + +while :; do + do_scan | do_fix + + IFS= read -r -p "Continue scanning ? [Y/n] " cont + case "$cont" in + [nN]) + echo "Exiting..." + break + ;; + [yY] | *) ;; + esac +done + +# Multiple files are scanned, join them +merged_filename="$tempdir/$(date)_final.pdf" +pdfunite "$tempdir"/*.pdf "$merged_filename" +echo "$merged_filename" | do_fix + +# Copy scan to current directory +cp "$merged_filename" "$OUTPUT_FILE" diff --git a/nix/packages/by-name/easyscan/package.nix b/nix/packages/by-name/easyscan/package.nix index 856051e8..258e7fd3 100644 --- a/nix/packages/by-name/easyscan/package.nix +++ b/nix/packages/by-name/easyscan/package.nix @@ -15,56 +15,5 @@ writeShellApplication { ghostscript ]; - text = '' - if [ $# -eq 0 ]; then - OUTPUT_FILE=./scan_"$(date)".pdf - else - OUTPUT_FILE="''${1%.*}.pdf" - fi - - tempdir="$(mktemp -d)" - - device=$(scanimage --formatted-device-list="%d (%v %m)" --list-devices | - fzf --header "Pick a device:" | - cut -d ' ' -f 1) - - do_scan() { - filename="$tempdir/$(date).pdf" - while ! scanimage --format=pdf --device="$device" --resolution 300 >"$filename"; do - : - done - echo "$filename" - } - - do_fix() { - read -r filename - fixed_name="''${filename%.pdf}_fixed.pdf" - gs -o "$fixed_name" -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress "$filename" - rm "$filename" - mv "$fixed_name" "$filename" - echo "$filename" - } - - while : ; do - do_scan | do_fix - - IFS= read -r -p "Continue scanning ? [Y/n] " cont - case "$cont" in - [nN]) - echo "Exiting..." - break - ;; - [yY] | *) - ;; - esac - done - - # Multiple files are scanned, join them - merged_filename="$tempdir/$(date)_final.pdf" - pdfunite "$tempdir"/*.pdf "$merged_filename" - echo "$merged_filename" | do_fix - - # Copy scan to current directory - cp "$merged_filename" "$OUTPUT_FILE" - ''; + text = builtins.readFile ./easyscan.sh; }