carvel-dev / vendir

Easy way to vendor portions of git repos, github releases, helm charts, docker image contents, etc. declaratively
https://carvel.dev/vendir
Apache License 2.0
267 stars 46 forks source link

Ability to do a find/replace on resulting tags prior to sorting #147

Open voor opened 2 years ago

voor commented 2 years ago

What steps did you take:

vendir tools sort-semver -v "v1.17.16_vmware.2-tkg.1  v1.17.16_vmware.2-tkg.2  v1.17.16_vmware.3-tkg.1  v1.18.16_vmware.1-tkg.1  v1.18.16_vmware.1-tkg.2  v1.18.16_vmware.3-tkg.1  v1.18.17_vmware.1-tkg.1  v1.18.17_vmware.2-tkg.1  v1.19.12_vmware.1-tkg.1  v1.19.12_vmware.1-tkg.2  v1.19.12_vmware.1-tkg.3-tf-v0.10.1  v1.19.16_vmware.1-tkg.1  v1.19.8_vmware.1-tkg.1  v1.19.8_vmware.1-tkg.2  v1.19.8_vmware.3-tkg.1  v1.19.9_vmware.1-tkg.1  v1.19.9_vmware.2-tkg.1  v1.20.11_vmware.1-tkg.1-tf-v0.10.1  v1.20.14_vmware.1-tkg.1  v1.20.14_vmware.1-tkg.2  v1.20.14_vmware.1-tkg.4  v1.20.14_vmware.1-tkg.4-tf-v0.11.2  v1.20.14_vmware.1-tkg.5  v1.20.4_vmware.1-tkg.1  v1.20.4_vmware.1-tkg.2  v1.20.4_vmware.3-tkg.1  v1.20.5_vmware.1-tkg.1  v1.20.5_vmware.2-fips.1-tkg.1  v1.20.5_vmware.2-tkg.1  v1.20.8_vmware.1-fips.1-tkg.2  v1.20.8_vmware.1-tkg.2  v1.20.8_vmware.1-tkg.3  v1.21.2_vmware.1-fips.1-tkg.1  v1.21.2_vmware.1-tkg.1  v1.21.2_vmware.1-tkg.2  v1.21.5_vmware.1-tkg.1-tf-v0.10.1  v1.21.8_vmware.1-tkg.1  v1.21.8_vmware.1-tkg.2  v1.21.8_vmware.1-tkg.4  v1.21.8_vmware.1-tkg.4-tf-v0.11.2  v1.21.8_vmware.1-tkg.5  v1.22.5_vmware.1-tkg.1  v1.22.5_vmware.1-tkg.3  v1.22.5_vmware.1-tkg.3-tf-v0.11.2  v1.22.5_vmware.1-tkg.4  "
Versions

Version  

Succeeded

What happened: Nothing is properly detected as semantic versioned.

What did you expect: Replacing + with _ is a common change since container tags cannot have a + in them. In fact most systems (like containerd) will actually replace the + into a _ for you.

vendir tools sort-semver -v "v1.17.16+vmware.2-tkg.1  v1.17.16+vmware.2-tkg.2  v1.17.16+vmware.3-tkg.1  v1.18.16+vmware.1-tkg.1  v1.18.16+vmware.1-tkg.2  v1.18.16+vmware.3-tkg.1  v1.18.17+vmware.1-tkg.1  v1.18.17+vmware.2-tkg.1  v1.19.12+vmware.1-tkg.1  v1.19.12+vmware.1-tkg.2  v1.19.12+vmware.1-tkg.3-tf-v0.10.1  v1.19.16+vmware.1-tkg.1  v1.19.8+vmware.1-tkg.1  v1.19.8+vmware.1-tkg.2  v1.19.8+vmware.3-tkg.1  v1.19.9+vmware.1-tkg.1  v1.19.9+vmware.2-tkg.1  v1.20.11+vmware.1-tkg.1-tf-v0.10.1  v1.20.14+vmware.1-tkg.1  v1.20.14+vmware.1-tkg.2  v1.20.14+vmware.1-tkg.4  v1.20.14+vmware.1-tkg.4-tf-v0.11.2  v1.20.14+vmware.1-tkg.5  v1.20.4+vmware.1-tkg.1  v1.20.4+vmware.1-tkg.2  v1.20.4+vmware.3-tkg.1  v1.20.5+vmware.1-tkg.1  v1.20.5+vmware.2-fips.1-tkg.1  v1.20.5+vmware.2-tkg.1  v1.20.8+vmware.1-fips.1-tkg.2  v1.20.8+vmware.1-tkg.2  v1.20.8+vmware.1-tkg.3  v1.21.2+vmware.1-fips.1-tkg.1  v1.21.2+vmware.1-tkg.1  v1.21.2+vmware.1-tkg.2  v1.21.5+vmware.1-tkg.1-tf-v0.10.1  v1.21.8+vmware.1-tkg.1  v1.21.8+vmware.1-tkg.2  v1.21.8+vmware.1-tkg.4  v1.21.8+vmware.1-tkg.4-tf-v0.11.2  v1.21.8+vmware.1-tkg.5  v1.22.5+vmware.1-tkg.1  v1.22.5+vmware.1-tkg.3  v1.22.5+vmware.1-tkg.3-tf-v0.11.2  v1.22.5+vmware.1-tkg.4
"
Versions

