mise icon indicating copy to clipboard operation
mise copied to clipboard

Expand configuration discovery to allow `.rtx.dist.toml` for default project configuration/tasks

Open vadimvera opened this issue 1 year ago • 3 comments

This new file name, .rtx.dist.toml (intended to be included in the repositories), if finally introduced, I think it adds more semantics because it's more clear that this file is intended to be delivered with the project.

Although the semantic meaning of file names often depends on established conventions within a specific context, the use of .dist in filenames is a well-established convention in various software projects — indicating a distribution or default configuration. Additionally, it suggests that this file serves as a template or baseline configuration that can be distributed with the software.

Basically, what I'm trying to explain is that having an .rtx.dist.toml conveys more the intended purpose and usage, making it clear that this file is meant as a starting point for users. On the other hand, .rtx.toml seems more to be a user-specific configuration file — because the absence of a suffix (like .dist) implies that this file is intended for individual customization rather than serving as a default or baseline. Likewise, anything declared in .rtx.toml expands/overwrites what's in .rtx.dist.toml.

vadimvera avatar Jan 02 '24 21:01 vadimvera

so I get that this is a convention and I like sticking with conventions. That said, it goes against the grain a little bit because my intention was that .rtx.toml would generally be committed but .rtx.local.toml would be used for config you don't want to share (likely in people's global gitignore).

I am also conscious of the current table listing out all the load order: https://mise.jdx.dev/profiles.html. It's a mess, hard to read, and it's actually missing a lot of undocumented files anyway.

I think where I struggle with .mise.dist.toml is I don't see a use-case where someone would need .mise.dist.toml, .mise.toml, and .mise.local.toml—except one where .mise.dist.toml isn't actually loaded but a template that people are expected to copy into place (where we wouldn't want to automatically load it anyways).

Anyhow. I'm definitely leaning towards not doing this, but very open to being persuaded. If we do decide to do this, a prerequisite is going to require that we clean up that load order into something that is a lot clearer.

jdx avatar Jan 04 '24 18:01 jdx

so I get that this is a convention and I like sticking with conventions. That said, it goes against the grain a little bit because my intention was that .rtx.toml would generally be committed but .rtx.local.toml would be used for config you don't want to share (likely in people's global gitignore).

I'm aware there is already a combination (e.g.: .mise.toml and .mise.local.toml) to achieve something similar.

Still, I created the issue because the introduction of .rtx.dist.toml is aiming to provide semantic clarity by indicating a default or baseline configuration for distribution with the software. I really think this can enhance understanding, especially for those new to the project in question.

I am also conscious of the current table listing out all the load order: https://mise.jdx.dev/profiles.html. It's a mess, hard to read, and it's actually missing a lot of undocumented files anyway.

Actually, this was the main motive for the issue.

Moreover, it's a little bit weird (to me) to have profiles/environments at this level, but some type of applications will definitely get advantage of this behavior. In general, modern applications follow the twelve-factor methodology so there will be something similar to what mise is providing for profiles/environments, but the support is slightly different with a heavy usage on environment variables. In any case, that's subjective because in the end, all the tools converge and provide the same functionality.

I think where I struggle with .mise.dist.toml is I don't see a use-case where someone would need .mise.dist.toml, .mise.toml, and .mise.local.toml—except one where .mise.dist.toml isn't actually loaded but a template that people are expected to copy into place (where we wouldn't want to automatically load it anyways).

Agreed. I don't see either a need for .mise.local.toml because .mise.toml will fill that gap.

Since this is merely subjective (till certain extent), I suggest to leave it open, if you are not completely onboard, to gather more input and preferences.

ghost avatar Jan 04 '24 22:01 ghost

I think we can keep it open for a few days as I mull it over. It's definitely worth considering.

jdx avatar Jan 04 '24 22:01 jdx