Add gruntmaster-job
authorMarius Gavrilescu <marius@ieval.ro>
Thu, 16 Jan 2014 15:55:27 +0000 (17:55 +0200)
committerMarius Gavrilescu <marius@ieval.ro>
Thu, 16 Jan 2014 15:55:27 +0000 (17:55 +0200)
Makefile.PL
gruntmaster-job [new file with mode: 0755]
lib/Gruntmaster/Data.pm

index 822a1c7ee59c4518f056470ba60361ccc03e50a3..3a7901cb835174acd7dd04a0db6e0ddde4489e80 100644 (file)
@@ -4,7 +4,7 @@ use ExtUtils::MakeMaker;
 WriteMakefile(
   NAME              => 'Gruntmaster::Page',
   VERSION_FROM      => 'lib/Gruntmaster/Page.pm',
-  EXE_FILES         => [ qw/gruntmaster-genpage gruntmaster-genallpages gruntmaster-paged gruntmaster-problem/ ],
+  EXE_FILES         => [ qw/gruntmaster-genpage gruntmaster-genallpages gruntmaster-paged gruntmaster-problem gruntmaster-job/ ],
   ABSTRACT_FROM     => 'lib/Gruntmaster/Page.pm',
   AUTHOR            => 'Marius Gavrilescu <marius@ieval.ro>',
   MIN_PERL_VERSION  => '5.14.0',
diff --git a/gruntmaster-job b/gruntmaster-job
new file mode 100755 (executable)
index 0000000..b454ad4
--- /dev/null
@@ -0,0 +1,65 @@
+#!/usr/bin/perl -w
+use v5.14;
+
+use Gruntmaster::Data qw/jobcard job_date job_user job_problem job_filesize job_private job_result_text job_daemon clean_job problem_name PUBLISH HDEL/;
+
+use IO::Prompter [ -style => 'bold', '-stdio', '-verbatim' ];
+use File::Slurp qw/read_file/;
+use Term::ANSIColor qw/RED RESET/;
+use POSIX qw/strftime/;
+
+##################################################
+
+sub cmd_help{
+       exec perldoc => $0
+}
+
+sub cmd_card{
+       my $contest = shift;
+       print jobcard;
+}
+
+sub cmd_show{
+       local $_ = shift or goto &cmd_list;
+       say "Date: " , strftime ('%c', localtime job_date);
+       say "User: ", job_user;
+       say "Problem: ", problem_name job_problem;
+       say "Size: ", sprintf "%.2fKB", job_filesize() / 1024;
+       say "Private: ", (job_private() ? 'yes' : 'no');
+       say "Result text: ", job_result_text;
+       say "Daemon: ", job_daemon;
+}
+
+sub cmd_rerun{
+       local $_ = shift or goto &cmd_list;
+       clean_job;
+       PUBLISH jobs => $_;
+}
+
+##################################################
+
+no strict 'refs';
+my $cmd = 'cmd_' . shift;
+cmd_help unless exists $main::{$cmd};
+$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 card
+  gruntmaster-job show 5
+  gruntmaster-job rerun 7
+
+=head1 DESCRIPTION
+
+
+
+=cut
index 9504cf849b7220c6e658fc16c33a283cc5f2fd57..2f8a18470a1965c0e154dfad1c5de4cce0c1bbda 100644 (file)
@@ -17,7 +17,7 @@ sub dynsub{
 }
 
 BEGIN {
-       for my $cmd (qw/multi exec smembers get hget hset sadd srem incr hmset hsetnx/) {
+       for my $cmd (qw/multi exec smembers get hget hdel hset sadd srem incr hmset hsetnx/) {
                dynsub uc $cmd, sub { say "Arguments to \U$cmd: ", join ', ', @_; $redis->$cmd(@_) };
        }
 
@@ -73,6 +73,10 @@ defhash contest => qw/start end name owner/;
 defhash job => qw/date extension filesize private problem result result_text user/;
 defhash user => qw/name email town university/;
 
+sub clean_job (_){
+       HDEL cp . "job.$_[0]", qw/result result_text results daemon/
+}
+
 our @EXPORT_OK = do {
        no strict 'refs';
        grep { $_ =~ /^[a-zA-Z]/ and exists &$_ } keys %{__PACKAGE__ . '::'};
This page took 0.013413 seconds and 4 git commands to generate.