#!/bin/bash
set noglob

OUTFILE=packages.properties
TMPFILE=/tmp/gwt-javadoc-packages$$

# Regex patterns to exclude from the list of packages
EXCLUSIONS="\
^com\.example\.|\
^com\.google\.gwt\.dev(\.|$)|\
^com\.google\.gwt\.emul\.|\
^com\.google\.gwt\.examples(\.|$)|\
^com\.google\.gwt\.i18n\.server(\.|$)|\
^com\.google\.gwt\.i18n\.tools|\
^com\.google\.gwt\.lang|\
^com\.google\.gwt\.junit(\.|$)|\
^com\.google\.gwt\.resources\.css(\.|$)|\
^com\.google\.gwt\.resources\.rg(\.|$)|\
^com\.google\.gwt\.rpc\.client\.ast(\.|$)|\
^com\.google\.gwt\.soyc(\.|$)|\
^com\.google\.gwt\.validation(.|$)|\
^com\.google\.gwt\.user\.client\.rpc\.core\.|\
^javax\.|\
^junit\.|\
^org\.|\
\.impl(\.|$)|\
\.rebind(\.|$)"

# Generate the packages.properties file
# Changes to LANG_PKGS and USER_CLASSES go here
# Note that line continuation backslashes must be escaped
cat > ${OUTFILE} <<EOF
# THIS FILE IS AUTOMATICALLY GENERATED
#
# This file contains all of the user javadoc packages
#
# JRE emulation packages
LANG_PKGS=\\
java.lang;\\
java.lang.annotation;\\
java.io;\\
java.sql;\\
java.util
# The last package should not have a trailing semicolon

# Individual classes to include when we don't want to include an entire package
USER_CLASSES=\\
\${gwt.root}/user/src/com/google/gwt/junit/tools/GWTTestSuite.java:\\
\${gwt.root}/user/src/com/google/gwt/i18n/rebind/LocaleUtils.java:\\
\${gwt.root}/user/src/com/google/gwt/i18n/server/GwtLocaleFactoryImpl.java:\\
\${gwt.root}/user/src/com/google/gwt/i18n/server/GwtLocaleImpl.java

# Packages to include
USER_PKGS=\\
EOF

rm -f ${TMPFILE}

# Create a list of all packages with at least one Java source file
# List all source files
for dir in ../user/src ../user/javadoc ../user/super ../dev/core/src ../dev/core/super
do
(cd ${dir}; find . -name '*.java') >> ${TMPFILE}
done

cat ${TMPFILE} | \
# Remove source file names
sed 's@/[-A-Za-z0-9_]*\.java$@@'| \
# Removce initial './'
sed s@^\./@@ | \
# Remove .../super/ and .../translatable prefixes
sed s@^.*/super/@@ | \
sed s@^.*/translatable/@@ | \
# Change slashes to dots
sed s@/@.@g | \
# Remove excluded patters
egrep -v ${EXCLUSIONS} > ${TMPFILE}-2
mv ${TMPFILE}-2 ${TMPFILE}

# Re-add whitelisted packages that would otherwise be excluded
echo com.google.gwt.i18n.rebind.format >> ${TMPFILE}
echo com.google.gwt.i18n.rebind.keygen >> ${TMPFILE}
echo com.google.gwt.junit.client >> ${TMPFILE}

# Sort, uniqify, and add ';\' to each line except the last
cat ${TMPFILE} | \
sort | \
uniq | \
sed '$q;s@$@;\\@' >> ${OUTFILE}
echo '# The last package should not have a trailing semicolon' >> ${OUTFILE}

# Clean up
rm -f ${TMPFILE}
