Closed5

volta uninstall node@x.x.x がしたい

morishinmorishin

いつまで経っても volta uninstall node@x.x.x コマンドが実装されなくて issue や Discord を見に行ったけど作れない理由がはっきりしないのでコードを読んでみる。Rust は書いたことはおろか読んだことも無いのだけれど。あわよくば実装 & PR して議論の土台にしてもらう。

morishinmorishin

volta install の流れはわかったので volta uninstall の実装を見る。

今は volta uninstall node@x.x.x を実行するとエラーが出る仕様。呼ばれるのはここ。

https://github.com/volta-cli/volta/blob/aace0e5463239fde35e343fb3d203ccf43814478/crates/volta-core/src/tool/mod.rs#L120-L150

node や yarn の uninstall は ErrorKind::Unimplemented が出るようになっている。package の uninstall は package::uninstall が呼ばれている。

コメントに

/// This is implemented on Spec, instead of Resolved, because there is currently no need to
/// resolve the specific version before uninstalling a tool.

と書いてあるが、今やりたいのは volta uninstall node@x.x.x というバージョンを指定した uninstall なので Spec::uninstall は使えない。これとは別に Tool::uninstall を定義しようと思う。(Tool というのが Spec::resolve の戻り値型で、コメント中の "Resolved" のことだと思う)

morishinmorishin

Tool に uninstall 関数を宣言して

https://github.com/volta-cli/volta/blob/10747684457cde7008e7c0f4593862a500ba1c54/crates/volta-core/src/tool/mod.rs#L62-L72

impl Tool for Node {} に実装を書いた

https://github.com/volta-cli/volta/blob/10747684457cde7008e7c0f4593862a500ba1c54/crates/volta-core/src/tool/node/mod.rs#L249-L263

これを PR にして issue に貼って、これではダメですかという感じで議論の材料にしてみることにした。

https://github.com/volta-cli/volta/issues/327#issuecomment-1901831669

このスクラップは2024/08/30にクローズされました