summaryrefslogtreecommitdiff
path: root/solenv/bin/transform_description.pl
diff options
context:
space:
mode:
Diffstat (limited to 'solenv/bin/transform_description.pl')
-rw-r--r--solenv/bin/transform_description.pl138
1 files changed, 138 insertions, 0 deletions
diff --git a/solenv/bin/transform_description.pl b/solenv/bin/transform_description.pl
new file mode 100644
index 000000000000..87dcb21deb53
--- /dev/null
+++ b/solenv/bin/transform_description.pl
@@ -0,0 +1,138 @@
+#!/usr/bin/perl
+#*************************************************************************
+#*
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2009 by Sun Microsystems, Inc.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org 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 Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#************************************************************************/
+
+parse_args();
+execute_args();
+exit(0);
+
+my $source = undef;
+my $dest = undef;
+my @languages = undef;
+
+sub parse_args
+{
+ # at most two arguments
+ explain(), exit(100) if ( $#ARGV > 1 );
+
+ # destination file is the second argument, if present
+ $dest = $ARGV[1] if ( $#ARGV > 0 );
+
+ # source file is the first argument if present
+ if ( $#ARGV > -1 )
+ {
+ $source = $ARGV[0];
+ if ( ! -f $source )
+ {
+ print STDERR "$source is not a valid file, aborting";
+ exit(101);
+ }
+ }
+
+ # check which languages to use
+ my $languages = $ENV{WITH_LANG};
+ if ( ( ! defined $languages ) || ( "$languages" eq "" ) )
+ {
+ print STDERR "$0: WITH_LANG not set or empty, defaulting to 'en-US'\n";
+ $languages = "en-US";
+ }
+ @languages = split ( ' ', $languages );
+}
+
+sub execute_args
+{
+ my @description = ();
+ if ( defined $source )
+ {
+ open SOURCE, "$source" || die "could not open $source: $?\n";
+ @description = <SOURCE>;
+ close SOURCE;
+ }
+ else
+ {
+ @description = <STDIN>;
+ }
+
+ if ( defined $dest )
+ {
+ open DEST, ">$dest" || die "could not open $dest for writing: $?\n";
+ }
+
+ foreach (@description)
+ {
+ chomp; s/\r//;
+
+ if ( /\#LANG\#/ )
+ {
+ foreach $lang ( @languages )
+ {
+ my $transformed = $_;
+ $transformed =~ s/\#LANG#/$lang/g;
+ if ( defined $dest )
+ {
+ print DEST "$transformed\n";
+ }
+ else
+ {
+ print STDOUT "$transformed\n";
+ }
+ }
+ }
+ else
+ {
+ if ( defined $dest )
+ {
+ print DEST "$_\n";
+ }
+ else
+ {
+ print STDOUT "$_\n";
+ }
+ }
+ }
+
+ close DEST if ( defined $dest );
+}
+
+# explains the program's usage
+sub explain
+{
+ print STDOUT "usage:\n";
+ print STDOUT " $0 [<description_file> [<output_file>]]\n";
+ print STDOUT " transforms the given extension description file\n";
+ print STDOUT "\n";
+ print STDOUT " If <output_file> is not given, STDOUT is used.\n";
+ print STDOUT " If <description_file> is not given, STDIN is used.\n";
+ print STDOUT "\n";
+ print STDOUT " The following transformations are done at the moment:\n";
+ print STDOUT " - duplicate all lines containing #LANG#, for ever token of \$WITH_LANG\n";
+ print STDOUT " replacing every occurance of \$LANG with a token\n";
+ print STDOUT "\n";
+ print STDOUT " And yes, the functionality of this script should be\n";
+ print STDOUT " - moved to solenv/inc/tg_ext.mk\n";
+ print STDOUT " - implemented as XSLT, to be much less error-prone\n";
+}