summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xMaster/texmf-dist/scripts/texlive/tlmgr.pl320
-rw-r--r--Master/texmf-dist/scripts/texlive/tlmgrgui.pl53
-rwxr-xr-xMaster/tlpkg/bin/tl-update-keywords14
3 files changed, 41 insertions, 346 deletions
diff --git a/Master/texmf-dist/scripts/texlive/tlmgr.pl b/Master/texmf-dist/scripts/texlive/tlmgr.pl
index a6da8eb001f..91b21bca056 100755
--- a/Master/texmf-dist/scripts/texlive/tlmgr.pl
+++ b/Master/texmf-dist/scripts/texlive/tlmgr.pl
@@ -187,17 +187,8 @@ sub main {
"search" => { "global" => 1,
"word" => 1,
"file" => 1,
- "keyword" => 1,
- "list" => 1,
- "all" => 1,
- "characterization" => 1,
- "functionality" => 1,
- "taxonomy" => 1 },
+ "all" => 1, },
"info" => { "list" => 1,
- "taxonomy" => 1,
- "keyword" => 1,
- "characterization" => 1,
- "functionality" => 1,
"only-installed" => 1 },
"dump-tlpdb" => { "local" => 1,
"remote" => 1 },
@@ -1191,15 +1182,7 @@ sub action_dumptlpdb {
#
sub action_info {
init_local_db();
- my $taxonomy;
- if ($opts{"taxonomy"} || $opts{"characterization"} || $opts{"functionality"}
- || $opts{"keyword"}) {
- $taxonomy = load_taxonomy_datafile();
- if (!defined($taxonomy)) {
- tlwarn("$prg: Cannot load taxonomy file, showing taxonomies not supported.\n");
- }
- }
- my ($what, @todo) = @ARGV;
+ my ($what,@todo) = @ARGV;
#
# tlmgr info
# tlmgr info collection
@@ -1213,7 +1196,7 @@ sub action_info {
# we are still here, so $what is defined and neither collection nor scheme,
# so assume the arguments are package names
foreach my $ppp ($what, @todo) {
- my ($pkg, $tag) = split '@', $ppp, 2;
+ my ($pkg, $tag) = split ('@', $ppp, 2);
my $tlpdb = $localtlpdb;
my $source_found;
my $tlp = $localtlpdb->get_package($pkg);
@@ -1365,36 +1348,6 @@ sub action_info {
print "cat-license: ", $tlp->cataloguedata->{'license'}, "\n"
if $tlp->cataloguedata->{'license'};
print "collection: ", @colls, "\n" if (@colls);
- if ($opts{"keyword"} || $opts{"taxonomy"}) {
- print "keywords: ";
- if (defined($taxonomy->{'by-package'}{'keyword'}{$pkg})) {
- print join(', ',@{$taxonomy->{'by-package'}{'keyword'}{$pkg}}), "\n";
- } else {
- print "(none found)\n";
- }
- }
- if ($opts{"functionality"} || $opts{"taxonomy"}) {
- print "function: ";
- if (defined($taxonomy->{'by-package'}{'functionality'}{$pkg})) {
- print join(', ',@{$taxonomy->{'by-package'}{'functionality'}{$pkg}}), "\n";
- } else {
- print "(none found)\n";
- }
- }
- if ($opts{"characterization"} || $opts{"taxonomy"}) {
- print "primary characterization: ";
- if (defined($taxonomy->{'by-package'}{'primary'}{$pkg})) {
- print $taxonomy->{'by-package'}{'primary'}{$pkg}, "\n";
- } else {
- print "(none found)\n";
- }
- print "secondary characterization: ";
- if (defined($taxonomy->{'by-package'}{'secondary'}{$pkg})) {
- print $taxonomy->{'by-package'}{'secondary'}{$pkg}, "\n";
- } else {
- print "(none found)\n";
- }
- }
if ($opts{"list"}) {
if ($tlp->category eq "Collection" || $tlp->category eq "Scheme") {
# in the case of collections of schemes we list the deps
@@ -1453,83 +1406,26 @@ sub action_info {
}
-
-# taxonomy subroutines
-#
-sub load_taxonomy_datafile {
- init_local_db();
- my $taxonomy;
- my $fpath = $localtlpdb->root
- . "/texmf-dist/scripts/texlive/var/texcatalogue.keywords";
- if (! -r $fpath) {
- tlwarn("$prg: taxonomy file $fpath not readable: $!\n");
- return;
- }
- if (!open (TAXF, $fpath)) {
- tlwarn("$prg: taxonomy file $fpath cannot be opened: $!\n");
- return;
- }
- # suck in the whole file contents
- my @foo = <TAXF>;
- close(TAXF);
- my $foo = "@foo";
- no strict "vars";
- # the no strict "vars" is *ABSOLUTELY* necessary otherwise the file is
- # not evaluated, no idea why!
- eval "$foo";
- use strict "vars";
- return $taxonomy;
-}
-
-sub walk_level_tree {
- my $cp = shift;
- my $prestring = shift;
- my $print_packages = shift;
- if (defined($cp->{'_packages_'})) {
- print "$prestring\n";
- if ($print_packages) {
- my @pkgs = sort @{$cp->{'_packages_'}};
- print "\t@pkgs\n";
- }
- }
- for my $cz (keys %$cp) {
- if ($cz ne '_packages_') {
- my $nextstring = "$prestring > $cz";
- my $np = $cp->{$cz};
- &walk_level_tree($np,$nextstring);
- }
- }
-}
-
# SEARCH
#
sub action_search {
- my $r = shift @ARGV;
+ my ($r) = @ARGV;
my $ret = "";
my $tlpdb;
- my $taxonomy;
- #
- if (!$opts{"list"} && (!defined($r) || !$r)) {
-
- tlwarn("$prg: nothing to search for.\n");
- return;
- }
- if ($opts{"extended"}) {
- tlwarn("$prg: sorry, extended searching not implemented by now.\n");
- return;
- }
# check the arguments
my $search_type_nr = 0;
$search_type_nr++ if $opts{"file"};
- $search_type_nr++ if $opts{"taxonomy"};
- $search_type_nr++ if $opts{"characterization"};
- $search_type_nr++ if $opts{"functionality"};
- $search_type_nr++ if $opts{"keyword"};
$search_type_nr++ if $opts{"all"};
if ($search_type_nr > 1) {
- tlwarn("$prg: please specify only one thing to search for!\n");
+ tlwarn("$prg: please specify only one thing to search for\n");
return;
}
+ #
+ if (!defined($r) || !$r) {
+ tlwarn("$prg: nothing to search for.\n");
+ return;
+ }
+
init_local_db();
if ($opts{"global"}) {
init_tlmedia_or_die();
@@ -1537,49 +1433,9 @@ sub action_search {
} else {
$tlpdb = $localtlpdb;
}
- my $search_characterization =
- $opts{"characterization"} || $opts{"taxonomy"} || $opts{"all"};
- my $search_functionality =
- $opts{"functionality"} || $opts{"taxonomy"} || $opts{"all"};
- my $search_keyword =
- $opts{"keyword"} || $opts{"taxonomy"} || $opts{"all"};
- my $search_tlpdb =
- $opts{"all"} ||
- !($opts{"taxonomy"} || $opts{"characterization"} ||
- $opts{"functionality"} || $opts{"keyword"});
- if ($opts{"all"} || $opts{"taxonomy"} || $opts{"characterization"}
- || $opts{"functionality"} || $opts{"keyword"}) {
- $taxonomy = load_taxonomy_datafile();
- if (!defined($taxonomy)) {
- tlwarn("$prg: Cannot load taxonomy file;",
- " searching/listing for taxonomies not supported.\n");
- return;
- }
- if ($opts{"list"}) {
- if ($search_keyword) {
- print "\f Keywords:\n";
- for (sort keys %{$taxonomy->{'by-taxonomy'}{'keyword'}}) {
- print "\t$_\n";
- }
- print "\n";
- }
- if ($search_functionality) {
- print "\f Functionalities:\n";
- &walk_level_tree($taxonomy->{'by-taxonomy'}{'functionality'}, "", 0);
- print "\n";
- }
- if ($search_characterization) {
- # Assume all possible characterizations occur under the primary ones!
- print "\f Characterizations:\n";
- &walk_level_tree($taxonomy->{'by-taxonomy'}{'primary'}, "", 0);
- print "\n";
- }
- return;
- }
- }
foreach my $pkg ($tlpdb->list_packages) {
my $tlp = $tlpdb->get_package($pkg);
- if ($opts{"file"}) {
+ if ($opts{"file"} || $opts{"all"}) {
my @files = $tlp->all_files;
if ($tlp->relocated) {
for (@files) { s:^$RelocPrefix/:$RelocTree/:; }
@@ -1593,36 +1449,14 @@ sub action_search {
}
} else {
next if ($pkg =~ m/\./);
- # the other searching is done together
- my $t = "";
- if ($search_keyword) {
- $t = $t . join('\n', @{$taxonomy->{'by-package'}{'keyword'}{$pkg}})
- if (defined($taxonomy->{'by-package'}{'keyword'}{$pkg}));
- }
- if ($search_functionality) {
- $t = $t.join('\n', @{$taxonomy->{'by-package'}{'functionality'}{$pkg}})
- if (defined($taxonomy->{'by-package'}{'functionality'}{$pkg}));
- }
- if ($search_characterization) {
- $t = "$t$taxonomy->{'by-package'}{'primary'}{$pkg}\n"
- if (defined($taxonomy->{'by-package'}{'primary'}{$pkg}));
- $t = "$t$taxonomy->{'by-package'}{'secondary'}{$pkg}\n"
- if (defined($taxonomy->{'by-package'}{'secondary'}{$pkg}));
- }
- if ($search_tlpdb) {
- $t .= "$pkg\n";
- $t = "$t" . $tlp->shortdesc . "\n"
- if (defined($tlp->shortdesc));
- $t = "$t" . $tlp->longdesc . "\n"
- if (defined($tlp->longdesc));
- }
- my $shortdesc = $tlp->shortdesc;
- $shortdesc |= "";
+ # glom description strings together for one search
+ my $t = "$pkg\n";
+ $t = $t . $tlp->shortdesc . "\n" if (defined($tlp->shortdesc));
+ $t = $t . $tlp->longdesc . "\n" if (defined($tlp->longdesc));
my $pat = $r;
- if ($opts{"word"}) {
- $pat = '\W' . $r . '\W';
- }
+ $pat = '\W' . $r . '\W' if ($opts{"word"});
if ($t =~ m/$pat/i) {
+ my $shortdesc = $tlp->shortdesc || "";
$ret .= " $pkg - $shortdesc\n";
}
}
@@ -6587,18 +6421,6 @@ not be used; only locally installed packages, collections, or schemes
are listed.
(Does not work for listing of packages for now)
-=item B<--taxonomy>
-
-=item B<--keyword>
-
-=item B<--functionality>
-
-=item B<--characterization>
-
-In addition to the normal data displayed, also display information for
-given packages from the corresponding taxonomy (or all of them). See
-L</TAXONOMIES> below for details.
-
=back
@@ -7038,66 +6860,35 @@ otherwise, all operations will fail!
=head3 search [I<option>...] --file I<what>
-=head3 search [I<option>...] --taxonomy I<what>
-
-=head3 search [I<option>...] --keyword I<what>
-
-=head3 search [I<option>...] --functionality I<what>
-
-=head3 search [I<option>...] --characterization I<what>
-
=head3 search [I<option>...] --all I<what>
By default, search the names, short descriptions, and long descriptions
of all locally installed packages for the argument I<what>, interpreted
-as a regular expression.
+as a (Perl) regular expression.
Options:
=over 4
-=item B<--global>
-
-Search the TeX Live Database of the installation medium, instead of the
-local installation.
-
-=item B<--word>
-
-Restrict the search to match only full words. For example, searching for
-C<table> with this option will not output packages containing the
-word C<tables> (unless they also contain the word C<table> on its own).
-
-=item B<--list>
-
-If a search for any (or all) taxonomies is done, by specifying one of
-the taxonomy options below, then instead of searching for packages, list
-the entire corresponding taxonomy (or all of them). See
-L</TAXONOMIES> below.
-
-=back
-
-Other search options are selected by specifying one of the following:
-
-=over 4
-
=item B<--file>
List all filenames containing I<what>.
-=item B<--taxonomy>
-
-=item B<--keyword>
+=item B<--all>
-=item B<--functionality>
+Search everything: package names, descriptions and filenames.
-=item B<--characterization>
+=item B<--global>
-Search in the corresponding taxonomy (or all) instead of the package
-descriptions. See L</TAXONOMIES> below.
+Search the TeX Live Database of the installation medium, instead of the
+local installation.
-=item B<--all>
+=item B<--word>
-Search for package names, descriptions, and taxonomies, but not files.
+Restrict the search of package names and descriptions (but not
+filenames) to match only full words. For example, searching for
+C<table> with this option will not output packages containing the word
+C<tables> (unless they also contain the word C<table> on its own).
=back
@@ -7409,52 +7200,6 @@ switches between the full GUI and a simplified GUI with only the
important and mostly used settings.
-=head1 TAXONOMIES
-
-tlmgr allows searching and listing of various categorizations, which we
-call I<taxonomies>, as provided by an enhanced TeX Catalogue (available
-for testing at L<http://az.ctan.org>). This is useful when, for
-example, you don't know a specific package name but have an idea of the
-functionality you need; or when you want to see all packages relating to
-a given area.
-
-There are three different taxonomies, specified by the following
-options:
-
-=over 4
-
-=item C<--keyword>
-
-The keywords, as specified at L<http://az.ctan.org/keyword>.
-
-=item C<--functionality>
-
-The ``by-topic'' categorization created by J\"urgen Fenn, as specified
-at L<http://az.ctan.org/characterization/by-function>.
-
-=item C<--characterization>
-
-Both the primary and secondary functionalities, as specified at
-L<http://az.ctan.org/characterization/choose_dimen>.
-
-=item C<--taxonomy>
-
-Operate on all the taxonomies.
-
-=back
-
-The taxonomies are updated nightly and stored within TeX Live, so
-Internet access is not required to search them.
-
-Examples:
-
- tlmgr search --taxonomy exercise # check all taxonomies for "exercise"
- tlmgr search --taxonomy --word table # check for "table" on its own
- tlmgr search --list --keyword # dump entire keyword taxonomy
- tlmgr show --taxonomy pdftex # show pdftex package information,
- # including all taxonomy entries
-
-
=head1 MULTIPLE REPOSITORIES
The main TeX Live repository contains a vast array of packages.
@@ -7595,10 +7340,9 @@ above.
=item Match
-Select packages matching for a specific pattern. By default, this uses
-the same algorithm as C<tlmgr search>, i.e., searches everything:
-descriptions, taxonomies, and/or filenames. You can also select any
-subset for searching.
+Select packages matching for a specific pattern. By default, this
+searches both descriptions and filenames. You can also select a subset
+for searching.
=item Selection
diff --git a/Master/texmf-dist/scripts/texlive/tlmgrgui.pl b/Master/texmf-dist/scripts/texlive/tlmgrgui.pl
index 85e9c4d7092..6a469c5c37f 100644
--- a/Master/texmf-dist/scripts/texlive/tlmgrgui.pl
+++ b/Master/texmf-dist/scripts/texlive/tlmgrgui.pl
@@ -88,7 +88,6 @@ my @htype = qw/-relief ridge/;
# the list of packages as shown by TixGrid
#
my %Packages;
-my $taxonomy;
my $mw;
my $tlmgrrev;
my $menu;
@@ -126,7 +125,6 @@ my $show_collections = 1;
my $show_schemes = 1;
my $match_descriptions = 1;
my $match_filenames = 1;
-my $match_taxonomies = 1;
my $match_text = "";
my $selection_value = 0;
@@ -217,10 +215,6 @@ sub guimain {
chomp($tlmgrrev);
setup_menu_system();
- $taxonomy = load_taxonomy_datafile();
- if (!defined($taxonomy)) {
- info(__("Cannot load taxonomy file") . "\n");
- }
do_rest_of_gui();
$bgcolor = $loaded_text->cget('-background');
@@ -341,10 +335,6 @@ sub do_rest_of_gui {
$filter_match->Checkbutton(-text => __("descriptions"),
-command => \&update_grid,
-variable => \$match_descriptions)->pack(@a_w);
- $filter_match->Checkbutton(-text => __("taxonomies"),
- -command => \&update_grid,
- -state => (defined($taxonomy) ? "normal" : "disabled"),
- -variable => \$match_taxonomies)->pack(@a_w);
$filter_match->Checkbutton(-text => __("filenames"),
-command => \&update_grid,
-variable => \$match_filenames)->pack(@a_w);
@@ -354,13 +344,11 @@ sub do_rest_of_gui {
my ($new_val, undef, $old_val) = @_;
# if (!$new_val) {
# $match_descriptions = 0;
- # $match_taxonomies = 0;
# $match_filenames = 0;
# } else {
# # if something is already in the search field don't change selection
# if (!$old_val) {
# $match_descriptions = 1;
- # $match_taxonomies = 1 if (defined($taxonomy));
# $match_filenames = 1;
# }
# }
@@ -394,7 +382,6 @@ sub do_rest_of_gui {
$show_schemes = 1;
$selection_value = 0;
$match_descriptions = 1;
- $match_taxonomies = 1;
$match_filenames = 1;
update_grid();
})->pack(@x_x, @a_c);
@@ -947,7 +934,7 @@ sub MatchesFilters {
# + no search target selected
# -> show empty list (maybe show warning "select something")
#
- if ($match_descriptions || $match_taxonomies || $match_filenames) {
+ if ($match_descriptions || $match_filenames) {
my $found = 0;
my $r = $match_text;
if ($r eq "") {
@@ -963,14 +950,7 @@ sub MatchesFilters {
$found = 1;
}
}
- if (!$found) {
- if (defined($taxonomy) && $match_taxonomies) {
- if ($Packages{$p}{'taxonomy'} =~ m/$r/i) {
- $found = 1;
- }
- }
- }
- # if we already dound, don't check the next condition!
+ # if we already found something, don't check the next condition!
if (!$found) {
if ($match_filenames) {
if ($Packages{$p}{'match_files'} =~ m/$r/i) {
@@ -2060,35 +2040,6 @@ sub populate_Packages {
$Packages{$p}{'match_desc'} .= "\n";
$Packages{$p}{'match_desc'} .= ($tlp->longdesc || "");
#
- # taxonomy matching
- if (defined($taxonomy)) {
- $Packages{$p}{'taxonomy'} = "";
- if (defined($taxonomy->{'by-package'}{'keyword'}{$p})) {
- $Packages{$p}{'keyword'} =
- join(", ", @{$taxonomy->{'by-package'}{'keyword'}{$p}});
- $Packages{$p}{'taxonomy'} .=
- join('\n', @{$taxonomy->{'by-package'}{'keyword'}{$p}});
- $Packages{$p}{'taxonomy'} .= '\n';
- }
- if (defined($taxonomy->{'by-package'}{'functionality'}{$p})) {
- $Packages{$p}{'functionality'} =
- join(' > ', @{$taxonomy->{'by-package'}{'functionality'}{$p}});
- $Packages{$p}{'taxonomy'} .=
- join('\n', @{$taxonomy->{'by-package'}{'functionality'}{$p}});
- $Packages{$p}{'taxonomy'} .= '\n';
- }
- if (defined($taxonomy->{'by-package'}{'primary'}{$p})) {
- $Packages{$p}{'primary'} = $taxonomy->{'by-package'}{'primary'}{$p};
- $Packages{$p}{'taxonomy'} .= $taxonomy->{'by-package'}{'primary'}{$p};
- $Packages{$p}{'taxonomy'} .= "\n";
- }
- if (defined($taxonomy->{'by-package'}{'secondary'}{$p})) {
- $Packages{$p}{'secondary'} = $taxonomy->{'by-package'}{'secondary'}{$p};
- $Packages{$p}{'taxonomy'} .= $taxonomy->{'by-package'}{'secondary'}{$p};
- $Packages{$p}{'taxonomy'} .= "\n";
- }
- }
- #
# file matching
my @all_f = $tlp->all_files;
if ($tlp->relocated) { for (@all_f) { s:^$RelocPrefix/:$RelocTree/:; } }
diff --git a/Master/tlpkg/bin/tl-update-keywords b/Master/tlpkg/bin/tl-update-keywords
index f7e76750f1a..72f57be5163 100755
--- a/Master/tlpkg/bin/tl-update-keywords
+++ b/Master/tlpkg/bin/tl-update-keywords
@@ -3,7 +3,7 @@
# parse a TeXCatalogue v2 .xml dump containing keywords and
# characterizations
#
-# Copyright 2010, 2011 Norbert Preining
+# Copyright 2010-2014 Norbert Preining
# This file is licensed under the GNU General Public License version 2
# or any later version.
@@ -37,7 +37,7 @@ GetOptions(
"help|?" => \$help) or pod2usage(1);
pod2usage(-exitstatus => 0, -verbose => 2) if $help;
-my $progname = TeXLive::TLUtils::basename($0);
+my $prg = TeXLive::TLUtils::basename($0);
exit (&main());
@@ -48,7 +48,7 @@ sub main
if (!defined($tcfile)) {
$io = \*STDIN;
} else {
- -f $tcfile || die "$progname: argument to --input is not a file: $!\n";
+ -f $tcfile || die "$prg: argument to --input is not a file: $!\n";
open($io, "<", $tcfile) || die "Cannot open input file $tcfile: $!";
}
@@ -62,8 +62,8 @@ sub main
open($out, ">$output") || die "Cannot open output file $output: $!";
}
chomp (my $date = `LC_ALL=C date`);
- chomp (my $progname = `basename $0`);
- print $out "# Generated $date by $progname.\n";
+ chomp (my $prg = `basename $0`);
+ print $out "# Generated $date by $prg.\n";
print $out Data::Dumper->Dump([\%taxonomy], ["taxonomy"]), $/;
}
@@ -213,11 +213,11 @@ __END__
=head1 NAME
-parse-texcatalogue-keywords - parse the experimental TeX Catalogue
+tl-update-keywords - parse the experimental TeX Catalogue
=head1 SYNOPSIS
-parse-texcatalogue-keywords [--input ....] [--output ...] [--help|-h|-?]
+tl-update-keywords [--input ....] [--output ...] [--help|-h|-?]
=head1 DESCRIPTION