wgctl/core/context.sh
2026-05-06 23:02:12 +00:00

42 lines
1.2 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_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/$*"
}