#!/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/$*"; }