TaKO8Ki / frum

A little bit fast and modern Ruby version manager written in Rust
MIT License
628 stars 15 forks source link

`frum install --list` shows duplicated versions #100

Closed kenoss closed 2 years ago

kenoss commented 2 years ago

commit: e4fdb56 should reproduce it.

$ rbenv install --list | wc -l; rbenv install --list | sort | uniq | wc -l
483
483

$ cargo run install --list | wc -l; cargo run install --list | sort | uniq | wc -l
    Finished dev [unoptimized + debuginfo] target(s) in 0.04s
     Running `target/debug/frum install --list`
792
    Finished dev [unoptimized + debuginfo] target(s) in 0.04s
     Running `target/debug/frum install --list`
282
$ cargo run install --list
    Finished dev [unoptimized + debuginfo] target(s) in 0.04s
     Running `target/debug/frum install --list`
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.2.6
1.3.1-990215
1.3.1-990224
1.3.1-990225
(...snip...)
2.7.4
2.7.4
2.7.4
2.7.4
3.0.0-preview1
3.0.0-preview1
3.0.0-preview1
3.0.0-preview1
3.0.0-preview2
3.0.0-preview2
3.0.0-preview2
3.0.0-rc1
3.0.0-rc1
3.0.0-rc1
3.0.0
3.0.0
3.0.0
3.0.1
3.0.1
3.0.1
3.0.2
3.0.2
3.0.2
kenoss commented 2 years ago

This is because https://cache.ruby-lang.org/pub/ruby/index.txt returns multiple urls for each version.

$ curl https://cache.ruby-lang.org/pub/ruby/index.txt
(...snip...)
ruby-3.0.2  https://cache.ruby-lang.org/pub/ruby/3.0/ruby-3.0.2.tar.gz  e00784956ed2083a40e269d8b14e571b8fae9a0f    5085dee0ad9f06996a8acec7ebea4a8735e6fac22f22e2d98c3f2bc3bef7e6f1    e1fba6f5429b5fca9c3f52a32535615fcf95fafa415efc71c46db4cce159f249112c01574c305026be5c50140335696042e47a74194caea045acbfaa4da738cd
ruby-3.0.2  https://cache.ruby-lang.org/pub/ruby/3.0/ruby-3.0.2.tar.xz  cd04711ed3adecbe244c3b4391e67430d11fa9f8    570e7773100f625599575f363831166d91d49a1ab97d3ab6495af44774155c40    0f702e2d8ca1342a9d4284dbdd234a3588e057b92566353aa7c21835cf09a3932864b2acf459a976960a1704e9befa562155d36b98b7cda8bd99526e10a374c4
ruby-3.0.2  https://cache.ruby-lang.org/pub/ruby/3.0/ruby-3.0.2.zip 9cde469fec5c9f8edd1d055fc4a9cc90b9611700    79e34f7fab000cb64ede8c39724ae240e36ee5905c752d77ec61a067d5e4e1dd    2eb1ce4d66b06ccdee835a017c0edd4028fff99a29f4a631ffb5b39289afcb6a88f79eb24cf09e78d2baaa7c3e494448e2701a0a976bb092de6f2929f1934325

ruby-build does sort and uniq.

kenoss commented 2 years ago

My above description is not correct. ruby-build has its master data in it, e.g. https://github.com/rbenv/ruby-build/blob/v20210825/share/ruby-build/3.0.1 . I guess the URL is chosen by humans. frum does not and retrieve a list from https://cache.ruby-lang.org/pub/ruby/index.txt .