add pre-commit script

This commit is contained in:
tateisu 2018-08-31 22:51:40 +09:00
parent cdb424cce6
commit 9d4f86b0a7
1 changed files with 68 additions and 0 deletions

View File

@ -0,0 +1,68 @@
#!/usr/bin/perl --
use XML::Parser;
use strict;
use warnings;
use File::Find;
my @files;
find(sub{
return if not -f $_;
($_ eq "strings.xml") and push @files,$File::Find::name;
},"app/src/main/res/");
@files or die "missing string files.\n";
my %langs;
for my $file(@files){
my $lang;
if( $file =~ m|values-([^/]+)| ){
$lang = $1;
}else{
$lang="master";
}
my %names;
my $parser = XML::Parser->new(Handlers => {
Start => sub{
my($expat,$element)=@_;
if( $element eq "string" ){
my $ie=0+@_;
for(my $i=2;$i<$ie;$i+=2){
my $k=$_[$i];
my $v=$_[$i+1];
if( $k eq "name" ){
$names{$v}=1;
}
}
}
}
,End => sub{}
,Char => sub{}
});
$parser->parsefile($file);
$langs{ $lang } = \%names;
}
my $master = $langs{ "master" };
$master or die "missing master languages.\n";
my %missing;
my %allNames;
while(my($lang,$names)=each %langs ){
next if $lang eq "master";
while(my($name,$value)=each %$names){
$allNames{$name}=1;
if(not $master->{$name} ){
$missing{$name} =1;
}
}
my $nameCount = 0+ keys %$names;
print "($lang)string resource count=$nameCount\n";
}
my @missing = sort keys %missing;
@missing and die "missing string resources in master language: ",join(', ',@missing),"\n";
my $nameCount = 0+ keys %allNames;
print "(total)string resource count=$nameCount\n";
exit 0;