gnucash/make-gnucash-potfiles.in
Geert Janssens 8687dfb1da Merge qof directory into engine
They are both about handling core gnucash objects. Qof was once split out
in an attempt to make it a separate library. This hasn't worked out so there's
no good reason any more to keep this artificial separation.

A few considerations:
- The qof tests are merged into the engine test directory but they are kept as
  a separate test entity for now. Several assumptions made in the qof tests
  are no longer valid in the context of the engine. (For example if the
  pricedb test is added in the same test executable as the qofbook test,
  the book creation test fails because it now has 2 collections (pricedb and
  book) instead of only one. There are plenty of others like this so merging
  the tests needs more careful review and is perhaps best done while converting
  to c++/Google test.
- I had to use unique names for the MockBackend classes because apparently the tests were
  using a MockClass from another file in the cmake builds, causing several
  tests to fail.
2017-08-09 15:37:39 +02:00

84 lines
2.6 KiB
Perl

#!@-PERL-@ -w
# -*- perl -*-
#
# This perl script is used to make po/POTFILES.in, the list
# of files to be searched for translatable strings.
#
# It will exclude any files listed in po/POTFILES.skip, po/POTFILES.ignore
# or that match the regexp patterns listed in @ignorepatterns.
#
# Author: Dave Peticolas <dave@krondo.com>
use strict;
use File::Basename;
# Note: These are perl regexp patterns, *not* normal shell wildcards!
my @ignorepatterns = ('gw-', 'test', 'experimental', 'python-bindings', 'swig-.*\.c');
my (@skipped_files, @ignored_files);
open(IN, "< @-SRCDIR-@/po/POTFILES.skip");
while (<IN>) {
push @skipped_files, $_ unless $_ =~ /^\#/;
}
close IN;
open(IN, "< @-SRCDIR-@/po/POTFILES.ignore");
while (<IN>) {
push @ignored_files, $_ unless $_ =~ /^\#/;
}
close IN;
# Sort filenames in POTFILES.in in a consistent way
# This reduces the amount of clutter in our version manangement system
# The files will be sorted
# * per directory
# * case-insensitive
# * ignoring punctuation (-,_,.)
#
# This sort function has been extracted into a separate file (util/elegant-sort.pl)
# in order to use the same algorithm in both cmake and autools based builds
my @possible_files = `cd @-SRCDIR-@ && \\
find src lib -name '*.c' \\
-o -name '*.cpp' -o -name '*.glade' \\
-o -name '*.desktop.in' -o -name '*.keys.in' \\
-o -name '*.gschema.xml.in.in' -o -name '*.scm' \\
| util/elegant-sort.pl`;
## For perl files add the following:
# -o -name '*.pl'
print "# This is a list of files which contain translatable strings.\n";
print "# This file was generated by ../make-gnucash-potfiles.\n";
my %ignores;
foreach my $file (@possible_files) {
chomp($file);
my ($name, $path) = fileparse($file);
$path =~ s/^\.\///;
foreach my $pat (@ignorepatterns, @skipped_files, @ignored_files) {
chomp($pat);
next unless $pat;
if ($file =~ m/$pat/ || $name =~ m/$pat/ || $path =~ m/$pat/) {
$ignores{$path . $name} = 1;
}
}
next if $ignores{$path . $name};
# Ignore unreadable files, e.g. dangling symlinks
next unless (-r "@-SRCDIR-@/" . $path . $name);
# Force parse type for gsettings files
my $type = "";
if ($file =~ m/.gschema.xml.in.in/ ){
$type = "[type: gettext/gsettings]";
}
print $type . $path . $name . "\n";
}
# These are also added, even though they are outside of src/
print "src/gnome/gnucash.appdata.xml.in\n";
print "src/gnome/gnucash.desktop.in.in\n";
print "src/engine/qofbookslots.h\n";
print "doc/tip_of_the_day.list.in\n";