|
2 | 2 |
|
3 | 3 | set -euo pipefail |
4 | 4 |
|
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") |
9 | 12 |
|
10 | 13 | # 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 |
13 | 17 | exit 0 |
14 | 18 | fi |
15 | 19 |
|
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) |
17 | 22 | [[ -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) |
19 | 24 | [[ -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) |
21 | 26 | [[ -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) |
23 | 28 | [[ -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 |
25 | 38 |
|
26 | 39 | PLUGIN_DATA="${CLAUDE_PLUGIN_DATA:?CLAUDE_PLUGIN_DATA not set}" |
27 | 40 | BIN_DIR="$PLUGIN_DATA/bin" |
|
0 commit comments