7 defined $ENV{"MO_ROOT"} or die "Please set MO_ROOT to the contest root directory first.\n";
9 use lib $ENV{"MO_ROOT"} . "/submit";
10 use lib $ENV{"MO_ROOT"} . "/submit/lib/perl5";
16 @ARGV == 0 or die "Usage: remote-status\n";
18 my $conn = new MO::Submit;
19 $conn->connect or die $conn->{"error"} . "\n";
23 if (!defined $r) { die $conn->{"error"} . "\n"; }
24 my $err = $r->get("-");
25 if ($err) { die "$err\n"; }
28 my $r = new Sherlock::Object("!" => "STATUS");
29 $r = $conn->request($r);
31 #$r->write_indented(*STDOUT);
33 my %tasks = map { $_->get("T") => $_ } $r->getarray("(T");
34 foreach my $task (sort keys %tasks) {
35 my $t = $tasks{$task};
36 my %parts = map { $_->get("P") => $_ } $t->getarray("(P");
39 @pp = sort { $a <=> $b } @pp; # We expect that the parts are numeric
41 foreach my $part (@pp) {
42 my $p = $parts{$part};
44 $part eq $task or $name .= "/$part";
45 printf "%-16s", $name;
47 my $current_ver = $p->get("V");
49 foreach my $v ($p->getarray("(V")) {
50 if ($v && $v->get("V") == $current_ver) {
51 my $time = strftime("%H:%M:%S", localtime $v->get("T"));
53 "$part.", $v->get("X"), ", ",
54 $v->get("L"), " bytes, ",
55 $v->get("S"), " $time)\n";
59 $printed or print "---\n";