core_daemon/README.md
2024-08-05 22:28:02 +03:00

68 lines
1.7 KiB
Markdown

# core_daemon
My attempt of creating python daemon handler.
This was written with Python 3.11
## Features
- Core daemon that runs continuously and manages modules
- Interactive shell for user interaction
- Dynamic loading and unloading of modules
- Custom command execution from loaded modules
- Auto-completion for commands in the shell
- Ability to upgrade the core daemon
- Modules are loaded from an 'modules' directory
## Structure
dynamic-module-manager/
├── core_daemon.py
├── daemon_cli.py
├── modules/
│ ├── extra_commands.py
│ └── http_service.py
└── README.md
## Getting Started
1. Start the core daemon:
python3 core_daemon.py
2. In a separate terminal, start the shell:
python3 shell.py
## Usage
Once in the shell, you can use the following commands:
- `list_available`: List all available modules in the 'modules' directory
- `load <module_name>`: Load a module
- `unload <module_name>`: Unload a module
- `list`: List all currently loaded modules
- `upgrade`: Upgrade the core daemon (restarts the daemon in current implementation)
- Any custom commands provided by loaded modules
Use tab completion to see available commands and modules.
## Creating New Modules
To create a new module:
1. Create a new Python file in the 'modules' directory
2. Define your module as a class
3. Implement at least one of these functions `initialize()`, `shutdown()`, `get_commands()`
See `modules/extra_commands.py` and `modules/http_service.py` for an example of how to structure a module.
# Todo
- Maybe add ability to search for modules in directories set by a command
- Create module to add auth for the cli connections...
- Add error handling to core_daemon and daemon_cli...