Skip to content
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

Show latest not working on .toml and README needs to be updated #252

Open
wants to merge 5 commits into
base: master
Choose a base branch
from

Conversation

warrensbox
Copy link
Owner

Context

The documentation on the website and README is not up-to-date.
The show latest feature was not working for users using the .toml file

Fixed

  • Update the switch statement for .toml users
  • Update documentation on the website and README

Upgrade

N/A

Added

N/A

Removed

N/A

Fixes:

#249

@warrensbox warrensbox changed the title Fix/bug document show latest Show latest not working on .toml and README needs to be updated Jun 20, 2022
Copy link
Collaborator

@yermulnik yermulnik left a comment

Choose a reason for hiding this comment

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

  1. My comments to README apply to Quick-Start.md.
  2. I feel like main.go should not have hardcoded values for outputs of -S and -s, but rather have constraints mentioned the same way you PR'ed to README.

@@ -85,24 +85,24 @@ tfswitch #will automatically switch to terraform version 0.14.4
3. Hit **Enter** to install.
### Install latest implicit version for stable releases
1. Install the latest implicit stable version.
2. Ex: `tfswitch -s 0.13` or `tfswitch --latest-stable 0.13` downloads 0.13.6 (latest) version.
2. Ex: `tfswitch -s 0.13` or `tfswitch --latest-stable 0.13` downloads <1.1.0, >=1.0.0, 1.0 downloads <2.0.0, >=1.0.0.
Copy link
Collaborator

Choose a reason for hiding this comment

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

I had to re-read several times to make myself sure I get the things, hence the suggestion from regular user's standpoint:

Suggested change
2. Ex: `tfswitch -s 0.13` or `tfswitch --latest-stable 0.13` downloads <1.1.0, >=1.0.0, 1.0 downloads <2.0.0, >=1.0.0.
2. Ex: `tfswitch -s 0.13` or `tfswitch --latest-stable 0.13` downloads `>=1.0.0, <1.1.0`, and `tfswitch -s 1.0` or `tfswitch --latest-stable 1.0` downloads `>=1.0.0, <2.0.0`.

Also would it worth to mention the logic is the same as what pessimistic constraint operator does in TF version constraint?
https://www.terraform.io/language/expressions/version-constraints#-3

Copy link
Owner Author

Choose a reason for hiding this comment

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

I will try to reword it

3. Hit **Enter** to install.
### Install latest implicit version for beta, alpha and release candidates(rc)
1. Install the latest implicit pre-release version.
2. Ex: `tfswitch -p 0.13` or `tfswitch --latest-pre 0.13` downloads 0.13.0-rc1 (latest) version.
2. Ex: `tfswitch -p 0.13` or `tfswitch --latest-pre 0.13` downloads 0.13.0-rc1.
Copy link
Collaborator

Choose a reason for hiding this comment

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

This is a bit confusing that -p works differently than e.g. -s. Though this flag's audience assumably is quite small to rework the logic 🤔

Copy link
Owner Author

Choose a reason for hiding this comment

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

Yeah, -p only works for major.minor while -s works for major.minor.patch.

At that time, I do not know modify the regex to work with 0.0.X with X being 0-rc1 (alphanumeral+dash).

I am open to modifications, if anyone can make it better.

### Show latest implicit version for stable releases
1. Show the latest implicit stable version.
2. Ex: `tfswitch -S 0.13` or `tfswitch --show-latest-stable 0.13` shows 0.13.6 (latest) version.
3. Hit **Enter** to show.
2. Ex: `tfswitch -S 0.13` or `tfswitch --show-latest-stable 0.13` prints 0.15.5
Copy link
Collaborator

Choose a reason for hiding this comment

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

I'm sure they won't release any more version lower than 1.0, but just to stay on safe side:

Suggested change
2. Ex: `tfswitch -S 0.13` or `tfswitch --show-latest-stable 0.13` prints 0.15.5
2. Ex: `tfswitch -S 0.13` or `tfswitch --show-latest-stable 0.13` prints 0.15.5 (latest version which falls under `>=1.0.0, <1.1.0` constraint as of June, 2022)

### Show latest implicit version for beta, alpha and release candidates(rc)
1. Show the latest implicit pre-release version.
2. Ex: `tfswitch -P 0.13` or `tfswitch --show-latest-pre 0.13` shows 0.13.0-rc1 (latest) version.
3. Hit **Enter** to show.
2. Ex: `tfswitch -P 0.13` or `tfswitch --show-latest-pre 0.13` prints 0.13.0-rc1.
Copy link
Collaborator

Choose a reason for hiding this comment

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

This is a bit confusing that -P works differently than e.g. -S. Though this flag's audience assumably is quite small to rework the logic 🤔

@warrensbox
Copy link
Owner Author

I will look at this for release v1.12.
I am not sure, if it's still relevant

showLatestPre := getopt.StringLong("show-latest-pre", 'P', defaultLatest, "Show latest pre-release implicit version. Ex: tfswitch --show-latest-pre 0.13 prints 0.13.0-rc1 (latest)")
latestStable := getopt.StringLong("latest-stable", 's', defaultLatest, "Latest implicit version based on a constraint. Ex: tfswitch --latest-stable 0.13.0 downloads 0.13.7 and 0.13 downloads 0.15.5 (latest)")
showLatestStable := getopt.StringLong("show-latest-stable", 'S', defaultLatest, "Show latest implicit version. Ex: tfswitch --show-latest-stable 0.13 prints 0.13.7 (latest)")
latestPre := getopt.StringLong("latest-pre", 'p', defaultLatest, "Latest pre-release implicit version. Ex: tfswitch --latest-pre 0.13 downloads 0.13.0-rc1")
Copy link
Collaborator

Choose a reason for hiding this comment

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

Is it worth quoting the command here to provide visible separation between the command and the expected result?
e.g.

latestPre := getopt.StringLong("latest-pre", 'p', defaultLatest, "Latest pre-release implicit version. Ex: `tfswitch --latest-pre 0.13` - downloads 0.13.0-rc1")

Copy link
Collaborator

Choose a reason for hiding this comment

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

+1
Though I'd suggest to use double quotes instead of backticks as a more common thing in descriptions I guess.

@@ -102,21 +102,29 @@ func main() {

switch {
/* GIVEN A TOML FILE, */
/* show all terraform version including betas and RCs*/
/* show all terraform version including betas and RCs */
case *listAllFlag:
Copy link
Collaborator

Choose a reason for hiding this comment

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

I'm trying to work out why this case switch logic is duplicated for the TOML file.
Can the TOML file detection not be done before the switch case and just update the variables for version/binPath and then run the single case switch?

Copy link
Collaborator

Choose a reason for hiding this comment

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

Though, I'm happy to take a look at trying to simplify this outside of this PR, if you agree?

Copy link
Collaborator

Choose a reason for hiding this comment

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

Ah, just realised the PR was started 2 years ago 😅

@warrensbox
Copy link
Owner Author

@yermulnik is this still relevant or can we close this?

@yermulnik
Copy link
Collaborator

@yermulnik is this still relevant or can we close this?

Not sure this is still relevant (even if the "issue" is till there) as it's been a while. I'd suggest we close it and re-open via another issue if this is still relevant.

@yermulnik yermulnik added documentation Add or improve documentation: README/CHANGELOG/comments on code enhancement Refactor existing code for better performance and quality labels Jul 7, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Add or improve documentation: README/CHANGELOG/comments on code enhancement Refactor existing code for better performance and quality
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants