generateOpenCodeConfigStep writes opencode.jsonc with all permissions set to allow to prevent CI hanging on permission prompts.
(_ *WorkflowData)
| 124 | // generateOpenCodeConfigStep writes opencode.jsonc with all permissions set to allow |
| 125 | // to prevent CI hanging on permission prompts. |
| 126 | func (e *OpenCodeEngine) generateOpenCodeConfigStep(_ *WorkflowData) GitHubActionStep { |
| 127 | configJSON := `{"agent":{"build":{"permissions":{"bash":"allow","edit":"allow","read":"allow","glob":"allow","grep":"allow","write":"allow","webfetch":"allow","websearch":"allow"}}}}` |
| 128 | |
| 129 | command := fmt.Sprintf(`umask 077 |
| 130 | mkdir -p "$GITHUB_WORKSPACE" |
| 131 | CONFIG="$GITHUB_WORKSPACE/opencode.jsonc" |
| 132 | BASE_CONFIG='%s' |
| 133 | if [ -f "$CONFIG" ]; then |
| 134 | MERGED=$(jq -n --argjson base "$BASE_CONFIG" --argjson existing "$(cat "$CONFIG")" '$existing * $base') |
| 135 | echo "$MERGED" > "$CONFIG" |
| 136 | else |
| 137 | echo "$BASE_CONFIG" > "$CONFIG" |
| 138 | fi |
| 139 | chmod 600 "$CONFIG"`, configJSON) |
| 140 | |
| 141 | stepLines := []string{" - name: Write OpenCode Config"} |
| 142 | stepLines = FormatStepWithCommandAndEnv(stepLines, command, nil) |
| 143 | return GitHubActionStep(stepLines) |
| 144 | } |
no test coverage detected