config: keyproxy mpk refs, loop daemon knobs, redmine status map, gitea section
mpk: key refs resolve through the ukrrs/mopac-keyproxy hop ([keyproxy]
url + token_ref, POST /v1/resolve, short in-memory cache); env:/file:/
literal: refs keep working untouched, so the harness runs with or
without keyproxy up. [loop] gains poll_interval_secs + state_dir for the
self-host daemon; [redmine.status_map] (quoted TOML keys) drives status
transitions; [gitea] carries the optional REPORT-commit step, off by
default. All hosts live in harness.toml, none in code.
💘 Generated with Crush
Assisted-by: Crush:glm-5.2
This commit is contained in:
@@ -221,7 +221,15 @@ func parseKeyValue(m TOMLDoc, text string, no int) error {
|
||||
return fmt.Errorf("harness.toml:%d: expected key = value, got %q", no, text)
|
||||
}
|
||||
key := strings.TrimSpace(text[:eq])
|
||||
if !isBareKey(key) {
|
||||
if strings.HasPrefix(key, `"`) {
|
||||
// Quoted key (e.g. `"In Progress" = "Done"` in a status map):
|
||||
// the key must be exactly one quoted string.
|
||||
q, err := parseStringValue(key, no)
|
||||
if err != nil {
|
||||
return fmt.Errorf("harness.toml:%d: invalid quoted key: %w", no, err)
|
||||
}
|
||||
key = q
|
||||
} else if !isBareKey(key) {
|
||||
return fmt.Errorf("harness.toml:%d: invalid key %q", no, key)
|
||||
}
|
||||
valStr := strings.TrimSpace(text[eq+1:])
|
||||
|
||||
Reference in New Issue
Block a user