#set( $command = ${project.commands.dirconf})
Configures the project by overlaying the contents of a profile directory onto
the project directory. A profile directory can have any content whatsoever,
but usually it will contain a similar directory structure to the project
itself and contain for example xml and property files that should replace those
already existing in the project.

Also uniquely for properties files, any properties will automatically get
merged with those where a a destination properties file already exists, with
the profile properties taking precedence over the project properties. This merge
behavior only occurs for those properties files directly under the conf directory.
Here is an example of a profile for a developer:


~/dev/myproj/
         |
         |____${layout.binDir.name}/                            copy will happen here
         |
         |____${layout.confDir.name}/ip-addresses.properties    merge will happen here
         |      |
         |      |____profile/                 create profiles under here
         |              |
         |              |____${layout.binDir.name}/useful-dev-script.sh
         |              |
         |              |____${layout.confDir.name}/ip-addresses.properties
         |
         |...


So the developer has a special script that he likes to use and therefore has
created a replacement in the profile bin directory. Also it seems that the
project needs to know various ip addresses in order to work correctly and so he
has similarly placed a properties overrides file inside the profile conf directory.

Interpolated properties are also supported, which basically means all ${var}
property placeholders get resolved during configuration in any text files
specified in a profile. This can be especially useful for the many tools that
are unable to interpolate properties at runtime for themselves. Be aware that if
you choose this style then all properties from all properties files are combined
into a single properties file under the conf directory called ${layout.propertiesFile.name}. 

For simple applications you can choose to ignore profile entirely and just modify
content in the application conf directory. However it isn't recommended that you
mix a direct modification approach with a profile approach. Sometimes an application
requires default configuration, but you can avoid placing that configuration in
the application conf directory. Instead create a common profile that you always
apply first, and perhaps create a custom command that always does this for you
rather than issuing two calls to ${command.delegate.name} each time.

The following options are supported:

   ${command.nameOption}        the name of the profile directory under the home directory

   ${command.interpolateOption} this switch must be present in order for all ${var} placeholders
                to be recursively replaced with the property values

   ${command.cleanOption}       include this switch in order to delete all application files
                that match profile files before overlaying the profile
                 
Examples:

   ${layout.scriptName} "${command.delegate.name} -${command.nameOption} bobdev -${command.interpolateOption}"

   ${layout.scriptName} "${command.delegate.name} -${command.nameOption} bobdev -${command.cleanOption}"
                 