summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xMaster/texmf-dist/scripts/texlive/tlmgr.pl75
-rw-r--r--Master/tlpkg/TeXLive/TLPOBJ.pm14
2 files changed, 41 insertions, 48 deletions
diff --git a/Master/texmf-dist/scripts/texlive/tlmgr.pl b/Master/texmf-dist/scripts/texlive/tlmgr.pl
index 9354d9f8658..e3e9af9c597 100755
--- a/Master/texmf-dist/scripts/texlive/tlmgr.pl
+++ b/Master/texmf-dist/scripts/texlive/tlmgr.pl
@@ -1448,19 +1448,38 @@ Goodbye.
# the 1 is the silent mode!
init_tlmedia_or_die(1);
}
+ my $tlm;
+ if ($opts{"only-installed"}) {
+ $tlm = $localtlpdb;
+ } else {
+ # silent mode
+ init_tlmedia_or_die(1);
+ $tlm = $remotetlpdb;
+ }
+
#
# tlmgr info
# tlmgr info collection
# tlmgr info scheme
# these commands just list the packages/collections/schemes installed with
# a short list
+ my @whattolist;
$what = ($what || "-all");
- if ($what =~ m/^(collections|schemes|-all)$/i) {
- $ret |= show_list_of_packages($fmt, $what, @datafields);
- return ($ret);
+ if ($what =~ m/^collections$/i) {
+ @whattolist = $tlm->collections;
+ } elsif ($what =~ m/^schemes$/i) {
+ @whattolist = $tlm->schemes;
+ } elsif ($what =~ m/^-all$/i) {
+ if ($tlm->is_virtual) {
+ @whattolist = $tlm->list_packages("-all");
+ } else {
+ @whattolist = $tlm->list_packages;
+ }
+ # add also the local packages
+ TeXLive::TLUtils::push_uniq(@whattolist, $localtlpdb->list_packages);
+ } else {
+ @whattolist = ($what, @todo);
}
- # we are still here, so $what is defined and neither collection nor scheme,
- # so assume the arguments are package names
if ($opts{'data'}) {
if ($opts{'data'} ne "json") {
$fmt = "csv";
@@ -1474,7 +1493,8 @@ Goodbye.
}
print "[\n" if ($fmt eq "json");
my $first = 1;
- foreach my $ppp ($what, @todo) {
+ foreach my $ppp (@whattolist) {
+ next if ($ppp =~ m/^00texlive\./);
print "," if ($fmt eq "json" && !$first);
$first = 0;
$ret |= show_one_package($ppp, $fmt, @adds);
@@ -3623,9 +3643,13 @@ sub show_one_package_json {
#return($F_WARNING);
return($F_OK);
}
- my $tlp = ($is_installed ? $loctlp : $remtlp);
+ my $tlp = ($is_available ? $remtlp : $loctlp);
+ # add available, installed, lrev, rrev fields and remove revision field
my $str = $tlp->as_json(available => ($is_available ? $JSON::true : $JSON::false),
- installed => ($is_installed ? $JSON::true : $JSON::false));
+ installed => ($is_installed ? $JSON::true : $JSON::false),
+ lrev => ($is_installed ? $loctlp->revision : 0),
+ rrev => ($is_available ? $remtlp->revision : 0),
+ revision => undef);
print $str, "\n";
return($F_OK);
}
@@ -3990,41 +4014,6 @@ sub show_one_package_detail {
return($ret);
}
-sub show_list_of_packages {
- init_local_db();
- my ($fmt, $what, @datafields) = @_;
- my $ret = $F_OK;
- my $tlm;
- if ($opts{"only-installed"}) {
- $tlm = $localtlpdb;
- } else {
- # silent mode
- init_tlmedia_or_die(1);
- $tlm = $remotetlpdb;
- }
- my @whattolist;
- if ($what =~ m/^collections/i) {
- @whattolist = $tlm->collections;
- } elsif ($what =~ m/^schemes/i) {
- @whattolist = $tlm->schemes;
- } elsif ($what =~ m/^-all/i) {
- if ($tlm->is_virtual) {
- @whattolist = $tlm->list_packages("-all");
- } else {
- @whattolist = $tlm->list_packages;
- }
- } else {
- tlwarn("$prg: show_list_of_package: don't know what to list: $what\n");
- return($F_ERROR);
- }
- my @extra;
- foreach (@whattolist) {
- next if ($_ =~ m/^00texlive/);
- $ret |= show_one_package($_, $fmt, @datafields);
- }
- return($ret);
-}
-
# PINNING
#
# this action manages the pinning file
diff --git a/Master/tlpkg/TeXLive/TLPOBJ.pm b/Master/tlpkg/TeXLive/TLPOBJ.pm
index 95c5adeffbf..1530c1a06c8 100644
--- a/Master/tlpkg/TeXLive/TLPOBJ.pm
+++ b/Master/tlpkg/TeXLive/TLPOBJ.pm
@@ -426,8 +426,16 @@ sub as_json {
require JSON;
#my $json = JSON::PP->new->utf8;
my %foo = %{$self};
+ # set the additional args
+ for my $k (keys %addargs) {
+ if (defined($addargs{$k})) {
+ $foo{$k} = $addargs{$k};
+ } else {
+ delete($foo{$k});
+ }
+ }
# make sure numbers are encoded as numbers
- for my $k (qw/revision runsize docsize srcsize containersize
+ for my $k (qw/revision runsize docsize srcsize containersize lrev rrev
srccontainersize doccontainersize runcontainersize/) {
$foo{$k} += 0 if exists($foo{$k});
}
@@ -442,10 +450,6 @@ sub as_json {
$foo{'relocated'} = $JSON::false;
}
}
- # set the additional args
- for my $k (keys %addargs) {
- $foo{$k} = $addargs{$k};
- }
my $utf8_encoded_json_text = JSON::encode_json(\%foo); # $json->encode(\%foo);
return $utf8_encoded_json_text;
}