#!/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_MODULES="${_CTX_ROOT}/modules" _CTX_COMMANDS="${_CTX_ROOT}/commands" _CTX_PRESETS="${_CTX_ROOT}/presets" _CTX_BLOCKS="${_CTX_ROOT}/blocks" _CTX_CLIENTS="/etc/wireguard/clients" _CTX_WG="/etc/wireguard" function ctx::root() { echo "$_CTX_ROOT"; } function ctx::core() { echo "$_CTX_CORE"; } function ctx::modules() { echo "$_CTX_MODULES"; } function ctx::commands() { echo "$_CTX_COMMANDS"; } function ctx::presets() { echo "$_CTX_PRESETS"; } function ctx::blocks() { echo "$_CTX_BLOCKS"; } function ctx::clients() { echo "$_CTX_CLIENTS"; } function ctx::wg() { echo "$_CTX_WG"; } # ============================================ # Path Helpers # ============================================ function ctx::client::path() { local IFS="/" echo "$_CTX_CLIENTS/$*" } function ctx::preset::path() { local IFS="/" echo "$_CTX_PRESETS/$*" } function ctx::block::path() { local IFS="/" echo "$_CTX_BLOCKS/$*" }