Skip to content

Commit 6a7677f

Browse files
committed
feat: support global config file at ~/.claude/dash0-agent-plugin.local.md
Add fallback to global config when project-level config doesn't exist. Precedence: project-level > global > environment variables. Closes #88
1 parent ddd3203 commit 6a7677f

1 file changed

Lines changed: 24 additions & 11 deletions

File tree

scripts/on-event.sh

Lines changed: 24 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,26 +2,39 @@
22

33
set -euo pipefail
44

5-
# Read plugin settings from .claude/dash0-agent-plugin.local.md if present.
6-
SETTINGS_FILE=".claude/dash0-agent-plugin.local.md"
7-
if [[ -f "$SETTINGS_FILE" ]]; then
8-
FRONTMATTER=$(sed -n '/^---$/,/^---$/{ /^---$/d; p; }' "$SETTINGS_FILE")
5+
# Load settings from a config file. Returns 1 if file doesn't exist.
6+
load_settings() {
7+
local file="$1"
8+
[[ -f "$file" ]] || return 1
9+
10+
local frontmatter
11+
frontmatter=$(sed -n '/^---$/,/^---$/{ /^---$/d; p; }' "$file")
912

1013
# Check enabled flag (default: true if file exists but field is absent).
11-
ENABLED=$(echo "$FRONTMATTER" | grep '^enabled:' | sed 's/enabled: *//')
12-
if [[ "$ENABLED" == "false" ]]; then
14+
local enabled
15+
enabled=$(echo "$frontmatter" | grep '^enabled:' | sed 's/enabled: *//' || true)
16+
if [[ "$enabled" == "false" ]]; then
1317
exit 0
1418
fi
1519

16-
val=$(echo "$FRONTMATTER" | grep '^otlp_url:' | sed 's/otlp_url: *//' | sed 's/^"\(.*\)"$/\1/')
20+
local val
21+
val=$(echo "$frontmatter" | grep '^otlp_url:' | sed 's/otlp_url: *//' | sed 's/^"\(.*\)"$/\1/' || true)
1722
[[ -n "$val" ]] && export DASH0_OTLP_URL="$val"
18-
val=$(echo "$FRONTMATTER" | grep '^auth_token:' | sed 's/auth_token: *//' | sed 's/^"\(.*\)"$/\1/')
23+
val=$(echo "$frontmatter" | grep '^auth_token:' | sed 's/auth_token: *//' | sed 's/^"\(.*\)"$/\1/' || true)
1924
[[ -n "$val" ]] && export CLAUDE_PLUGIN_OPTION_AUTH_TOKEN="$val"
20-
val=$(echo "$FRONTMATTER" | grep '^dataset:' | sed 's/dataset: *//' | sed 's/^"\(.*\)"$/\1/')
25+
val=$(echo "$frontmatter" | grep '^dataset:' | sed 's/dataset: *//' | sed 's/^"\(.*\)"$/\1/' || true)
2126
[[ -n "$val" ]] && export DASH0_DATASET="$val"
22-
val=$(echo "$FRONTMATTER" | grep '^agent_name:' | sed 's/agent_name: *//' | sed 's/^"\(.*\)"$/\1/')
27+
val=$(echo "$frontmatter" | grep '^agent_name:' | sed 's/agent_name: *//' | sed 's/^"\(.*\)"$/\1/' || true)
2328
[[ -n "$val" ]] && export DASH0_AGENT_NAME="$val"
24-
fi
29+
30+
return 0
31+
}
32+
33+
# Load settings: project-level takes precedence, then global.
34+
PROJECT_SETTINGS=".claude/dash0-agent-plugin.local.md"
35+
GLOBAL_SETTINGS="$HOME/.claude/dash0-agent-plugin.local.md"
36+
37+
load_settings "$PROJECT_SETTINGS" || load_settings "$GLOBAL_SETTINGS" || true
2538

2639
PLUGIN_DATA="${CLAUDE_PLUGIN_DATA:?CLAUDE_PLUGIN_DATA not set}"
2740
BIN_DIR="$PLUGIN_DATA/bin"

0 commit comments

Comments
 (0)