This class searches for Cougaar source code in subdirectories
of the $COUGAAR_INSTALL_PATH and prints a Bash script to
generate a unified (symbolically-linked) source view.
The script output of this class is included in the Cougaar
release. This script can also be run by developers to
add new modules, packages, and third-party source
(e.g. the JDK's unzipped "src.zip").
This class is fairly dumb, so watch out for symbolic link
loops, bad file permissions, and other unexpected errors.
For example, suppose the current directory contained this
subset of the Cougaar source files (in "cougaar-src.zip"):
core/src/org/cougaar/core/agent/Agent.java
core/src/org/cougaar/core/node/Node.java
core/examples/org/cougaar/core/examples/Test.java
util/src/org/cougaar/util/UnaryPredicate.java
util/src/org/cougaar/util/log/Logger.java
util/src/org/cougaar/core/component/Service.java
The unified source would look like:
src/org/cougaar/core/agent/Agent.java
src/org/cougaar/core/node/Node.java
src/org/cougaar/core/examples/Test.java
src/org/cougaar/util/UnaryPredicate.java
src/org/cougaar/util/log/Logger.java
src/org/cougaar/core/component/Service.java
To use the minimal number of symbolic links, we would do:
core=$COUGAAR_INSTALL_PATH/core
util=$COUGAAR_INSTALL_PATH/util
mkdir src; cd src
mkdir org; cd org
mkdir cougaar; cd cougaar
mkdir core; cd core
ln -s $core/src/org/cougaar/core/agent
ln -s $util/src/org/cougaar/core/component
ln -s $core/examples/org/cougaar/core/examples
ln -s $core/src/org/cougaar/core/node
cd ..
ln -s $util/src/org/cougaar/util
cd ..
cd ..
cd ..
This class does exactly that -- it searches the directories
and generates the above script.
File conflicts are handled with symbolic links that point to
the first matching file. For example, if we had:
core/src/foo/A.java
util/src/foo/A.java
then the output would look like:
ln -s core/src/foo/A.java A.java#core
ln -s util/src/foo/A.java A.java#util
ln -s A.java#core A.java
|