#!/usr/bin/perl -w use v5.14; use Gruntmaster::Data; use IO::Prompter [ -style => 'bold', '-stdio', '-verbatim' ]; use POSIX qw/strftime/; ################################################## my $dsn = $ENV{GRUNTMASTER_DSN} // 'dbi:Pg:'; my $db = Gruntmaster::Data->connect($dsn); sub cmd_help{ exec perldoc => $0 } sub cmd_show{ my %columns = $db->job(shift)->get_columns; $columns{date} = strftime '%c', localtime $columns{date}; $columns{private} = $columns{private} ? 'yes' : 'no'; print <<END Date: $columns{date} Owner: $columns{owner} Problem: $columns{problem} Format: $columns{format} Daemon: $columns{daemon} Result text: $columns{result_text} Private: $columns{private} END } sub cmd_rm{ $db->job(shift)->delete } sub cmd_get{ my ($id, $col) = @_; say $db->job($id)->get_column($col) } sub cmd_set{ my ($id, %values) = @_; $db->job($id)->update(\%values) } sub cmd_rerun{ $db->job(shift)->rerun } ################################################## my $cmd = 'cmd_' . shift; cmd_help unless exists $main::{$cmd}; no strict 'refs'; $cmd->(@ARGV) if exists $main::{$cmd}; 1; __END__ =encoding utf-8 =head1 NAME gruntmaster-job - shell interface to Gruntmaster 6000 job log =head1 SYNOPSIS gruntmaster-job show id gruntmaster-job rm id gruntmaster-job get id key gruntmaster-job set id key value gruntmaster-job rerun id =head1 DESCRIPTION gruntmaster-job is a tool for managing jobs. =over =item B<show> I<id> Prints detailed information about the job with id I<id>. =item B<rm> I<id> Removes the job with id I<id>. =item B<set> I<id> I<key> I<value> Sets the I<key> configuration option of job I<id> to I<value>. =item B<get> I<id> I<key> Get the value of the I<key> configuration option of job I<id>. =item B<rerun> I<id> Reruns job I<id>. =back =head1 AUTHOR Marius Gavrilescu E<lt>marius@ieval.roE<gt> =head1 COPYRIGHT AND LICENSE Copyright (C) 2014 by Marius Gavrilescu This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.18.1 or, at your option, any later version of Perl 5 you may have available. =cut