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_config
allows you to specify a list of possible configuration files. The first existing file is loaded or, if none exists, one can be created if thecreate
option is enabled. -
Dynamic Attribute Management: Configuration values are assigned as attributes of the
Config
instance, allowing you to access them dynamically using theget
method.
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.