#!/usr/bin/env bash # gstack-config — read/write ~/.gstack/config.yaml # # Usage: # gstack-config get — read a config value # gstack-config set — write a config value # gstack-config list — show all config # # Env overrides (for testing): # GSTACK_STATE_DIR — override ~/.gstack state directory set -euo pipefail STATE_DIR="${GSTACK_STATE_DIR:-$HOME/.gstack}" CONFIG_FILE="$STATE_DIR/config.yaml" case "${1:-}" in get) KEY="${2:?Usage: gstack-config get }" grep -E "^${KEY}:" "$CONFIG_FILE" 2>/dev/null | tail -1 | awk '{print $2}' | tr -d '[:space:]' || true ;; set) KEY="${2:?Usage: gstack-config set }" VALUE="${3:?Usage: gstack-config set }" mkdir -p "$STATE_DIR" if grep -qE "^${KEY}:" "$CONFIG_FILE" 2>/dev/null; then sed -i '' "s/^${KEY}:.*/${KEY}: ${VALUE}/" "$CONFIG_FILE" else echo "${KEY}: ${VALUE}" >> "$CONFIG_FILE" fi ;; list) cat "$CONFIG_FILE" 2>/dev/null || true ;; *) echo "Usage: gstack-config {get|set|list} [key] [value]" exit 1 ;; esac