Skip to content

Provider configuration schema#459

Open
cadeljones wants to merge 14 commits intorailwayapp:mainfrom
cadeljones:file-base-provider-config
Open

Provider configuration schema#459
cadeljones wants to merge 14 commits intorailwayapp:mainfrom
cadeljones:file-base-provider-config

Conversation

@cadeljones
Copy link

@cadeljones cadeljones commented Feb 14, 2026

About this PR

The goal of this PR is to support provider specific configuration in the config file.

{
  "elixir": {
    "version": "1.16.3-otp-26",
    "erlangVersion": "27.3"
  }
}

Issue #218

This change supports all existing provider config options.

This a new option for provider configuration and does not change existing behavior.

Testing these changes

Unit tests were added to validate each provider and config option.

Manual testing was done for each provider using the plan command.

I created a config file for each provider in the example apps (not committed) and ensured the new config options affected the output.

mise run cli -- plan --config-file railpack.local.json examples/deno-2

Future improvements

  • Update docs with new file config option and an explanation of the precedence in which these get applied.
  • Consider exposing resolved config sources in verbose CLI output for easier troubleshooting.

Copy link
Collaborator

@iloveitaly iloveitaly left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wow, thanks for all of your hard work here! Sorry for how long it's taken me to review.

  • I'm not sure if we want to add DENO_VERSION, etc. The versions can be customized via mise.toml and I'd rather not add additional logic for these lesser-used languages. Let's remove any config option additions from this PR.
  • I'd rather keep the config structs in the provider file, unless there's a good reason not to. An exception could be more complicated providers like Node.
  • I haven't looked into if this is possible with Go, but what I'd like to do is (a) set the config options in a struct (b) have a helper that for a given key on the struct generates a consistent ENV var name. StaticfileConfig.root => STATICFILE_ROOT => RAILPACK_STATICFILE_ROOT (via GetConfigVariable)

I'll have some more comments later, but wanted to get you some initial thoughts before I have time to think this through in more detail.

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.

2 participants