Add sample version checking/caching script #3
90
version_check.pl
Executable file
90
version_check.pl
Executable file
@@ -0,0 +1,90 @@
|
||||
#!/usr/bin/perl
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
my %versions;
|
||||
|
||||
sub ReadCurrentMapping {
|
||||
if (!-f "versions.map") {
|
||||
return;
|
||||
}
|
||||
open my $fh, '<', "versions.map" or return;
|
||||
while (<$fh>) {
|
||||
chomp;
|
||||
my ($k, $v) = split ' ', $_, 2;
|
||||
$versions{$k} = $v if defined $k && defined $v;
|
||||
}
|
||||
close $fh;
|
||||
}
|
||||
|
||||
sub WriteCurrentMapping {
|
||||
open my $fh, '>', "versions.map" or die $!;
|
||||
for my $key (sort keys %versions) {
|
||||
print $fh "$key $versions{$key}\n";
|
||||
}
|
||||
close $fh;
|
||||
}
|
||||
|
||||
sub UpdateUnknownVersion {
|
||||
my ($p, $h) = @_;
|
||||
if (defined $versions{$h} && $versions{$h} ne '') {
|
||||
return;
|
||||
}
|
||||
print "Updating version for $p\n";
|
||||
system("GIT_LFS_SKIP_SMUDGE=1 git submodule update --init $p");
|
||||
my $spec = "$p/$p.spec";
|
||||
my $v = "";
|
||||
if (open my $fh, '<', $spec) {
|
||||
while (<$fh>) {
|
||||
if (/^Version:\s+(\S+)/) {
|
||||
$v = $1;
|
||||
last;
|
||||
}
|
||||
}
|
||||
close $fh;
|
||||
}
|
||||
print "Version: $v\n";
|
||||
$versions{$h} = $v;
|
||||
system("GIT_LFS_SKIP_SMUDGE=1 git submodule deinit $p");
|
||||
}
|
||||
|
||||
ReadCurrentMapping();
|
||||
|
||||
if (@ARGV) {
|
||||
my $target = $ARGV[0];
|
||||
open my $fh, "-|", "git ls-tree HEAD" or die $!;
|
||||
|
||||
loop:
|
||||
while (<$fh>) {
|
||||
if (/^160000 commit\s+(\S+)\s+(\S+)/) {
|
||||
my ($commitid, $package) = ($1, $2);
|
||||
if ($package eq $target) {
|
||||
if (exists $versions{$commitid}) {
|
||||
print "$package $versions{$commitid}\n";
|
||||
} else {
|
||||
UpdateUnknownVersion($package, $commitid);
|
||||
print "$package $versions{$commitid}\n";
|
||||
}
|
||||
last;
|
||||
}
|
||||
}
|
||||
}
|
||||
close $fh;
|
||||
} else {
|
||||
open my $fh, "-|", "git ls-tree HEAD" or die $!;
|
||||
my $count = 0;
|
||||
while (<$fh>) {
|
||||
if (/^160000 commit\s+(\S+)\s+(\S+)/) {
|
||||
my $commitid = $1;
|
||||
my $package = $2;
|
||||
UpdateUnknownVersion($package, $commitid);
|
||||
print "$commitid $package\n";
|
||||
#$count++;
|
||||
#last if $count > 2;
|
||||
}
|
||||
}
|
||||
close $fh;
|
||||
}
|
||||
|
||||
WriteCurrentMapping();
|
||||
|
3188
versions.map
Normal file
3188
versions.map
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user