Changes in client/bin/gbrm [fc8707b:7cdd65d]
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
client/bin/gbrm
rfc8707b r7cdd65d 1 1 #!/usr/bin/perl 2 2 3 # This script was largely written by Jessica Hamrick (jhamrick), with 4 # help from Kyle Brogle (broglek) 3 # Written by Jessica Hamrick (C) 2010 5 4 6 5 use strict; … … 11 10 use Getopt::Long; 12 11 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 12 my $usage = "Usage: gbq [-q QUEUE] ID\n"; 22 13 my $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 } 14 GetOptions ('q|queue=s' => \$q); 34 15 35 16 my @ids = @ARGV[0 .. $#ARGV]; 36 17 37 # if the -q option is not specified, then assume we're using the 38 # default queue 39 if (!$q) { 18 if (!$q){ 40 19 $q = "DEFAULT"; 41 20 } 42 43 # if there are no ids specified to remove, then print the usage44 21 if (!@ids) { 45 22 print $usage; … … 47 24 } 48 25 49 # set configuration path, and complain if it doesn't exist 26 50 27 my $configpath = "$ENV{'HOME'}/.gutenbach/$q"; 51 28 if (! -e $configpath) { … … 54 31 } 55 32 56 # initialize the host and queue variables: host holds the address for57 # the machine on which the remote queue runs, and queue holds the name58 # of the printer59 33 my ($host, $queue); 60 34 61 # load the configuration file (this will set $host and $queue)62 35 if (-r $configpath) { 63 36 local $/; … … 67 40 } 68 41 69 # initialize a new CUPS session70 42 my $cups = Net::CUPS->new(); 71 # set the server to the one specified in the config file72 43 $cups->setServer("$host"); 73 # set the printer name to the one specified in the config file74 44 my $printer = $cups->getDestination("$queue"); 75 76 # if $printer is not defined, then throw an error77 45 unless( $printer){ 78 46 print "Cannot access queue $q...do you have network connectivity and permission to view the queue?\n"; 79 47 exit 1; 80 48 } 81 82 # get the list of jobs from the printer83 49 my @jobs = $printer->getJobs(0, 0); 84 85 # for each id that we want to remove86 50 foreach 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]; 51 if ($id eq "all") { 52 foreach $id(@jobs) { 99 53 cancel_job($id, $printer); 100 54 } 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) id109 else { 110 foreach my $item(@jobs){111 if($item =~ /$id/){112 cancel_job($item, $printer);113 }55 } 56 elsif ($id eq "current") { 57 $id = $jobs[0]; 58 cancel_job($id, $printer); 59 } 60 elsif ($id eq "last") { 61 $id = $jobs[-1]; 62 cancel_job($id, $printer); 63 } 64 else { 65 foreach my $item(@jobs) { 66 if($item =~ /$id/){ 67 cancel_job($item, $printer); 114 68 } 115 69 } 116 70 } 71 } 117 72 118 # helper function to remove a job119 73 sub cancel_job { 120 # get the id and printer from the arguments121 74 my ($id, $printer) = @_; 122 # get the reference to the job123 75 my $job_ref = $printer->getJob($id); 124 # find the job title (so we can print it out for the user)125 76 my $title = $job_ref->{'title'}; 126 # cancel the job127 77 $printer->cancelJob($id); 128 78 129 # print out that we canceled the job130 79 print "Canceled job '$title' (id $id)\n"; 80 131 81 }
Note: See TracChangeset
for help on using the changeset viewer.