-
Notifications
You must be signed in to change notification settings - Fork 320
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
multiple aqua registries - Feature parity with Aqua #3364
Comments
I think we should support this. Right now you can override the entire registry but we lack a way to provide multiple which would be useful.
I don't think this needs a dedicated command. You can do this like this already which I think is fine:
There is also an existing ticket for #1039 which is probably better for the multi-stage docker use-case anyhow.
I don't think I understand the value of being able to have different mise versions side-by-side. This is not how mise is designed and doing so is not only a lot of work but would involve a lot of future maintenance burden to keep that a supported use-case. I don't believe anyone has ever asked for the ability to run different versions of mise together, they just need a way to downgrade mise globally to prevent breaking changes or bugs when the occur.
I don't use renovate with mise or maintain that integration. As I understand it renovate does support mise already but any requests for improvements there would likely need to go to them.
this is mentioned on the roadmap
this can be added, we already extract pkg files for installing swift so the logic just needs to be extended to aqua
I think |
I believe there is a big value in having a locked version of Mise in each repo, just like there is value in locking all of the packages that Mise installs. For example, if you've intrduced a new feature in a new version and also deprecated an existing feature in the same release, now the new version cannot be used globally - if I have one project which needs the new feature and one project that needs the deprecated feature as it didn't migrate from it yet.
Should I open a separate issue for this?
This is different than the tags feature. Aqua has a similar feature which allows you to split the config files: https://aquaproj.github.io/docs/guides/split-config/ The tags feature augments this as you can specify a tag across all files and choose to install only those packages, |
I don't believe I ever do this. Once a feature comes out of experimental it stays forever. If this ever were to be done it would involve a long migration path with warnings so that people have plenty of time to migrate without needing to have separate versions installed. If you're talking about experimental features, well that comes with the territory. Wait until things become stable before relying on them.
The only use-case I can think of that tags would cover is you could use multiple envs, e.g.: |
I added some of these, namely |
I have found more Aqua features which are missing from Mise:
mise WARN failed to resolve toolset: [~/repositories/package-managers/.mise.toml] aqua:alpkeskin/[email protected]: packages[0].typ
e: unknown variant `go_install`, expected one of `github_archive`, `github_content`, `github_release`, `http` at line 2 column
11
At this point I'm wondering if Mise should run the aqua binary directly instead of reimplementing all of its features. |
I can give some more examples:
What is the downside of "officially" supporting different mise versions per project? The global config file? If that's the reason then it should be a non-issue since it should be backwards compatible |
it's a lot extra maintenance work to make sure mise is forwards and backwards compatible |
I think you could probably achieve an isolated installation today by updating various environment variables as mentioned in #3306 (comment) and ignoring the global config file using |
More things you can do to manage separate installs: You can use the tool 'ubi:jdx/mise' with a pinned version. I don't think it will change the mise used for hook-env or cd/enter/leave hooks but it will fix the version for any calls to mise. This might not be officially supported but it should work. Instead of using 'ubi:jdx/mise' you could use mise.run:
As @hverlin mentioned you can change these https://mise.jdx.dev/directories.html#directory-structure values and https://mise.jdx.dev/configuration/settings.html#ignored_config_paths as you desire. Also you have min_version https://mise.jdx.dev/configuration.html#minimum-mise-version I'm curious if you need any more than this. Personally min_version is enough for me, bugs are often fixed fast and I've not had any breaking changes that weren't hard to adapt to. |
Thanks all, i'll look into the suggested workarounds. @jdx what are your thoughts on #3364 (comment)? |
You should use the go backend for that. I don't want to add support for package types that require dependencies like go.
Seems to work for me, unless this is something specific about overriding the registry_url:
Who said I was reimplementing all of its features? |
The problem is not with installing it, but with searching for it within the registry. |
oh I understand: the mise registry and the aqua registry are not the same thing. Perhaps confusing naming but I don't think we can do anything about that. |
@jdx doesn't mise bundle the aqua registry? |
yes but I think there is some confusion about why the aqua backend exists in mise. It's definitely not for users coming from aqua that just want to manage a similar setup through mise. It's mostly so we can leverage the standard aqua registry as a data source for giving mise a tighter supply chain. Just because you can do something in aqua doesn't mean you should be able to do so in mise. I'm not interested in duplicating functionality—if you want that just use aqua. |
So each entry from the aqua registry is explicitly added to the mise registry and only then it can be searched for? |
It's a manual process to know if something can be installed/used via mise |
Aqua is one of 9 backends (10 if you count core), and not all aqua tools are guaranteed to work in mise. Rather than trying to build a search feature for 10 different tools I personally think it makes more sense to just search the unified registry, and spend the effort getting more aqua tools into the mise registry. Also some tools can't even be searched. Ubi has no index, it can be any github repo. asdf, vfox, and go have no index, it can be any git repo. And npm has over 3.1 million packages, so it might not make sense to maintain a local index for that. You can also still install aqua for searching if you like. I install it with ubi. That's just my take anyway. |
Hi,
While trying to migrate to Mise from Aqua + Direnv, I've come across a few issues with features that exist in Aqua but not in Mise.
aqua.yaml
you can define multiple registries including a local registry, so if you want to install a package that does not exist in the aqua standard registry you can define it locally: https://aquaproj.github.io/docs/develop-registry/#use-as-a-local-registrymise self-update
,aqua update-aqua
will keep multiple downloaded versions of aqua locally and symlink the one specified. This allows you to switch between different versions of aqua in different projects seamlessly without redownloading the binary every time.--install
flag. Current workaround with mise -mise use --pin $(mise registry -b aqua | fzf --multi | awk '{print $2}')
.pkg
format:The text was updated successfully, but these errors were encountered: