-
Notifications
You must be signed in to change notification settings - Fork 11
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[feat] Declarative interface for Clace configuration #34
Comments
The various config formats already in use in Clace are
The other options are YAML and a domain specific language (like HCL). Clace has a CLI interface which can be considered a DSL. Using the CLI command as declarative interface will mean something like
|
Further considerations for the CLI DSL option
|
If there are five apps installed, and an import is done with a state file having three of those apps, what should happen to the two apps missing in the state file. Should they be deleted? Most probably not. An separate cleanup command to delete such apps would be safer. |
Using the CLI DSL as the declarative interface works fine but there are issues when some values need to be parameterized. Strings are fine, anything more complex like list or dict is not possible to parameterize. Decided to go with using Starlark for defining the declarative spec. Parameters are easy to define with any data type and it fits well with rest of the system. |
Currently, Clace apps are created using a CLI interface. An UI interface to manage Clace apps will be added later. For complex installations, a declarative interface is required. The intent is to avoid ClickOps/ShellOps.
The declarative interface should be readable, expressive, idempotent and git compatible (diffable text format). Modularity, reusability, support for variables and parameters are other criteria to consider. Interoperability with CLI and UI is another consideration.
The text was updated successfully, but these errors were encountered: