diff options
Diffstat (limited to 'Master/tlpkg/tlperl/bin/ppd2par')
-rwxr-xr-x | Master/tlpkg/tlperl/bin/ppd2par | 167 |
1 files changed, 167 insertions, 0 deletions
diff --git a/Master/tlpkg/tlperl/bin/ppd2par b/Master/tlpkg/tlperl/bin/ppd2par new file mode 100755 index 00000000000..64bcb5dc3c7 --- /dev/null +++ b/Master/tlpkg/tlperl/bin/ppd2par @@ -0,0 +1,167 @@ +#!/usr/bin/perl +use strict; +use warnings; + +use Getopt::Long qw/GetOptions/; +use PAR::Dist::FromPPD; + +our $VERSION = '0.01'; + +=pod + +=head1 NAME + +ppd2par - Create PAR distributions from PPD XML files + +=head1 SYNOPSIS + +ppd2par --help + +ppd2par [-v -o DIR ...] -u PPD-URI-OR-FILE + +=head1 DESCRIPTION + +This script creates PAR distributions from packages for the +I<Perl Package Manager> which is specific to ActiveState's +perl distributions. In order to do this, F<ppd2par> parses +a PPD document (which is XML). The PPD document +contains meta data and URIs for the actual F<.tar.gz> packages +of the PPM package. + +=head2 Parameters + + -u --uri + Set the place to fetch the .ppd file from. Can be an URL + (http://..., https://..., ftp://...) or a local file. + -v --verbose + Sets the verbose mode. + -o --out + Sets the output directory. (default: .) + --no-docs + Strip all documentation (man pages, html documentation) from the + resulting PAR distribution. + (This step is carried out at the end. If something goes wrong, + it will be skipped.) + +You can also set various bits of meta data by hand: + + -n --distname + Distribution name + --dv --distversion + Distribution version (Note: This is not -v!) + -p --perlversion + Perl version (can be set to 'any_version') + -a --arch + Architecture string (can be set to 'any_arch') + --sa --selectarch + Regexp for selecting the implementation based on architecture + --sp --selectperl + Regexp for selecting the implementation based on perl version + +=head1 SEE ALSO + +This tool is implemented using the L<PAR::Dist::FromPPD> module. Please +refer to that module's documentation for details on how this all works. + +PAR has a mailing list, <par@perl.org>, that you can write to; send +an empty mail to <par-subscribe@perl.org> to join the list and +participate in the discussion. + +Please send bug reports to <bug-par-dist-fromcpan@rt.cpan.org>. + +The official PAR website may be of help, too: http://par.perl.org + +For details on the I<Perl Package Manager>, please refer to ActiveState's +website at L<http://activestate.com>. + +=head1 AUTHOR + +Steffen Mueller, E<lt>smueller at cpan dot orgE<gt> + +=head1 COPYRIGHT AND LICENSE + +Copyright (C) 2006 by Steffen Mueller + +This library is free software; you can redistribute it and/or modify +it under the same terms as Perl itself, either Perl version 5.6 or, +at your option, any later version of Perl 5 you may have available. + +=cut + +my $usage = <<"HERE"; +$0 --help # for help + +$0 [-v -o DIR --no-docs] -u PPD-URI-OR-FILE + +This script creates PAR distributions from packages for the +Perl Package Manager which is specific to ActiveState's +perl distributions. In order to do this, it parses +a PPD document (which is XML). The PPD document +contains meta data and URIs for the actual .tar.gz packages +of the PPM package. + +-u --uri + Set the place to fetch the .ppd file from. Can be an URL + (http://..., https://..., ftp://...) or a local file. +-v --verbose + Sets the verbose mode. +-o --out + Sets the output directory. (default: .) +--no-docs + Strip all documentation (man pages, html documentation) from the + resulting PAR distribution. + (This step is carried out at the end. If something goes wrong, + it will be skipped.) + +You can also set various bits of meta data by hand: +-n --distname + Distribution name +--dv --distversion + Distribution version (Note: This is not -v!) +-p --perlversion + Perl version (can be set to 'any_version') +-a --arch + Architecture string (can be set to 'any_arch') +--sa --selectarch + Regexp for selecting the implementation based on architecture +--sp --selectperl + Regexp for selecting the implementation based on perl version +HERE + +my $uri; +my $outdir = '.'; +my $v = 0; +my $nodocs = 0; +my $distname; +my $distversion; +my $arch; +my $perl; +my $sperl; +my $sarch; +GetOptions( + 'n|distname=s' => \$distname, + 'dv|distversion=s' => \$distversion, + 'a|arch=s' => \$arch, + 'p|perlversion=s' => \$perl, + 'sa|selectarch=s' => \$sarch, + 'sp|selectperl=s' => \$sperl, + 'h|help' => sub { print $usage; exit(1) }, + 'o|out=s' => \$outdir, + 'u|uri=s' => \$uri, + 'v|verbose' => \$v, + 'no-docs' => \$nodocs, +); + +ppd_to_par( + uri => $uri, + ($v ? (verbose => 1 ) : ()), + (defined($outdir) ? (out => $outdir ) : ()), + ($nodocs ? (strip_docs => 1 ) : ()), + ($distname ? (distname => $distname ) : ()), + ($distversion ? (distversion => $distversion ) : ()), + ($arch ? (arch => $arch ) : ()), + ($perl ? (perlversion => $perl ) : ()), + ($sarch ? (selectarch => $sarch ) : ()), + ($sperl ? (selectperl => $sperl ) : ()), +); + |