Files
herolib/lib/core/readme.md
2025-01-01 17:44:06 +01:00

128 lines
3.3 KiB
Markdown

# Core Module
The Core module provides fundamental system-level functionality for the Hero framework. It handles platform detection, system operations, and provides essential utilities used throughout the framework.
## Main Features
### Platform Management
- Platform detection (OSX, Ubuntu, Alpine, Arch)
- CPU architecture detection (Intel, ARM)
- System information retrieval (hostname, init system)
- Cross-platform compatibility utilities
### Memory Database
- Thread-safe in-memory key-value store
- Global state management
- Caching for system information
### Sudo Operations
- Permission management and verification
- Sudo requirement detection
- Path access rights checking
- Command elevation handling
### Submodules
- **base**: Context and session management
- **httpconnection**: HTTP client functionality
- **logger**: Logging infrastructure
- **pathlib**: Path manipulation and handling
- **playbook**: Execution playbooks
- **redisclient**: Redis database client
- **rootpath**: Root path management
- **smartid**: Identifier management
- **texttools**: Text manipulation utilities
- **vexecutor**: Command execution
## Platform Support
The module supports multiple platforms:
- macOS (Intel and ARM)
- Ubuntu
- Alpine Linux
- Arch Linux
And CPU architectures:
- x86_64 (Intel)
- ARM64/AArch64
## Usage
The core module provides essential functionality used by other Hero framework components. Key features include:
### Interactivity Check & Influence on delete
```
import freeflowuniverse.herolib.installers.lang.golang
import freeflowuniverse.herolib.core
core.interactive_set()! //make sure the sudo works so we can do things even if it requires those rights
//this will allow files which are in sudo area to still get them removed but its important interactive is set on the context.
golang.install(reset:false)!
```
### Platform Detection
```v
// Check platform type
if core.is_linux()! {
// Linux-specific code
}
// Check CPU architecture
if core.is_linux_arm()! {
// ARM-specific code
}
```
### Memory Database
```v
// Store values
core.memdb_set('key', 'value')
// Retrieve values
value := core.memdb_get('key')
```
### Sudo Operations
The sudo operations module provides comprehensive permission management and command elevation handling:
```v
// Check if sudo is required for the current user
if core.sudo_required()! {
// Handle sudo requirements
// Returns false if user is root or on macOS
// Returns true if user has sudo privileges
}
// Verify path permissions and accessibility
path := core.sudo_path_check('/path/to/check')! {
// Returns the path if accessible
// Errors if path requires sudo rights
}
// Check if a path is accessible without sudo
if core.sudo_path_ok('/usr/local/bin')! {
// Returns false for protected directories like:
// /usr/, /boot, /etc, /root/
// Returns true if path is accessible
}
// Check and modify commands that require sudo
cmd := core.sudo_cmd_check('ufw enable')! {
// Automatically adds 'sudo' prefix if:
// 1. Command requires elevated privileges
// 2. User doesn't have sudo rights
// 3. Running in interactive mode
}
// Check if current process has sudo rights
if core.sudo_rights_check()! {
// Returns true if:
// - Running as root user
// - Has necessary sudo privileges
}
```