From 5e71003558ba7d669e540c7bef4d7bfbdc7f44da Mon Sep 17 00:00:00 2001 From: Paul Beckingham Date: Wed, 25 May 2011 18:05:44 -0400 Subject: [PATCH] Utils - 'verify' is a utility intended to make sure that all the i18n strings defined in src/en-US.h (and any other languages) are all used. In other words it detects unused strings, which can presumably be removed. --- scripts/utils/verify | 57 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100755 scripts/utils/verify diff --git a/scripts/utils/verify b/scripts/utils/verify new file mode 100755 index 000000000..c8d1b46f0 --- /dev/null +++ b/scripts/utils/verify @@ -0,0 +1,57 @@ +#! /usr/bin/perl +################################################################################ +## taskwarrior - a command line task list manager. +## +## Copyright 2006 - 2011, Paul Beckingham, Federico Hernandez. +## All rights reserved. +## +## This program is free software; you can redistribute it and/or modify it under +## the terms of the GNU General Public License as published by the Free Software +## Foundation; either version 2 of the License, or (at your option) any later +## version. +## +## This program is distributed in the hope that it will be useful, but WITHOUT +## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +## FOR A PARTICULAR PURPOSE. See the GNU General Public License for more +## details. +## +## You should have received a copy of the GNU General Public License along with +## this program; if not, write to the +## +## Free Software Foundation, Inc., +## 51 Franklin Street, Fifth Floor, +## Boston, MA +## 02110-1301 +## USA +## +################################################################################ + +use strict; +use warnings; + +# Use the en-US.h file, or whatever was specified on the command line. +my $file = scalar @ARGV ? shift @ARGV : 'en-US.h'; + +# Find all the defined strings. +my @strings; +if (open my $fh, '<', $file) +{ + while (my $line = <$fh>) + { + push @strings, $1 if $line =~ /\#define\s+(STRING_\S+)/; + } + + close $fh; +} + +# Recursively search for all the defined strings, reporting those that are not +# used. +for my $string (@strings) +{ + print "$string is not used\n" + if `git grep $string | grep -v [a-z][a-z]-[A-Z][A-Z].h` eq ''; +} + +exit 0; + +################################################################################