#!/usr/bin/env perl # $Id$ # tlpsrc2tlpdb # convert a set of tlpsrc files (given as arguments) into tlpdb # # Copyright 2007 Norbert Preining # This file is licensed under the GNU General Public License version 2 # or any later version. BEGIN { $^W = 1; chomp ($mydir = `dirname $0`); unshift (@INC, "$mydir/.."); } use strict; use TeXLive::TLPSRC; use TeXLive::TLPOBJ; use TeXLive::TLPDB; use TeXLive::TLTREE; use Getopt::Long; use Pod::Usage; use File::Path; chomp (my $opt_master = `cd $::mydir/../.. && pwd`); our $opt_debug = 0; my $man = 0; my $help = 0; my $opt_catalogue = ""; GetOptions("debug!", # debug mode "master=s" => \$opt_master, # location of the tree "catalogue=s" => \$opt_catalogue, # location of the TeX Catalogue 'help|?' => \$help, man => \$man ) or pod2usage(2); pod2usage(1) if $help; pod2usage(-exitstatus => 0, -verbose => 2) if $man; if (! -d "$opt_master") { die "Master $opt_master does not exists!"; } my $tlc; if (! -d "$opt_catalogue") { warn "$0: -d /Cat/a/logue not given, continuing without it.\n"; } else { require TeXLive::TeXCatalogue; # not at compile time, for now anyway. $tlc = TeXLive::TeXCatalogue->new( 'location' => "$opt_catalogue" ); } my $tltree = TeXLive::TLTREE->new( 'svnroot' => "$opt_master" ); $tltree->init_from_svn; my $tldb = TeXLive::TLPDB->new; foreach my $f (@ARGV) { my $tlsrc = new TeXLive::TLPSRC; $tlsrc->from_file($f); my $tlp = $tlsrc->make_tlpobj($tltree); # now merge the TeX Catalogue Information, currently only license #xx set in struct somehow? my $tlcname = defined($tlp->catalogue) ? $tlp->catalogue : $tlp->name; if ($tlc) { $tlp->update_from_catalogue($tlc); } $tldb->add_tlpobj($tlp); } $tldb->writeout; __END__ =head1 NAME tlpsrc2tlpdb - converting tlpsrc files into tlpdb =head1 SYNOPSIS tlpsrc2tlpdb [OPTION]... [TLPSRC]... =head1 OPTIONS =over 8 =item B<-catalogue> I The location given by B<-catalogue> must point to a valid TeX Catalogue. No default value. If given, the generated tlpobj files will contain information gathered from the TeX Catalogue. =item B<-master> I The location given by B<-master> must point to a valid svn repository of TeX Live's Master direcory. Defaults to C<../..> of C<$0>. =back The standard options C<-help>, C<-debug>, and C<-man> are also accepted. See the tlpfiles documentation for details. =head1 DESCRIPTION B converts TeX Live Source Package files (tlpsrc) files into a TeX Live Package Database (tlpdb). If a TeX Catalogue is specified additional information from the catalogue are merged into the TeX Live Database (see L for the list of included information from the TeX Catalogue). =head1 AUTHORS AND COPYRIGHT This script and its documentation were written for the TeX Live distribution (L) and both are licensed under the GNU General Public License Version 2 or later. =cut ### Local Variables: ### perl-indent-level: 2 ### tab-width: 2 ### indent-tabs-mode: nil ### End: # vim:set tabstop=2 expandtab: #