VSCode Extension should maybe install Flux CLI
Ideating on the idea that the Extension should or should not install the CLI for users that are missing it
Right now the docs mention that you need: prerequisites (kubectl, flux) – users are just expected to install them.
- (Use the preferred package manager)
- Detect if you have homebrew installed
- Provide a prompt and let you know if flux CLI is outdated or missing
- One-click installer is nice but we don't want to bundle a Flux binary that becomes outdated
- (What if you don't have homebrew)
Maybe we shouldn't try to install the binaries, seems to be the consensus – users don't want surprising things to happen in their environment outside of the editor because they installed some extension, it would be bad if we did those things.
It will be complicated especially for Flux users who are on a particular version of Flux, who don't want to upgrade (because their cluster hasn't been upgraded yet), or for users who are mixing Windows and Linux environments like those who are on WSL vs those who are not.
- [ ] Make sure the behavior is defined when flux / kubectl CLI are missing
- [ ] Warn users about compatibility - if the flux CLI is on a different version than is bootstrapped in the cluster
- [ ] This last one might need some support from Flux upstream,
flux checkshould have a JSON output version
There is some attention to this already, thanks for finding this Paulo and Daniel: https://github.com/weaveworks/vscode-gitops-tools/blob/bdf39cfcb131c51623509bf99d7a3832a1d4d14a/src/install.ts#L122
https://github.com/weaveworks/vscode-gitops-tools/blob/bdf39cfcb131c51623509bf99d7a3832a1d4d14a/src/utils/fsUtils.ts#L165
https://github.com/weaveworks/vscode-gitops-tools/blob/bdf39cfcb131c51623509bf99d7a3832a1d4d14a/src/commands/installFluxCli.ts#L139
I'm curious whether instead of attempting to add things to the developer environment we shouldn't supply an included devcontainer configuration which includes the latest/pinned supported version of Flux cli - give the developer tools up front the latest/pinned supported version of SOPS cli -provide a secrets Guide with the tooling we support the latest/supported version of the GitHub 'gh' cli - provide a cli means of bootstrapping the deploy key via cli anything else that the customer might want.
We can also use something like tasks.json to create 'guides' that can quickstart a developer to success including opening specific docs/guides. I have some examples of these ideas if they need to be discussed.
The dev container is an interesting idea.
While I was exploring this feature, I noticed that I have a gofish binary and it was detected and used.
Bad news is: Flux's gofish is now 4 minor releases out of date, as it (GoFish itself) was archived 3 weeks ago and won't be maintained anymore. We'll have to remove the gofish support at least from the VScode extension, (~also from the Flux docs ::~ done: https://github.com/fluxcd/website/pull/852), since right now the "Install CLI" button fetches an outdated version of the CLI if it can, and that's obviously not ideal.