Mercurial > hg > soundsoftware-site
diff extra/soundsoftware/extract-javadoc.sh @ 247:73ff0e6a11b1 cannam
* Merge from branch cannam-pre-20110113-merge
author | Chris Cannam |
---|---|
date | Thu, 03 Mar 2011 12:11:53 +0000 |
parents | c3544e9fd588 |
children | 73401a15037b |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/extra/soundsoftware/extract-javadoc.sh Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,72 @@ +#!/bin/bash + +docdir="/var/doc" + +project="$1" +projectdir="$2" +targetdir="$3" + +if [ -z "$project" ] || [ -z "$targetdir" ] || [ -z "$projectdir" ]; then + echo "Usage: $0 <project> <projectdir> <targetdir>" + exit 2 +fi + +if [ ! -d "$projectdir" ]; then + echo "Project directory $projectdir not found" + exit 1 +fi + +if [ ! -d "$targetdir" ]; then + echo "Target dir $targetdir not found" + exit 1 +fi + +if [ -f "$targetdir/index.html" ]; then + echo "Target dir $targetdir already contains index.html" + exit 1 +fi + +# Identify Java files whose packages match the trailing parts of their +# paths, and list the resulting packages and the path prefixes with +# the packages removed (so as to find code in subdirs, +# e.g. src/com/example/...) + +# Regexp match is very rough; check what is actually permitted for +# package declarations + +find "$projectdir" -type f -name \*.java \ + -exec grep '^ *package [a-zA-Z][a-zA-Z0-9\._-]*; *$' \{\} /dev/null \; | + sed -e 's/\/[^\/]*: *package */:/' -e 's/; *$//' | + sort | uniq | ( + current_prefix= + current_packages= + while IFS=: read filepath package; do + echo "Looking at $package in $filepath" + packagepath=${package//./\/} + prefix=${filepath%$packagepath} + prefix=${prefix:=$projectdir} + if [ "$prefix" = "$filepath" ]; then + echo "Package $package does not match suffix of path $filepath, skipping" + continue + fi + if [ "$prefix" != "$current_prefix" ]; then + if [ -n "$current_packages" ]; then + echo "Running Javadoc for packages $current_packages from prefix $current_prefix" + javadoc -sourcepath "$current_prefix" -d "$targetdir" -subpackages $current_packages + fi + current_prefix="$prefix" + current_packages= + else + current_packages="$current_packages $package" + fi + done + prefix=${prefix:=$projectdir} + if [ -n "$current_packages" ]; then + echo "Running Javadoc for packages $current_packages in prefix $current_prefix" + javadoc -sourcepath "$current_prefix" -d "$targetdir" -subpackages $current_packages + fi + ) + +# for exit code: +[ -f "$targetdir/index.html" ] +