Skip to content
bennibbelink edited this page Apr 8, 2024 · 1 revision

Archetype Command Line Interface

There are a few archetype-specific |Cyclus| CLI commands that allow introspecting details of archetypes that |Cyclus| can find. Most expose data that is automatically generated by the Cyclus preprocessor. For example, member variables added with #pragma cyclus var are added to the generated input XML schema. Agents are referenced on the command line by their single-string form spec (e.g. :cycamore:Source) which is discussed :ref:`here <agent-spec-docs>`.

To view the auto-generated XML schema used for validating archetype configuration parameters in input files:

$ cyclus --agent-schema :agents:Source
<interleave>
    <element name="commod">
        <data type="token"/>
    </element>
    <optional>
        <element name="recipe_name">
            <data type="token"/>
        </element>
    </optional>
    <element name="capacity">
        <data type="double"/>
    </element>
</interleave>

To view a JSON structured output of all the data generated and collected from #pragma cyclus annotations for a particular archetype:

$ cyclus --agent-annotations :cycamore:Source
{
 "all_parents": [
  "cyclus::Agent",
  "cyclus::Facility",
  "cyclus::Ider",
  "cyclus::StateWrangler",
  "cyclus::TimeListener",
  "cyclus::Trader",
  "cyclus::toolkit::AgentManaged",
  "cyclus::toolkit::CommodityProducer"
 ],
 "doc": "This facility acts as a source of material with a fixed...
 ...

And to list all archetypes inside a particular library:

$ cyclus --agent-listing :cycamore
:cycamore:DeployInst
:cycamore:Enrichment
:cycamore:FuelFab
:cycamore:GrowthRegion
:cycamore:ManagerInst
:cycamore:Reactor
:cycamore:Separations
:cycamore:Sink
:cycamore:Source
:cycamore:Storage

Archetype Versioning

The cyclus::Agent class exposes a version() member function which can be queried with the |Cyclus| CLI. For example,

$ cyclus --agent-version :agents:Source
1.3.1-7-g9a2c9c9

This is generated from some git version control information. You can make your own version tag information for some archetype like

C++:

virtual std::string version() { return "My Version"; }

Python:

def version(self):
    return "My Version"

and then access the version with

$ cyclus --agent-version my/path:my_library:MyArchetype
My Version
Clone this wiki locally