#!/usr/bin/env bash
# core/framework/context.sh

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