- core/framework/: flag.sh, hook.sh, help.sh, command.sh, mixin.sh - core/app/: wgctl-specific context.sh, json.sh - core/framework/mixins/: json_output, no_color mixins - core/core.sh: sources framework/core.sh + app/core.sh - PYTHONPATH exported in app/core.sh for lib/ module resolution - command::_load_mixins: uses _FRAMEWORK_DIR for mixin path
35 lines
1.4 KiB
Bash
35 lines
1.4 KiB
Bash
#!/usr/bin/env bash
|
|
|
|
# ============================================
|
|
# Static Context — resolved once at source time
|
|
# ============================================
|
|
|
|
_CTX_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
|
|
_CTX_CORE="${_CTX_ROOT}/core"
|
|
_CTX_FRAMEWORK_CORE="${_CTX_ROOT}/core/framework"
|
|
_CTX_APP_CORE="${_CTX_ROOT}/core/app"
|
|
_CTX_MODULES="${_CTX_ROOT}/modules"
|
|
_CTX_COMMANDS="${_CTX_ROOT}/commands"
|
|
|
|
# echo "ctx::root: $_CTX_ROOT"
|
|
# echo "ctx::modules: $_CTX_MODULES"
|
|
|
|
# ============================================
|
|
# Accessors
|
|
# ============================================
|
|
|
|
function ctx::root() { echo "$_CTX_ROOT"; }
|
|
function ctx::core() { echo "$_CTX_CORE"; }
|
|
function ctx::framework() { echo "$_CTX_FRAMEWORK_CORE"; }
|
|
function ctx::app() { echo "$_CTX_APP_CORE"; }
|
|
function ctx::modules() { echo "$_CTX_MODULES"; }
|
|
function ctx::commands() { echo "$_CTX_COMMANDS"; }
|
|
|
|
# ============================================
|
|
# Path Helpers
|
|
# ============================================
|
|
|
|
function ctx::core::path() { local IFS="/"; echo "$_CTX_CORE/$*"; }
|
|
function ctx::framework::path() { local IFS="/"; echo "$_CTX_FRAMEWORK_CORE/$*"; }
|
|
function ctx::module::path() { local IFS="/"; echo "$_CTX_MODULES/$*"; }
|
|
function ctx::command::path() { local IFS="/"; echo "$_CTX_COMMANDS/$*"; }
|