Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • client/bin/gbrm

    rfc8707b r7cdd65d  
    11#!/usr/bin/perl
    22
    3 # This script was largely written by Jessica Hamrick (jhamrick), with
    4 # help from Kyle Brogle (broglek)
     3# Written by Jessica Hamrick (C) 2010
    54
    65use strict;
     
    1110use Getopt::Long;
    1211
    13 # usage
    14 my $usage = <<USAGE;
    15 Usage: gbq [options] [-q QUEUE] ID
    16 
    17         -q, --queue             Specify a queue other than the default
    18         -h, --help              Print this message
    19 USAGE
    20 
    21 # initialize the variables for the options
     12my $usage = "Usage: gbq [-q QUEUE] ID\n";
    2213my $q = "";
    23 my $help = 0;
    24 
    25 # parse the options
    26 GetOptions ('q|queue=s' => \$q,
    27             'h|help', => \$help);
    28 
    29 # if the -h flag was passed, then print the usage and exit
    30 if ($help) {
    31     print $usage;
    32     exit 0;
    33 }
     14GetOptions ('q|queue=s' => \$q);
    3415
    3516my @ids = @ARGV[0 .. $#ARGV];
    3617
    37 # if the -q option is not specified, then assume we're using the
    38 # default queue
    39 if (!$q) {
     18if (!$q){
    4019    $q = "DEFAULT";
    4120}
    42 
    43 # if there are no ids specified to remove, then print the usage
    4421if (!@ids) {
    4522    print $usage;
     
    4724}
    4825
    49 # set configuration path, and complain if it doesn't exist
     26
    5027my $configpath = "$ENV{'HOME'}/.gutenbach/$q";
    5128if (! -e $configpath) {
     
    5431}
    5532
    56 # initialize the host and queue variables: host holds the address for
    57 # the machine on which the remote queue runs, and queue holds the name
    58 # of the printer
    5933my ($host, $queue);
    6034
    61 # load the configuration file (this will set $host and $queue)
    6235if (-r $configpath) {
    6336    local $/;
     
    6740}
    6841
    69 # initialize a new CUPS session
    7042my $cups = Net::CUPS->new();
    71 # set the server to the one specified in the config file
    7243$cups->setServer("$host");
    73 # set the printer name to the one specified in the config file
    7444my $printer = $cups->getDestination("$queue");
    75 
    76 # if $printer is not defined, then throw an error
    7745unless( $printer){
    7846    print "Cannot access queue $q...do you have network connectivity and permission to view the queue?\n";
    7947    exit 1;
    8048}
    81 
    82 # get the list of jobs from the printer
    8349my @jobs = $printer->getJobs(0, 0);
    84 
    85 # for each id that we want to remove
    8650foreach my $id(@ids){
    87 
    88     # if the id is 'all', then we remove all jobs
    89     if ($id eq "all") {
    90         foreach $id(@jobs) {
    91             cancel_job($id, $printer);
    92         }
    93     }
    94 
    95     # if the id is 'current', then we remove just the currently
    96     # playing job
    97     elsif ($id eq "current") {
    98         $id = $jobs[0];
     51if ($id eq "all") {
     52    foreach $id(@jobs) {
    9953        cancel_job($id, $printer);
    10054    }
    101 
    102     # if the id is 'last', then we remove just the last job
    103     elsif ($id eq "last") {
    104         $id = $jobs[-1];
    105         cancel_job($id, $printer);
    106     }
    107 
    108     # otherwise, remove the job based on its actual (numeric) id
    109     else {
    110         foreach my $item(@jobs) {
    111             if($item =~ /$id/){
    112                 cancel_job($item, $printer);
    113             }
     55}
     56elsif ($id eq "current") {
     57    $id = $jobs[0];
     58    cancel_job($id, $printer);
     59}
     60elsif ($id eq "last") {
     61    $id = $jobs[-1];
     62    cancel_job($id, $printer);
     63}
     64else {
     65    foreach my $item(@jobs) {
     66        if($item =~ /$id/){
     67            cancel_job($item, $printer);
    11468        }
    11569    }
    11670}
     71}
    11772
    118 # helper function to remove a job
    11973sub cancel_job {
    120     # get the id and printer from the arguments
    12174    my ($id, $printer) = @_;
    122     # get the reference to the job
    12375    my $job_ref = $printer->getJob($id);
    124     # find the job title (so we can print it out for the user)
    12576    my $title = $job_ref->{'title'};
    126     # cancel the job
    12777    $printer->cancelJob($id);
    12878
    129     # print out that we canceled the job
    13079    print "Canceled job '$title' (id $id)\n";
     80 
    13181}
Note: See TracChangeset for help on using the changeset viewer.