scripts: package-metadata add pkgindexjson call pkgindexjson
authorPaul Spooren <mail@aparcar.org>
Thu, 16 Sep 2021 21:34:53 +0000 (11:34 -1000)
committerPaul Spooren <mail@aparcar.org>
Fri, 24 Sep 2021 08:05:10 +0000 (22:05 -1000)
The new `pkgindexjson` call prints all package names and versions of a
feed in JSON format. This function can be used to print an overview of
packages and versions used for downstream tooling.

The script is entirely based on Petrs work on dependency visualisation.

Signed-off-by: Paul Spooren <mail@aparcar.org>
scripts/package-metadata.pl

index 6288584d65f58890bcdfa3f5d359c42672712ee6..1f657bc51f8f27c1364d7e8d0abadad166fecf05 100755 (executable)
@@ -619,6 +619,22 @@ END_JSON
        print "[$json]";
 }
 
+sub gen_package_index_json() {
+       my $json;
+       parse_package_metadata($ARGV[0]) or exit 1;
+       foreach my $name (sort {uc($a) cmp uc($b)} keys %package) {
+               my $pkg = $package{$name};
+               $json = <<"END_JSON";
+${json}
+"$name": "$pkg->{version}",
+END_JSON
+       }
+
+       $json =~ s/[\n\r]//g;
+       $json =~ s/\,$//;
+       print "{$json}";
+}
+
 sub parse_command() {
        GetOptions("ignore=s", \@ignore);
        my $cmd = shift @ARGV;
@@ -629,6 +645,7 @@ sub parse_command() {
                /^source$/ and return gen_package_source();
                /^pkgaux$/ and return gen_package_auxiliary();
                /^pkgmanifestjson$/ and return gen_package_manifest_json();
+               /^pkgindexjson$/ and return gen_package_index_json();
                /^license$/ and return gen_package_license(0);
                /^licensefull$/ and return gen_package_license(1);
                /^usergroup$/ and return gen_usergroup_list();
@@ -642,6 +659,7 @@ Available Commands:
        $0 source [file]                        Package source file information
        $0 pkgaux [file]                        Package auxiliary variables in makefile format
        $0 pkgmanifestjson [file]               Package manifests in JSON format
+       $0 pkgindexjson [file]                  Package name and version in JSON format
        $0 license [file]                       Package license information
        $0 licensefull [file]                   Package license information (full list)
        $0 usergroup [file]                     Package usergroup allocation list