0265afa054
Import the runnable game code, content, docs, scripts, and repo guidance while leaving local agent state, dependency installs, build output, and backup copies out of the published tree.
55 lines
1.5 KiB
Bash
Executable File
55 lines
1.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Install config management for Sysadmin Chronicles.
|
|
# Config lives at ~/.config/sysadmin-chronicles/config (survives game dir moves).
|
|
# Source this file; do not execute directly.
|
|
|
|
SC_CONFIG_DIR="${SC_CONFIG_DIR:-$HOME/.config/sysadmin-chronicles}"
|
|
SC_CONFIG_FILE="$SC_CONFIG_DIR/config"
|
|
|
|
config_read() {
|
|
[ -f "$SC_CONFIG_FILE" ] && source "$SC_CONFIG_FILE" || true
|
|
}
|
|
|
|
config_write() {
|
|
local key="$1"
|
|
local value="$2"
|
|
mkdir -p "$SC_CONFIG_DIR"
|
|
local tmp
|
|
tmp="$(mktemp "$SC_CONFIG_DIR/config.XXXXXX")"
|
|
if [ -f "$SC_CONFIG_FILE" ]; then
|
|
awk -v key="$key" -v value="$value" '
|
|
BEGIN { found = 0 }
|
|
index($0, key "=") == 1 {
|
|
print key "=" value
|
|
found = 1
|
|
next
|
|
}
|
|
{ print }
|
|
END {
|
|
if (!found) {
|
|
print key "=" value
|
|
}
|
|
}
|
|
' "$SC_CONFIG_FILE" > "$tmp"
|
|
else
|
|
printf '%s=%s\n' "$key" "$value" > "$tmp"
|
|
fi
|
|
mv "$tmp" "$SC_CONFIG_FILE"
|
|
}
|
|
|
|
config_show() {
|
|
if [ ! -f "$SC_CONFIG_FILE" ]; then
|
|
echo " (no config file at $SC_CONFIG_FILE)"
|
|
return
|
|
fi
|
|
echo " Config: $SC_CONFIG_FILE"
|
|
local line key value
|
|
while IFS= read -r line; do
|
|
[[ "$line" =~ ^# ]] && continue
|
|
[[ -z "$line" ]] && continue
|
|
key="${line%%=*}"
|
|
value="${line#*=}"
|
|
printf ' %-28s %s\n' "$key" "$value"
|
|
done < "$SC_CONFIG_FILE"
|
|
}
|