directories.rb

Path: bin/directories.rb
Last Update: Sat Jan 14 19:53:02 EST 2006

Defines Amber directory structure and template collection. Contains directory and file descriptions which get embedded in manifests.

Author: A. Griesser

Constants

DevRootRelativeDirs = { :root => ['', 'Root of the Amber project management system'], :lib => ['Lib', 'Contains 3rd party libraries required by projects.'], :temp => ['Temp', 'Contains transient programattically generated files.'], :project => ['Projects', 'Contains projects.'], :amber => ['Amber', 'Contains the Amber build system'], :amber_lib => ['Lib_AmberNeeds', 'Contains 3rd party libraries required by Amber'], :template => ['Amber/templates', 'Contains templates used to generate new projects, and to test Amber.'], :script => ['Amber/bin', "Contains Amber's executable code."], :devPackaging => ['Temp/devPackaging', 'Contains projects packaged up with everything they depend on.'], :gemPackaging => ['Temp/gemPackaging', 'Contains projects packaged as Ruby Gems'], :packaging => ['Temp/packaging', 'Contains projects packaged up for distribution']   The structure of Amber directories is specified by two hashes. The keys are names for directories, and the values are arrays. The first element is a path. The second is a comment describing the directory..
  * The keys in these two hashes should not overlap
        (To do: check this, I think I removed this constraint)
  * Only the keys should be hard coded

These are not complete: some substructure may be defined in the rakefile.

ProjectRelativeDirs = { :root => ['', 'The root of all files specific to the project'], :src_ext => ['src_extension', 'Contains source for extensions (if any) written in C/C++.'], :src_exec => ['src_run', 'Contains hand-written interpreted code'], :src_doc => ['src_doc', 'Contains hand-written documentation (input to rdoc).'], :src_test => ['src_test', 'Contains regression testing code.'], :src_data => ['src_data/codeGen_input', 'Contains input (if any) to a source code generator'], :derived_source => ['derived_source', 'Contains source code (if any) generated programatically'], :doc => ['doc', 'Contains documentation generated by rdoc.'], :test_input => ['src_data/test_input', 'Contains data (if any) fed to regression tests.'], :test_results => ['temp/test_results', 'Temporarily contains the result of regression tests.'], :test_results_expected => ['src_data/test_expected', 'Contains data (if any) that regression tests were expected to produce.'], :tmp => ['temp', 'Temporarily contains project-specific byproducts.'], :metainfo => ['metainfo', 'Contains machine-readable information about the project.'], :bin => ['bin', 'Contains executable tools and scripts other than the Rakefile.']
TemplateDescriptions = { 'Rakefile.rb' => [:root, 'A Rake script for operations on this project.'], 'properties.rb' => [:metainfo, 'Customizes Rakefile.rb'], 'dependencies.rb'=> [:metainfo, 'Describes dependencies on additional internal and 3rd party code.'], 'License.txt' => [:src_doc, 'Terms under which this project is made available.'], 'ReadMe.txt' => [:src_doc, 'How to use the program. docs/index.html is better looking and more complete.']   Template descriptions are of this form:
      key:   A file name (local to one of the ProjectRelativeDirs)
      value: An Array with two elements.
                      value[0] is the name of the ProjectRelativeDir
                      value[1] is a description of the template (copied to the manifest).

[Validate]