<?xml version="1.0" encoding="ISO-8859-1" ?>
<?xml-stylesheet type="text/xsl" href="behavior.xsl"?>
  <behavioral manifest="SoftTools.1.sys.xml">
  <file>"CommandLineHandler.1.xml"</file>
  <Author>Ozer Ozkaraoglu</Author>
  <version No="1.0" date="10/27/01" />
  <!--

    -->
  <process name="Build Script Command Line Handler">
    Interpretes the given commands and calls the related functions.
    </process>
  <diagram diagramTitle="Build Script Context">
      softTools_buildScript_diagrams1_raster.jpg
    </diagram>
  <diagram diagramTitle="Build Script Data Flow">
      softTools_buildScript_diagrams2_raster.jpg
    </diagram>
  <inputs>
    <input variable="manifestName">
      <def>holds the name of the manifest to be processed</def>
      <text>All actions are essentially performed on this given manifest. Other manifests referred by this manifest are never modified, while the user is allowed to modify this manifest by using tools.</text>
    </input>
    <input variable="saveDir">
      <def>holds the path where the ouput files are going to be stored</def>
      <text>Notice that the build script EXPECTS to see all input files necessary to perform operations in this given directory. Otherwise the program would halt.</text>
    </input>
    <input variable="buildConfig">
      <def>holds the array of command-line arguments</def>
      <text>This is used to tweak the build of the manifest. e.g. re-building of all manifests can be forced by using "/rebuild" command. Please see design documentation for details. This input is optional.</text>
    </input>
  </inputs>
  <outputs>
    <output variable="command">
      <def>contains information about type of the operation which will be performed</def>
      <text>This processor compiles the input from the user and creates a command, which drives the Build Script Processor.</text>
      <connectsToTitle>Processor Process</connectsToTitle>
      <connectsToFile>BuildScriptProcessor.1.xml</connectsToFile>
    </output>
    <output variable="errorMessage">
      <def>contains the text about nature of the error</def>
      <text>An error message is created when an invalid input is provided.</text>
    </output>
  </outputs>
  <requirements>
    <test No="BuildCommandLine_1">
      <def>invalid saveDir is given</def>
      <text>The program halts and passes the errorMessage.</text>
    </test>
    <test No="BuildCommandLine_2">
      <def>invalid manifestName given</def>
      <text>Halts and returns an appropriate errorMessage.</text>
    </test>
    <test No="BuildCommandLine_3">
      <def>invalid buildConfig given</def>
      <text>Halts and returns an appropriate errorMessage.</text>
    </test>
  </requirements>
  <!--
      The sibling tag, below, is used to identify lower level process descriptions.  Sibling tags have a visibility
      attribute, allowing them to be part of the parent's behavior model, or excluded, at the descretion of the
      behavior RI.
    -->
  <sibling ref="child2.xml" manifest="xmlTran.xml" visible="false"></sibling>
</behavioral>