Configuration
The Config module in CliFire is responsible for managing your application's configuration through YAML files. It allows you to read and write the configuration while automatically ensuring that private fields (those whose names begin with _) are excluded.
Main Features
-
Automatic Exclusion of Private Fields: When writing the configuration, properties whose names start with
_are excluded, ensuring that sensitive or internal information is not stored in the file. -
Flexible Loading of Configuration Files: The class method
get_configallows you to specify a list of possible configuration files. The first existing file is loaded or, if none exists, one can be created if thecreateoption is enabled. -
Dynamic Attribute Management: Configuration values are assigned as attributes of the
Configinstance, allowing you to access them dynamically using thegetmethod.
Usage Example
You can use the Config module independently or within the App class to manage your CLI application's configuration.
from clifire import application, command, out
class ConfigCommand(command.Command):
_name = "config"
_help = "Show config vars"
def fire(self):
self.app.config.my_new_var = "My new var"
out.var_dump(self.app.config)
def main():
app = application.App(config_files=["~/.myapp.yml"], config_create=True)
app.add_command(ConfigCommand)
app.fire()
if __name__ == "__main__":
main()
Now we can run it:
Reading the Configuration
To load your application's configuration, use the get_config method. For example:
from clifire import config
# Attempt to load configuration from 'config.yaml' or 'default.yaml'
cfg = config.Config.get_config(["config.yaml", "default.yaml"])
if not cfg.read():
print("Configuration file not found.")
else:
print("Configuration loaded successfully.")
print("Application Name:", cfg.get("name"))
In this example, if the configuration file exists, the attributes of the cfg instance are updated. If it does not exist, read() returns False.
Writing the Configuration
To save the current configuration to a file, use the write() method. Note how private fields are excluded:
from clifire import config
cfg = config.Config(config_file="config.yaml")
cfg.name = "MyApp"
cfg.version = "1.0.0"
cfg._secret_key = "my-secret-key" # This will not be saved
cfg.write()
Private Field Exclusion
All variables that begin with
_will not be saved in the YAML file. This is useful for keeping sensitive or internal application data private.
Summary
The Config module provides a simple and secure way to manage your CLI application's configuration using YAML files. When reading and writing configuration data, private fields are automatically excluded, which helps maintain both security and cleanliness of the stored data.
This robust functionality facilitates centralized configuration management in CliFire, contributing to the flexibility and maintainability of your applications.