1 # Batch EXecutor 3.0 -- Jobs
2 # (c) 2011-2012 Martin Mares <mj@ucw.cz>
15 return $id =~ /^([0-9A-Za-z-]+)$/;
19 my ($class, $id) = @_;
23 check_id($id) or die "Invalid job ID";
27 $job->{'ID'} = POSIX::strftime("%Y%m%d-%H%M%S-$$-$job_cnt", localtime);
29 $job->{'Subject'} = '';
33 sub new_from_file($$;$) {
34 my ($class, $file, $header_only) = @_;
36 open T, '<', $file or die "Cannot open $file: $!";
40 /^([A-Z][A-Za-z0-9-]*):\s*(.*)/ or die "Cannot load $file: Header syntax error";
41 !defined $job->{$1} or die "Cannot load $file: Header $1 re-defined";
46 $job->{'body'} = join("", @cmds);
49 $job->{'Subject'} //= '';
50 $job->{'ID'} or die "Cannot load $file: Missing ID";
51 check_id($job->{'ID'}) or die "Cannot load $file: Invalid ID syntax";
61 my $name = $job->{'ID'};
62 my $subj = $job->{'Subject'} // "";
63 $name .= " ($subj)" if $subj !~ /^\s*$/;
68 my ($job, $attr, $val) = @_;
69 $job->{$attr} = $val if defined $val;
75 for my $k (sort keys %$job) {
76 print "$k: ", $job->{$k}, "\n";
82 -d "tmp" or mkdir "tmp" or die "Cannot create directory tmp: $!";
83 $fn //= 'tmp/' . $job->id;
84 open T, '>', $fn or die "Cannot create $fn: $!";
85 for my $k (sort grep { /^[A-Z]/ } keys %$job) {
86 print T "$k: ", $job->{$k}, "\n";
89 print T $job->{'body'} if defined $job->{'body'};