Mercurial > hg > soundsoftware-site
comparison extra/soundsoftware/extract-javadoc.sh @ 231:5d6e2819f3dd cannam-pre-20110113-merge
Merge from branch "feature_20". This initial implementation of #20 has been tested, but needs to be tested again in the proper context.
author | Chris Cannam |
---|---|
date | Thu, 17 Feb 2011 18:35:11 +0000 |
parents | c3544e9fd588 |
children | 73401a15037b |
comparison
equal
deleted
inserted
replaced
206:30203ffaa612 | 231:5d6e2819f3dd |
---|---|
1 #!/bin/bash | |
2 | |
3 docdir="/var/doc" | |
4 | |
5 project="$1" | |
6 projectdir="$2" | |
7 targetdir="$3" | |
8 | |
9 if [ -z "$project" ] || [ -z "$targetdir" ] || [ -z "$projectdir" ]; then | |
10 echo "Usage: $0 <project> <projectdir> <targetdir>" | |
11 exit 2 | |
12 fi | |
13 | |
14 if [ ! -d "$projectdir" ]; then | |
15 echo "Project directory $projectdir not found" | |
16 exit 1 | |
17 fi | |
18 | |
19 if [ ! -d "$targetdir" ]; then | |
20 echo "Target dir $targetdir not found" | |
21 exit 1 | |
22 fi | |
23 | |
24 if [ -f "$targetdir/index.html" ]; then | |
25 echo "Target dir $targetdir already contains index.html" | |
26 exit 1 | |
27 fi | |
28 | |
29 # Identify Java files whose packages match the trailing parts of their | |
30 # paths, and list the resulting packages and the path prefixes with | |
31 # the packages removed (so as to find code in subdirs, | |
32 # e.g. src/com/example/...) | |
33 | |
34 # Regexp match is very rough; check what is actually permitted for | |
35 # package declarations | |
36 | |
37 find "$projectdir" -type f -name \*.java \ | |
38 -exec grep '^ *package [a-zA-Z][a-zA-Z0-9\._-]*; *$' \{\} /dev/null \; | | |
39 sed -e 's/\/[^\/]*: *package */:/' -e 's/; *$//' | | |
40 sort | uniq | ( | |
41 current_prefix= | |
42 current_packages= | |
43 while IFS=: read filepath package; do | |
44 echo "Looking at $package in $filepath" | |
45 packagepath=${package//./\/} | |
46 prefix=${filepath%$packagepath} | |
47 prefix=${prefix:=$projectdir} | |
48 if [ "$prefix" = "$filepath" ]; then | |
49 echo "Package $package does not match suffix of path $filepath, skipping" | |
50 continue | |
51 fi | |
52 if [ "$prefix" != "$current_prefix" ]; then | |
53 if [ -n "$current_packages" ]; then | |
54 echo "Running Javadoc for packages $current_packages from prefix $current_prefix" | |
55 javadoc -sourcepath "$current_prefix" -d "$targetdir" -subpackages $current_packages | |
56 fi | |
57 current_prefix="$prefix" | |
58 current_packages= | |
59 else | |
60 current_packages="$current_packages $package" | |
61 fi | |
62 done | |
63 prefix=${prefix:=$projectdir} | |
64 if [ -n "$current_packages" ]; then | |
65 echo "Running Javadoc for packages $current_packages in prefix $current_prefix" | |
66 javadoc -sourcepath "$current_prefix" -d "$targetdir" -subpackages $current_packages | |
67 fi | |
68 ) | |
69 | |
70 # for exit code: | |
71 [ -f "$targetdir/index.html" ] | |
72 |