summaryrefslogtreecommitdiff
path: root/Master/tlpkg/bin/tlpdb2container
blob: cf75e5325033ed2b43c45667c6d28c1929c2c476 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
#!/usr/bin/env perl
# $Id: tlpdb2container 5188 2007-10-14 20:32:44Z karl $
# Copyright 2007 Norbert Preining
# This file is licensed under the GNU General Public License version 2
# or any later version.
# 
# Generate a zip file for the packages specified on the cmdline, or
# for -all

BEGIN {
  $^W = 1;
  ($mydir = $0) =~ s,/[^/]*$,,;
  unshift (@INC, "$mydir/..");
}

use strict;

use TeXLive::TLPOBJ;
use TeXLive::TLPDB;
use Getopt::Long;
use Pod::Usage;
use File::Path;

my $opt_all = 0;
our $mydir;
our $opt_debug = 0;
my $opt_type = "zip";
my $opt_outputdir = "./zip";
my $opt_relative = 0;
my $help = 0;

GetOptions("outputdir=s"	=> \$opt_outputdir, 
				   "all!"         => \$opt_all, 
					 "debug!"       => \$opt_debug,
					 "relative!"    => \$opt_relative,
					 "type=s"       => \$opt_type,
					 "help|?"       => \$help) or pod2usage(1);

pod2usage(-exitstatus => 0, -verbose => 2) if $help;

exit (&main ());

sub main
{
  # get the db.
  chomp (my $Master = `cd $mydir/../.. && pwd`);  # xx TLPDB should default
  my $tlpdb_path = "$Master/texlive.tlpdb";
  my $tlpdb = TeXLive::TLPDB->new ("location" => $tlpdb_path);
	die("Cannot load tlpdb at $tlpdb_path!\n") unless defined($tlpdb);
	my @packs;
	if ($opt_all) {
		@packs = $tlpdb->list_packages;
	} else {
		@packs = @ARGV;
	}
  # get list of packages.
  for my $pkg (@packs) {
    my $obj = $tlpdb->get_package ($pkg);
    die "$0: no TeX Live package named $pkg in $tlpdb_path.\n" if ! $obj;
		$obj->make_container($opt_type,$Master,$opt_outputdir,$pkg,$opt_relative);
  }
}



__END__

=head1 NAME

tlpdb2container - generate container files (zip,tar.lzma) of a package

=head1 SYNOPSIS

tlpdb2container [OPTION]... 

=head1 OPTIONS

=over 8

=item B<-all>
build container file for all packages present in the tlpdb.

=item B<-outputdir> I<outputdir>
The location where created container files are placed, defaults to ./zip.

=item B<-type> I<zip|lzma>
Specifies the type of container to be used. C<zip> generates zip files,
while C<lzma> generates .tar.lzma files.

=item B<-relative>
Create a relative package, see TeXLive::TLPOBJ.1 for details.

=back

The standard options C<-help> and C<-debug> are also accepted.
See the tlpfiles documentation for details.


=head1 DESCRIPTION

To distribute packages over the network and on installation media the 
packages are wrapped into container files. These container are either 
simple zip files or tar.lzma file containing all the files of the package.

B<tlpdb2container> generates container files from a TeX Live Database and the
respective installation.

=head1 AUTHORS AND COPYRIGHT

This script and its documentation were written for the TeX Live
distribution (L<http://tug.org/texlive>) 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: #