#!/usr/bin/env perl # $Id$ # tlpsrc2tlpobj - convert tlpsrc files (given as arguments) to tlpobj # 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::TLTREE; use Getopt::Long; use Pod::Usage; use File::Path; my $opt_master = "/src/TeX/texlive-svn/Master"; my $opt_outputdir = "./tlpobj"; 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 "outputdir=s" => \$opt_outputdir, '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!"; } if (! -d "$opt_outputdir") { mkpath("$opt_outputdir") or die "Cannot mkdir $opt_outputdir!"; } 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; foreach my $f (@ARGV) { my $tlsrc = new TeXLive::TLPSRC; $tlsrc->from_file($f); my $tlp = $tlsrc->make_tlpobj($tltree); my $tlcname = defined($tlp->catalogue) ? $tlp->catalogue : $tlp->name; if ($tlc) { $tlp->update_from_catalogue($tlc); } my $name = $tlp->name; open(FOO,">$opt_outputdir/$name.tlpobj") or die "Cannot create $opt_outputdir/$name.tlpobj!"; $tlp->writeout(\*FOO); close(FOO); } __END__ =head1 NAME tlpsrc2tlpobj - convert tlpsrc files into tlpobj files =head1 SYNOPSIS tlpsrc2tlpobj [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>. =item B<-outputdir> I Specifies the location where tlp files are created. Defaults to C<./tlp>. =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 Package Source files (tlpsrc) into TeX Live Package Object files (tlpobj). =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: #