xref: /aoo4110/main/solenv/bin/licinserter.pl (revision b1cdbd2c)
1*b1cdbd2cSJim Jagielski:
2*b1cdbd2cSJim Jagielskieval 'exec perl -wS $0 ${1+"$@"}'
3*b1cdbd2cSJim Jagielski    if 0;
4*b1cdbd2cSJim Jagielski#**************************************************************
5*b1cdbd2cSJim Jagielski#
6*b1cdbd2cSJim Jagielski#  Licensed to the Apache Software Foundation (ASF) under one
7*b1cdbd2cSJim Jagielski#  or more contributor license agreements.  See the NOTICE file
8*b1cdbd2cSJim Jagielski#  distributed with this work for additional information
9*b1cdbd2cSJim Jagielski#  regarding copyright ownership.  The ASF licenses this file
10*b1cdbd2cSJim Jagielski#  to you under the Apache License, Version 2.0 (the
11*b1cdbd2cSJim Jagielski#  "License"); you may not use this file except in compliance
12*b1cdbd2cSJim Jagielski#  with the License.  You may obtain a copy of the License at
13*b1cdbd2cSJim Jagielski#
14*b1cdbd2cSJim Jagielski#    http://www.apache.org/licenses/LICENSE-2.0
15*b1cdbd2cSJim Jagielski#
16*b1cdbd2cSJim Jagielski#  Unless required by applicable law or agreed to in writing,
17*b1cdbd2cSJim Jagielski#  software distributed under the License is distributed on an
18*b1cdbd2cSJim Jagielski#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
19*b1cdbd2cSJim Jagielski#  KIND, either express or implied.  See the License for the
20*b1cdbd2cSJim Jagielski#  specific language governing permissions and limitations
21*b1cdbd2cSJim Jagielski#  under the License.
22*b1cdbd2cSJim Jagielski#
23*b1cdbd2cSJim Jagielski#**************************************************************
24*b1cdbd2cSJim Jagielski
25*b1cdbd2cSJim Jagielski
26*b1cdbd2cSJim Jagielski
27*b1cdbd2cSJim Jagielski#
28*b1cdbd2cSJim Jagielski# licinserter.pl - create license entries in extension description.xml
29*b1cdbd2cSJim Jagielski#
30*b1cdbd2cSJim Jagielski
31*b1cdbd2cSJim Jagielskiuse File::Basename;
32*b1cdbd2cSJim Jagielski
33*b1cdbd2cSJim Jagielskimy $langswitch;
34*b1cdbd2cSJim Jagielski
35*b1cdbd2cSJim Jagielskisub usage()
36*b1cdbd2cSJim Jagielski{
37*b1cdbd2cSJim Jagielski    print STDERR "\nCreate extension descriptions with license-text entries\n";
38*b1cdbd2cSJim Jagielski    print STDERR "matching the language activated.\n";
39*b1cdbd2cSJim Jagielski    print STDERR "\nUsage:\n";
40*b1cdbd2cSJim Jagielski    print STDERR "\t$0 [--langsplit] infile \"naming pattern\" destination\n\n";
41*b1cdbd2cSJim Jagielski    print STDERR "\nExample:\n\n";
42*b1cdbd2cSJim Jagielski    print STDERR "$0 description.xml dir/license_xxx.txt outdir/description.xml\n\n";
43*b1cdbd2cSJim Jagielski    print STDERR "Creates \"someoutdir/description.xml\" with the license file entries like\n\"dir/license_en.US.txt\" ";
44*b1cdbd2cSJim Jagielski    print STDERR "for all languages found in the WITH_LANG environment\nvariable\n\n\n";
45*b1cdbd2cSJim Jagielski    print STDERR "Example2:\n\n";
46*b1cdbd2cSJim Jagielski    print STDERR "$0 --langsplit description.xml dir/license_xxx.txt someoutdir\n\n";
47*b1cdbd2cSJim Jagielski    print STDERR "Creates \"someoutdir/<language>/description.xml\" with one license file entry\n\"somedir/license_<language>.txt\" ";
48*b1cdbd2cSJim Jagielski    print STDERR "for all languages found in the WITH_LANG\nenvironment variable.\n\nNOTE: when using --langsplit \"destination\" needs to be a directory\n";
49*b1cdbd2cSJim Jagielski}
50*b1cdbd2cSJim Jagielski
51*b1cdbd2cSJim Jagielskiif ( $ARGV[0] =~ /^-/ ) {
52*b1cdbd2cSJim Jagielski    $langswitch = shift @ARGV;
53*b1cdbd2cSJim Jagielski    if ( $langswitch ne "--langsplit" ) {
54*b1cdbd2cSJim Jagielski        usage();
55*b1cdbd2cSJim Jagielski        exit 1;
56*b1cdbd2cSJim Jagielski    }
57*b1cdbd2cSJim Jagielski    if ( ! -d $ARGV[2] ) {
58*b1cdbd2cSJim Jagielski        print STDERR "\nERROR - $ARGV[2] is not directory\n";
59*b1cdbd2cSJim Jagielski        usage();
60*b1cdbd2cSJim Jagielski        exit 2;
61*b1cdbd2cSJim Jagielski    }
62*b1cdbd2cSJim Jagielski}
63*b1cdbd2cSJim Jagielski
64*b1cdbd2cSJim Jagielskiif ( $#ARGV != 2 ) {
65*b1cdbd2cSJim Jagielski    print "zzz\n";
66*b1cdbd2cSJim Jagielski    usage();
67*b1cdbd2cSJim Jagielski    exit 1;
68*b1cdbd2cSJim Jagielski}
69*b1cdbd2cSJim Jagielski
70*b1cdbd2cSJim Jagielskiopen INFILE,$ARGV[0] or die "oops - no such file $ARGV[0]!\n";
71*b1cdbd2cSJim Jagielski
72*b1cdbd2cSJim Jagielskimy @inlines = <INFILE>;
73*b1cdbd2cSJim Jagielskiclose INFILE;
74*b1cdbd2cSJim Jagielski
75*b1cdbd2cSJim Jagielskichomp @inlines;
76*b1cdbd2cSJim Jagielski
77*b1cdbd2cSJim Jagielski# Empty or unset WITH_LANG environment variable is set to default en-US.
78*b1cdbd2cSJim Jagielski# When WITH_LANG is set but does not contain en-US then that is prepended.
79*b1cdbd2cSJim Jagielskimy $WithLang = $ENV{WITH_LANG};
80*b1cdbd2cSJim Jagielskiif ( ! defined $WithLang || $WithLang eq "")
81*b1cdbd2cSJim Jagielski{
82*b1cdbd2cSJim Jagielski    $WithLang = "en-US";
83*b1cdbd2cSJim Jagielski}
84*b1cdbd2cSJim Jagielskielsif ($WithLang !~ /\ben-US\b/)
85*b1cdbd2cSJim Jagielski{
86*b1cdbd2cSJim Jagielski    $WithLang = "en-US " . $WithLang;
87*b1cdbd2cSJim Jagielski}
88*b1cdbd2cSJim Jagielski
89*b1cdbd2cSJim Jagielski
90*b1cdbd2cSJim Jagielskiif ( $langswitch eq "" ) {
91*b1cdbd2cSJim Jagielski    my @outlines;
92*b1cdbd2cSJim Jagielski	foreach my $i (@inlines) {
93*b1cdbd2cSJim Jagielski	    if ( $i =~ /license-text/ ) {
94*b1cdbd2cSJim Jagielski	        my $ii;
95*b1cdbd2cSJim Jagielski	        my $name;
96*b1cdbd2cSJim Jagielski	        foreach my $code ( split(/\s+/,$WithLang) ) {
97*b1cdbd2cSJim Jagielski	            $ii = $i;
98*b1cdbd2cSJim Jagielski	            $name = $ARGV[1];
99*b1cdbd2cSJim Jagielski	            $name =~ s/xxx/$code/;
100*b1cdbd2cSJim Jagielski	            $ii =~ s/isocode/$code/g;
101*b1cdbd2cSJim Jagielski	            $ii =~ s?licensefile?$name?g;
102*b1cdbd2cSJim Jagielski                push @outlines, "$ii\n";
103*b1cdbd2cSJim Jagielski	        }
104*b1cdbd2cSJim Jagielski	    } else {
105*b1cdbd2cSJim Jagielski            push @outlines, "$i\n";
106*b1cdbd2cSJim Jagielski	    }
107*b1cdbd2cSJim Jagielski	}
108*b1cdbd2cSJim Jagielski    open OUTFILE, ">$ARGV[2]" or die "ooops - can't open $ARGV[2] for writing\n";
109*b1cdbd2cSJim Jagielski    print OUTFILE @outlines;
110*b1cdbd2cSJim Jagielski    close OUTFILE or die "ooops - can't write to $ARGV[2]\n";
111*b1cdbd2cSJim Jagielski} else {
112*b1cdbd2cSJim Jagielski    my @outlines;
113*b1cdbd2cSJim Jagielski    my $outname = basename($ARGV[0],());
114*b1cdbd2cSJim Jagielski    foreach my $code ( split(/\s+/,$ENV{WITH_LANG}) ) {
115*b1cdbd2cSJim Jagielski        @outlines=();
116*b1cdbd2cSJim Jagielski		foreach my $i (@inlines) {
117*b1cdbd2cSJim Jagielski		    if ( $i =~ /license-text/ ) {
118*b1cdbd2cSJim Jagielski		        my $name;
119*b1cdbd2cSJim Jagielski                my $ii = $i;
120*b1cdbd2cSJim Jagielski		        $name = $ARGV[1];
121*b1cdbd2cSJim Jagielski		        $name =~ s/xxx/$code/;
122*b1cdbd2cSJim Jagielski		        $ii =~ s/isocode/$code/g;
123*b1cdbd2cSJim Jagielski		        $ii =~ s?licensefile?$name?g;
124*b1cdbd2cSJim Jagielski	            push @outlines, "$ii\n";
125*b1cdbd2cSJim Jagielski		    } else {
126*b1cdbd2cSJim Jagielski	            push @outlines, "$i\n";
127*b1cdbd2cSJim Jagielski		    }
128*b1cdbd2cSJim Jagielski		}
129*b1cdbd2cSJim Jagielski        mkdir "$ARGV[2]/$code";
130*b1cdbd2cSJim Jagielski        open OUTFILE, ">$ARGV[2]/$code/$outname" or die "ooops - can't open $ARGV[2]/$code/$outname for writing\n";
131*b1cdbd2cSJim Jagielski        print OUTFILE @outlines;
132*b1cdbd2cSJim Jagielski        close OUTFILE or die "ooops - can't write to $ARGV[2]/$code/$outname\n";
133*b1cdbd2cSJim Jagielski    }
134*b1cdbd2cSJim Jagielski}
135