diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a136337 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +*.pdf diff --git a/scanbuddy.bash b/scanbuddy.bash index ca61674..06565ab 100755 --- a/scanbuddy.bash +++ b/scanbuddy.bash @@ -1,59 +1,90 @@ #!/usr/bin/env bash -brother_opts=() -scanner_mode='Black & White' -resolution='300' -source='Automatic Document Feeder(left aligned)' +# device="brother5:bus2;dev2" +device=$(scanimage -f "%d%n" | grep brother5 | head -n 1) +echo "Selecting scanner '$device'" + +# option values for the brother DS-740D scanner +simplex_source='Automatic Document Feeder(left aligned)' duplex_source='Automatic Document Feeder(left aligned,Duplex)' - -device="brother5:bus4;dev3" - +color_mode='24bit Color[Fast]' +bw_mode='Black & White' +grayscale_mode='True Gray' valid_resolutions=("100" "150" "200" "300" "400" "600" "1200") +# default options for scanning +sides=$simplex_source +mode='c' +resolution='300' + + current_page=$(find "$PWD" -name "out*.pdf" | sort | tail -n 1); read -r current_pageno <<<"${current_page//[^0-9]/ }" - current_pageno=${current_pageno:-0} - +last_out_file="out$current_pageno.pdf" next_out_file="out$((current_pageno+1)).pdf" scan() { - while getopts "dr:" flag; do + usage() { + echo "scanbuddy.bash scan -d -r -b " + } + + while getopts "dr:c:" flag; do case ${flag} in d) echo "Scanning duplex" - source=$duplex_source + sides=$duplex_source ;; r) - echo "Resolution=$OPTARG" if [[ ! " ${valid_resolutions[*]} " =~ [[:space:]]${OPTARG}[[:space:]] ]]; then - echo "Resolution not supported" + echo "Resolution '$OPTARG' not supported!" + echo "Supported resolutions: $(printf %s "${valid_resolutions[*]}")" exit 1 fi + resolution=$OPTARG ;; - b) - echo "Black and white"; + c) + mode=$OPTARG ;; *) ;; esac done + + case $mode in + c) + scanner_mode=$color_mode + ;; + b) + scanner_mode=$bw_mode + ;; + g) + scanner_mode=$grayscale_mode + ;; + *) + echo "Mode '$mode' not supported! Supported modes: (c)olour|(b)lack & white|(g)reyscale" + ;; + esac + + echo "Scanning to '$next_out_file'..." + scanimage \ + --device-name=$device \ + --format=pdf \ + --output-file="$next_out_file" \ + --mode="$scanner_mode" \ + --resolution="$resolution" \ + --source="$sides" \ + -x 210 -y 297 # A4 } case "$1" in scan) scan "${@:2}" - exit 0 - - if [ "$2" = "duplex" ]; then - true - fi - - # cat <