blob: 2f7e184d451980cc8c019abc15cac271deb937e7 [file] [log] [blame]
#!/bin/sh
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
# sigilgen build.xml ..
function a2s() {
find ${1:?} -name '*.java' -o -name '*.spring' -o -name '*.sca' |
perl -e '
use strict;
use FileHandle;
my %imports;
my %exports;
while (<>) {
chomp($_);
my $path = $_;
my $fh = new FileHandle($path);
my $testFile = ($path =~ m!Test[^/]+$!);
while (my $line = <$fh>) {
chomp($line);
if ($line =~ /^\s*package\s+([\w.]+)\s*;\s*$/) {
my $exp = $1;
if (!($testFile && ($exp !~ /^test[.]/))) {
$exports{$exp} = 1;
}
}
elsif ($line =~ /^\s*import\s+([a-z_0-9.]+)([.][A-Z][^.]+)+;\s*$/) {
my $imp = $1;
$imports{$imp} = 1 unless ($imp =~ /^java[.]/);
}
elsif (($line !~ m!^\s*(//|\*|\@)!) &&
($line =~ /(\W)((([a-z0-9]{2,})[.]){3,})[A-Z]/)) {
my $quot = $1;
my $imp = $2;
$imp =~ s/.$//;
if (($imp !~ /^java[.]/) &&
($quot ne "\"" || ($path !~ /[.]java$/))) {
$imports{$imp} = 1;
}
}
}
$fh->close();
}
if (keys(%exports) == () && keys(%imports) == ()) {
exit(1);
}
print "-exports: \\\n";
foreach my $key (sort keys(%exports)) {
print "\t$key, \\\n";
}
print "\n";
print "-imports: \\\n";
foreach my $key (sort keys(%imports)) {
print "\t$key, \\\n";
}
print "\n";
exit(0);
'
return $?
}
for file in $*; do
echo "converting $file"
name=$(perl -ne 'print $1 if (/project name="([^"]*)"/);' $file)
dir=$(dirname $file)
if [ -f $dir/sigil.properties ]; then
rm -f $dir/sigil.properties.old
mv $dir/sigil.properties $dir/sigil.properties.old
fi
(
echo "# generated by sigilgen on $(date)"
echo
echo "-bundles: $name"
echo
a2s $dir && mv $dir/sigil.properties-part $dir/sigil.properties
) > $dir/sigil.properties-part
rm -f $dir/sigil.properties-part
done