Cinnamon entry points
The cinnamon package offers console scripts to work with Configuration and Component without requiring any custom code.
cmn-setup
The cmn-setup command is the console script version of Registry.setup().
In addition to loading registrations and resolving dependencies, the cmn-setup command stores in csv format all valid and invalid RegistrationKey.
In particular, a RegistrationKey is valid (invalid) if the associated Configuration instance is valid (invalid).
To run cmn-setup, do as follows
cmn-setup --dir *main-directory* --ext *ext-directory-1* *ext-directory-2* ...
By default, cmn-setup takes dir=pwd.
Thus, usually, we only require to open a terminal in our main project directory and run
cmn-setup
cmn-run
The cmn-run command allows building and executing Component given a RegistrationKey.
In particular, there exist a specific extension of Component, denoted as RunnableComponent that adds the run() method.
Thus, to transform a Component into a RunnableComponent, we only need to define some code logic under run().
For instance,
class CustomRunnable(cinnamon.component.RunnableComponent):
def __init__(self, x, y):
self.x = x
self.y = y
def run(
config: cinnamon.configuration.Configuration
):
print(f"Running this component with x={x} and y={y}")
print(f'The configuration of the component is {config})
Defines a simple RunnableComponent that prints some information when being executed.
Given a RegistrationKey, the cmn-run does the following:
Retrieves from
RegistrytheConfigurationinfo via the givenRegistrationKeyBuilds a
ConfigurationinstanceBuilds a
Componentinstance by providing the builtConfigurationparameters.
Nonetheless, providing a RegistrationKey by heart is not a simple task, especially as projects scale up in the number of defined Configuration and Component.
To account for this problem, cmn-run allows for interactive search for RegistrationKey by relying on InquirePy.
In particular, cmn-run guides the user through three distinct prompts:
namespaceselectionnameselectiontagsselection
Eventually, the defined RegistrationKey might be compatible with several actually registered RegistrationKey.
Thus, cmn-run allows selecting one or more of those keys to execute all corresponding components in sequence.
Note
Intuitively, cmn-run supports running one or more RunnableComponent in sequence given a name, some tags and a namespace.