forked from pflanze/chj-scripts
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcache-apply
executable file
·56 lines (43 loc) · 1.01 KB
/
cache-apply
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#!/usr/bin/perl -w
# Sat Jun 15 17:01:12 BST 2013
(my $email='XXX%YYY,ch')=~ tr/%,/@./;
use strict;
$0=~ /(.*?)([^\/]+)\z/s or die "?";
my ($mydir, $myname)=($1,$2);
sub usage {
print STDERR map{"$_\n"} @_ if @_;
print "$myname cmd sourcefile(s) targetfile
Runs cmd sourcefile(s) targetfile unless targetfile exists and is
newer than the sourcefile(s).
Kind of a 'mini-make', but doesn't need config files.
(Christian Jaeger <$email>)
";
exit (@_ ? 1 : 0);
}
use Getopt::Long;
our $verbose=0;
#our $opt_dry;
GetOptions("verbose"=> \$verbose,
"help"=> sub{usage},
#"dry-run"=> \$opt_dry,
) or exit 1;
usage unless @ARGV>=2;
our $cmd=shift;
our $target= pop @ARGV;
our @sources= @ARGV;
use Chj::xperlfunc qw(Xstat xstat xexec);
sub build {
xexec $cmd, @sources, $target
}
if (my $t= Xstat $target) {
for my $source (@sources) {
my $s= xstat $source;
if ($t->mtime <= $s->mtime) {
build;
}
}
} else {
build;
}
#use Chj::ruse;
#use Chj::Backtrace; use Chj::repl; repl;