#!/bin/bash

QUEUE="$1"
COMMAND="$2"
shift 2

lpq () {
    /usr/bin/lpq -P${1}
}

lprm() {
    if [ "all" = "$2" ]
    then
	/usr/bin/lprm -P${1} -
    else
	/usr/bin/lprm -P${1} "$@"
    fi
}

stop() {
    if [ -n "$2" ]
    then
	/usr/bin/cupsdisable "$1" -r "$2"
    else
	/usr/bin/cupsdisable "$1"
    fi
}

start () {
    /usr/bin/cupsenable "$1"
}

disable () {
    if [ -n "$2" ]
    then
	/usr/sbin/reject "$1" -r "$2"
    else
	/usr/sbin/reject "$1"
    fi
}

enable () {
    /usr/sbin/accept "$1"
}

down () {
    disable "$@"
    stop "$@"
}

up () {
    start "$@"
    enable "$@"
}

help () {
    echo
    echo "Usage: remctl cups.mit.edu lpc <printer> <command> [arguments ...]"
    echo
    echo "cups.mit.edu's remctl lpc knows about the following commands:"
    echo
    echo "lpq                    - list the entries in a printer's queue"
    echo "lprm ([job1 ...]|all)  - remove listed jobs from the printer's queue"
    echo "stop [\"reason\"]        - stop printing jobs (still accepts new jobs)"
    echo "start                  - start printing jobs"
    echo "disable [\"reason\"]     - stop accepting new jobs"
    echo "enable                 - start accepting new jobs"
    echo "down                   - stop and disable"
    echo "up                     - start and enable"
    echo "help                   - display this help menu"
    echo
}

if [ "help" = "$QUEUE" ]
then
    help
    exit 0
fi

case "$COMMAND" in
    lpq|lprm|stop|start|disable|enable|down|up)
	$COMMAND "$QUEUE" "$@"
	;;
    *)
	help
	;;
esac
