Skip to content

fix: token substitution in OPENCODE_CONFIG_CONTENT (redo)#174

Open
ariane-emory wants to merge 7 commits intodevfrom
fix/config-content-file-write
Open

fix: token substitution in OPENCODE_CONFIG_CONTENT (redo)#174
ariane-emory wants to merge 7 commits intodevfrom
fix/config-content-file-write

Conversation

@ariane-emory
Copy link
Owner

What does this PR do?

  • Route inline config through load() function to enable {env:} and {file:} token substitution
  • Make OPENCODE_CONFIG_CONTENT a dynamic getter for runtime env var access
  • Add tests for {env:} and {file:} token substitution in OPENCODE_CONFIG_CONTENT

NOTE: This PR injects the scheme value when necessary, so as to avoid the unintended creation of a ./OPENCODE_CONFIG_CONTENT file in the project's root (as was the case in the prior merged PR on this issue, anomalyco#13384)

Fixes anomalyco#13219

How did you verify your code works?

Manual testing, bun typecheck, bun test.

You may manually test by running commands akin to the following (assuming bash):

echo "matrix" > /tmp/test-secret.txt 
export MODEL="opencode/big-pickle"
OPENCODE_CONFIG_CONTENT='{"$schema":"https://opencode.ai/config.json","theme":"{file:/tmp/test-secret.txt}", "model":"{env:MODEL}"}' bun dev;

Route OPENCODE_CONFIG_CONTENT through load() to enable {env:} and {file:}
token substitution. Uses the env var name as the path for clearer error
messages instead of a generic <inline> placeholder.

Fixes anomalyco#13219
Converts OPENCODE_CONFIG_CONTENT to a dynamic getter on the Flag object,
matching the pattern used for OPENCODE_CONFIG_DIR and OPENCODE_CLIENT.
This ensures env var changes are reflected at access time.
Ensure  is present before calling load() to prevent Bun.write()
from creating an unwanted OPENCODE_CONFIG_CONTENT file in the root.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

OPENCODE_CONFIG_CONTENT bypasses {env:} and {file:} token substitution

1 participant