I have created a design proposal for swiftly proxies for more flexible toolchain selection during command invocation. For example, the toolchain can be selected, installed if necessary, using a special command-line argument with a '+' prefix:
I'm ok with wrappers that look like wrappers, but I personally don't like swift itself not only wrapping/driving swift tools, but also installing variants of itself, mainly because it's so much harder to police arguments than commands.
The alternative of having swiftly not only install but run commands (swiftly swift build ... or swiftly build ...) seems to give the proper notice.
Disclosure of self-interest: I say this having written clutch, a wrapper that builds swift scripts with dependencies, which garnered zero community interest :)
Cargo has similar syntax for invoking certain commands with different version. That's convenient. I'm not sure about implicit installation - I'd rather see an error suggesting install, but in general that's nice addition!
It seems that auto-installation might be a bit over-automated. I'll give this aspect more thought.
In terms of using the swiftly prefix for the toolchain commands, perhaps that's another option that can be provided. Requiring it would break the existing swiftly workflows, so I think that we will need to keep it.
Please note that the design and implementation have evolved based on feedback. The latest design doesn't permit selectors on the toolchain proxies directly, pending further discussion about the impact to the platform. See the PR link at the top of this thread for more details.