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
|
#!/usr/bin/perl
$VERSION = '0.06';
=head1 NAME
cpansign - CPAN signature management utility
=head1 SYNOPSIS
% cpansign # verify an existing SIGNATURE, or
# make a new one if none exists
% cpansign file.par # verify or sign a PAR file
% cpansign sign # make signature; overwrites existing one
% cpansign -s # same thing
% cpansign verify # verify a signature
% cpansign -v # same thing
% cpansign -v --skip # ignore files in MANIFEST.SKIP
% cpansign help # display this documentation
% cpansign -h # same thing
=head1 DESCRIPTION
This utility lets you create and verify SIGNATURE files.
=cut
use strict;
use Module::Signature;
$Module::Signature::Verbose = 1;
my %cmd = (
s => 'sign',
v => 'verify',
h => 'help',
);
my $op = $ARGV[0]; $op =~ s/^--?// if defined $op;
my $dwim;
if (!$op or $op eq 'skip' or -e $op) {
$op = (-e 'SIGNATURE' ? 'verify' : 'sign');
$dwim = 1;
}
my $cmd = $cmd{substr($op, 0, 1)};
(system("perldoc $0"), exit) if $cmd eq 'help';
my @args;
push @args, (overwrite => '1') if $cmd eq 'sign';
push @args, (skip => '0') unless grep /^-?-?skip/, @ARGV;
if (my $sub = Module::Signature->can($cmd)) {
if (@ARGV and -e $ARGV[-1]) {
require PAR::Dist;
PAR::Dist::_verify_or_sign(
dist => $ARGV[-1],
$dwim ? () : (action => $cmd, @args)
);
}
else {
#if ($cmd eq 'sign') {
# exit unless Module::Signature::verify();
#}
exit($sub->(@args));
}
}
else {
die "Unknown command: '$op'.\n".
"Available actions: " . (join(', ', sort values %cmd)) . ".\n";
}
exit;
=head1 SEE ALSO
L<Module::Signature>
=head1 AUTHORS
Audrey Tang E<lt>autrijus@autrijus.orgE<gt>
=head1 COPYRIGHT
Copyright 2002, 2003, 2006 by Audrey Tang.
This program is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
See L<http://www.perl.com/perl/misc/Artistic.html>
=cut
|