mirror of
https://github.com/rkd77/elinks.git
synced 2024-12-04 14:46:47 -05:00
check-accelerator-contexts.pl has --help, --version, and exit codes.
It can also check multiple files listed on the command line.
This commit is contained in:
parent
9deceafa0b
commit
c8c4d087bf
@ -1,16 +1,27 @@
|
|||||||
#! /usr/bin/perl
|
#! /usr/bin/perl
|
||||||
|
# The copyright notice and license are in the POD at the bottom.
|
||||||
|
|
||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
use warnings;
|
||||||
use Locale::PO qw();
|
use Locale::PO qw();
|
||||||
|
use Getopt::Long qw(GetOptions);
|
||||||
|
use autouse 'Pod::Usage' => qw(pod2usage);
|
||||||
|
|
||||||
my %contexts;
|
my $VERSION = "1.0";
|
||||||
my($pofile) = @ARGV;
|
|
||||||
my $pos = do {
|
sub check_po_file
|
||||||
# Locale::PO 0.16 doesn't understand "#~" obsolete lines and spews warnings.
|
{
|
||||||
|
my($po_file_name) = @_;
|
||||||
|
my %contexts;
|
||||||
|
my $warnings = 0;
|
||||||
|
my $pos = do {
|
||||||
|
# Locale::PO 0.16 doesn't understand "#~" obsolete lines and
|
||||||
|
# spews warnings.
|
||||||
local $SIG{__WARN__} = sub {};
|
local $SIG{__WARN__} = sub {};
|
||||||
Locale::PO->load_file_asarray($pofile) or die "$pofile: $!";
|
Locale::PO->load_file_asarray($po_file_name)
|
||||||
};
|
or warn "$po_file_name: $!\n", return 2;
|
||||||
foreach my $po (@$pos) {
|
};
|
||||||
|
foreach my $po (@$pos) {
|
||||||
next if $po->fuzzy();
|
next if $po->fuzzy();
|
||||||
my $msgstr = $po->msgstr()
|
my $msgstr = $po->msgstr()
|
||||||
or next;
|
or next;
|
||||||
@ -24,17 +35,38 @@ foreach my $po (@$pos) {
|
|||||||
foreach my $context (split(/\s*,\s*/, $contexts)) {
|
foreach my $context (split(/\s*,\s*/, $contexts)) {
|
||||||
my $prev = $contexts{$context}{$accelerator};
|
my $prev = $contexts{$context}{$accelerator};
|
||||||
if (defined($prev)) {
|
if (defined($prev)) {
|
||||||
warn "$pofile: Accelerator conflict for \"$accelerator\" in \"$context\":\n";
|
warn "$po_file_name: Accelerator conflict for \"$accelerator\" in \"$context\":\n";
|
||||||
warn "$pofile: 1st msgid " . $prev->msgid() . "\n";
|
warn "$po_file_name: 1st msgid " . $prev->msgid() . "\n";
|
||||||
warn "$pofile: 1st msgstr " . $prev->msgstr() . "\n";
|
warn "$po_file_name: 1st msgstr " . $prev->msgstr() . "\n";
|
||||||
warn "$pofile: 2nd msgid " . $po->msgid() . "\n";
|
warn "$po_file_name: 2nd msgid " . $po->msgid() . "\n";
|
||||||
warn "$pofile: 2nd msgstr " . $po->msgstr() . "\n";
|
warn "$po_file_name: 2nd msgstr " . $po->msgstr() . "\n";
|
||||||
|
$warnings++;
|
||||||
} else {
|
} else {
|
||||||
$contexts{$context}{$accelerator} = $po;
|
$contexts{$context}{$accelerator} = $po;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
return $warnings ? 1 : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub show_version
|
||||||
|
{
|
||||||
|
print "check-accelerator-contexts.pl $VERSION\n";
|
||||||
|
pod2usage({-verbose => 99, -sections => "COPYRIGHT AND LICENSE",
|
||||||
|
-exitval => 0});
|
||||||
|
}
|
||||||
|
|
||||||
|
GetOptions("help" => sub { pod2usage(-verbose => 1, -exitval => 0) },
|
||||||
|
"version" => \&show_version)
|
||||||
|
or exit 2;
|
||||||
|
print(STDERR "$0: missing file operand\n"), exit 2 unless @ARGV;
|
||||||
|
my $max_error = 0;
|
||||||
|
foreach my $po_file_name (@ARGV) {
|
||||||
|
my $error = check_po_file($po_file_name);
|
||||||
|
$max_error = $error if $error > $max_error;
|
||||||
|
}
|
||||||
|
exit $max_error;
|
||||||
|
|
||||||
__END__
|
__END__
|
||||||
|
|
||||||
=head1 NAME
|
=head1 NAME
|
||||||
@ -44,7 +76,19 @@ accelerator keys.
|
|||||||
|
|
||||||
=head1 SYNOPSIS
|
=head1 SYNOPSIS
|
||||||
|
|
||||||
B<check-accelerator-contexts.pl> F<I<language>.pot>
|
B<check-accelerator-contexts.pl> F<I<language>.po> [...]
|
||||||
|
|
||||||
|
=head1 ARGUMENTS
|
||||||
|
|
||||||
|
=over
|
||||||
|
|
||||||
|
=item F<I<language>.po> [...]
|
||||||
|
|
||||||
|
The PO files to be scanned for conflicts. These files must include the
|
||||||
|
"accelerator_context" comments added by B<gather-accelerator-contexts.pl>.
|
||||||
|
If the special comments are missing, no conflicts will be found.
|
||||||
|
|
||||||
|
=back
|
||||||
|
|
||||||
=head1 DESCRIPTION
|
=head1 DESCRIPTION
|
||||||
|
|
||||||
@ -66,17 +110,13 @@ B<check-accelerator-contexts.pl> does not access the source files to
|
|||||||
which F<I<language>.po> refers. Thus, it does not matter if the line
|
which F<I<language>.po> refers. Thus, it does not matter if the line
|
||||||
numbers in "#:" lines are out of date.
|
numbers in "#:" lines are out of date.
|
||||||
|
|
||||||
=head1 ARGUMENTS
|
=head1 EXIT CODE
|
||||||
|
|
||||||
=over
|
0 if no conflicts were found.
|
||||||
|
|
||||||
=item F<I<language>.po>
|
1 if some conflicts were found.
|
||||||
|
|
||||||
The PO file to be scanned for conflicts. This file must include the
|
2 if the command line is invalid or a file cannot be read.
|
||||||
"accelerator_context" comments added by B<gather-accelerator-contexts.pl>.
|
|
||||||
If the special comments are missing, no conflicts will be found.
|
|
||||||
|
|
||||||
=back
|
|
||||||
|
|
||||||
=head1 BUGS
|
=head1 BUGS
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user