Version  
v1.17.16+vmware.2-tkg.1  
v1.17.16+vmware.2-tkg.2  
v1.17.16+vmware.3-tkg.1  
v1.18.16+vmware.1-tkg.1  
v1.18.16+vmware.1-tkg.2  
v1.18.16+vmware.3-tkg.1  
v1.18.17+vmware.1-tkg.1  
v1.18.17+vmware.2-tkg.1  
v1.19.8+vmware.1-tkg.1  
v1.19.8+vmware.1-tkg.2  
v1.19.8+vmware.3-tkg.1  
v1.19.9+vmware.1-tkg.1  
v1.19.9+vmware.2-tkg.1  
v1.19.12+vmware.1-tkg.1  
v1.19.12+vmware.1-tkg.2  
v1.19.12+vmware.1-tkg.3-tf-v0.10.1  
v1.19.16+vmware.1-tkg.1  
v1.20.4+vmware.1-tkg.1  
v1.20.4+vmware.1-tkg.2  
v1.20.4+vmware.3-tkg.1  
v1.20.5+vmware.1-tkg.1  
v1.20.5+vmware.2-fips.1-tkg.1  
v1.20.5+vmware.2-tkg.1  
v1.20.8+vmware.1-fips.1-tkg.2  
v1.20.8+vmware.1-tkg.2  
v1.20.8+vmware.1-tkg.3  
v1.20.11+vmware.1-tkg.1-tf-v0.10.1  
v1.20.14+vmware.1-tkg.1  
v1.20.14+vmware.1-tkg.2  
v1.20.14+vmware.1-tkg.4  
v1.20.14+vmware.1-tkg.5  
v1.20.14+vmware.1-tkg.4-tf-v0.11.2  
v1.21.2+vmware.1-fips.1-tkg.1  
v1.21.2+vmware.1-tkg.1  
v1.21.2+vmware.1-tkg.2  
v1.21.5+vmware.1-tkg.1-tf-v0.10.1  
v1.21.8+vmware.1-tkg.1  
v1.21.8+vmware.1-tkg.2  
v1.21.8+vmware.1-tkg.4  
v1.21.8+vmware.1-tkg.5  
v1.21.8+vmware.1-tkg.4-tf-v0.11.2  
v1.22.5+vmware.1-tkg.1  
v1.22.5+vmware.1-tkg.3  
v1.22.5+vmware.1-tkg.4  
v1.22.5+vmware.1-tkg.3-tf-v0.11.2  

Highest version: v1.22.5+vmware.1-tkg.3-tf-v0.11.2

Succeeded

Anything else you would like to add: I don't want to solutionize here, since folks might intentionally have the _ there and it's not meant to turn into a +, just illustrating that in this isolated event treating the _ as a + would fix things.

Environment:


Vote on this request

This is an invitation to the community to vote on issues, to help us prioritize our backlog. Use the "smiley face" up to the right of this comment to vote.

👍 "I would like to see this addressed as soon as possible" 👎 "There are other more important things to focus on right now"

We are also happy to receive and review Pull Requests if you want to help working on this issue.

joe-kimmel-vmw commented 2 years ago

Thanks @voor - it seems like the library we're using is enforcing the semver 2.0.0 BNF grammar which includes the + as you show above, and - (hyphens) (to designate prereleases) but not underscores.

voor commented 2 years ago

I've updated the title to reflect what I actually need. If I remove the _vmware.1 part from the versions then sorting can proceed:

vendir tools sort-semver -v "v1.19.12-tkg.1  v1.19.12-tkg.2  v1.19.12-tkg.3-tf-v0.10.1  v1.19.16-tkg.1  v1.20.11-tkg.1-tf-v0.10.1  v1.20.14-tkg.1  v1.20.14-tkg.2  v1.20.14-tkg.4  v1.20.14-tkg.4-tf-v0.11.2  v1.20.14-tkg.5  v1.20.15-tkg.1  v1.20.8-tkg.2  v1.20.8-tkg.3  v1.21.11-tkg.1  v1.21.2-tkg.1  v1.21.2-tkg.2  v1.21.5-tkg.1-tf-v0.10.1  v1.21.8-tkg.1  v1.21.8-tkg.2  v1.21.8-tkg.4  v1.21.8-tkg.4-tf-v0.11.2  v1.21.8-tkg.5" --prerelease

I need some sort of find/replace capability on the versions prior to attempting sorting. Whether that's changing _ to +, or in my case removing a chunk of erroneous text from the versions.