💄 library.pl: tidy up

This commit is contained in:
Zak B. Elep 2021-05-21 17:31:25 +08:00
parent f36481da3b
commit e2fb512ba5

View file

@ -5,9 +5,10 @@ use warnings;
use YAML::XS; use YAML::XS;
my %arches = ( my %arches = (
# https://github.com/docker-library/official-images/blob/master/library/debian
buster => 'amd64, arm32v7, arm64v8, i386, ppc64le, s390x', # https://github.com/docker-library/official-images/blob/master/library/debian
stretch => 'amd64, arm32v7, arm64v8, i386', buster => 'amd64, arm32v7, arm64v8, i386, ppc64le, s390x',
stretch => 'amd64, arm32v7, arm64v8, i386',
); );
print <<"END_HEADER"; print <<"END_HEADER";
@ -19,38 +20,38 @@ Architectures: $arches{buster}
END_HEADER END_HEADER
sub suffix { sub suffix {
my $suffix = shift; my $suffix = shift;
return map { $_ eq 'latest' ? $suffix : $_ . '-' . $suffix } @_; map { $_ eq 'latest' ? $suffix : $_ . '-' . $suffix } @_;
} }
sub entry { sub entry {
my $version = shift; my $version = shift;
my $build = shift; my $build = shift;
my $debian = shift; my $debian = shift;
my $eol = shift // 0; my $eol = shift // 0;
my @versionAliases = (); my @versionAliases = ();
my @version = split /[.]/, $version; my @version = split /[.]/, $version;
for my $i (reverse 0 .. @version-1) { for my $i (reverse 0 .. @version - 1) {
push @versionAliases, join '.', @version[0 .. $i]; push @versionAliases, join '.', @version[0 .. $i];
} }
push @versionAliases, 'latest'; push @versionAliases, 'latest';
(my $buildSuffix = $build) =~ s/^main,//; (my $buildSuffix = $build) =~ s/^main,//;
$buildSuffix =~ s/,/-/g; $buildSuffix =~ s/,/-/g;
my @buildAliases = ($build eq 'main' ? @versionAliases : suffix $buildSuffix, @versionAliases); my @buildAliases = ($build eq 'main' ? @versionAliases : suffix $buildSuffix, @versionAliases);
my @debianAliases = suffix $debian, @buildAliases; my @debianAliases = suffix $debian, @buildAliases;
my @aliases = ( ($eol ? () : @buildAliases), @debianAliases ); my @aliases = (($eol ? () : @buildAliases), @debianAliases);
state %latest = (); state %latest = ();
@aliases = grep { !defined $latest{$_} } @aliases; @aliases = grep { !defined $latest{$_} } @aliases;
@latest{ @aliases } = ( 1 ) x @aliases; @latest{@aliases} = (1) x @aliases;
print <<~"END_ENTRY"; print <<~"END_ENTRY";
Tags: @{[ join ', ', @aliases ]}@{[ defined $arches{$debian} ? "\nArchitectures: $arches{$debian}" : '' ]} Tags: @{[ join ', ', @aliases ]}@{[ defined $arches{$debian} ? "\nArchitectures: $arches{$debian}" : '' ]}
Directory: @{[ ($eol ? 'eol/' : '') . sprintf '%i.%03i.%03i-%s-%s', @version, $build, $debian ]} Directory: @{[ ($eol ? 'eol/' : '') . sprintf '%i.%03i.%03i-%s-%s', @version, $build, $debian ]}
@ -58,26 +59,26 @@ sub entry {
} }
sub release { sub release {
my $release = shift; my $release = shift;
my $builds = shift; my $builds = shift;
my $eol = shift // 0; my $eol = shift // 0;
my @builds = (@$builds, map { "$_,threaded" } @$builds); my @builds = (@$builds, map {"$_,threaded"} @$builds);
for my $build (@builds) { for my $build (@builds) {
for my $debian (reverse @{ $release->{debian_release} }) { for my $debian (reverse @{$release->{debian_release}}) {
entry $release->{version}, $build, $debian, $eol; entry $release->{version}, $build, $debian, $eol;
} }
} }
} }
my $config = do { my $config = do {
open my $fh, '<', 'config.yml' or die "Couldn't open config"; open my $fh, '<', 'config.yml' or die "Couldn't open config";
local $/; local $/;
Load <$fh>; Load <$fh>;
}; };
release $_, $config->{builds} for (reverse @{ $config->{releases} }); release $_, $config->{builds} for reverse @{$config->{releases}};
exit unless @ARGV == 1 && $ARGV[0] eq '--eol'; exit unless @ARGV == 1 && $ARGV[0] eq '--eol';
@ -91,9 +92,9 @@ print <<END_EOL_COMMENT;
END_EOL_COMMENT END_EOL_COMMENT
$config = do { $config = do {
open my $fh, '<', 'eol/config.yml' or die "Couldn't open config"; open my $fh, '<', 'eol/config.yml' or die "Couldn't open config";
local $/; local $/;
Load <$fh>; Load <$fh>;
}; };
release $_, $config->{builds}, 1 for (reverse @{ $config->{releases} }); release $_, $config->{builds}, 1 for reverse @{$config->{releases}};