Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Include tooling removal methods #69

Open
wants to merge 7 commits into
base: main
Choose a base branch
from

Conversation

CompeyDev
Copy link
Contributor

@CompeyDev CompeyDev commented Aug 17, 2024

Adds a rokit remove command to remove installed tools, which works similar to rokit add.

Closes #3.

* Added `RokitManifest::remove_tool` to remove a tool from the manifests
* Added `ToolStorage::remove_tool_link` to remove a link for an
  installed tool
@CompeyDev CompeyDev changed the title feat: include tooling removal methods Include tooling removal methods Aug 21, 2024
Copy link
Collaborator

@filiptibell filiptibell left a comment

Choose a reason for hiding this comment

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

Went through the code and it looks good overall, and it looks like this is mostly copied from the add command, so I just left a few nits.
However, the reason the remove command was not implemented before Rokit's release is because there were some additional things to consider. They all stem from the fact that Rokit does not and can not know about all rokit.toml files on the system.

  1. Should the remove command only remove tools from the single manifest, similar to add? If so, how do we communicate to a user that the tool may still exist on their system, just not in the chosen manifest?
  2. If the command should remove tool binaries, which ones does it remove?
    • All of them, requiring a reinstall in Rokit projects that may still be using the tool
    • Only the one listed in the manifest, leaving remaining binaries, but the exact tool may still need a reinstall in other Rokit projects
  3. If the command should remove tool links, how do we make sure this is actually correct? A user can have a tool such as rojo = "Kampfkarren/selene@x.y.z" if they so desire, and this would actually need the rojo link to still exist.

I dont have a good answer to these questions but it seems to me like #70 considered it to some extent (it removed the link only when all tool binaries were gone).
Maybe it would be good to have some combination of a remove + uninstall subcommand, where uninstall nukes the binaries while remove only deals with manifests.

lib/manifests/rokit.rs Outdated Show resolved Hide resolved
lib/manifests/rokit.rs Outdated Show resolved Hide resolved
src/cli/remove.rs Outdated Show resolved Hide resolved
src/cli/remove.rs Outdated Show resolved Hide resolved
src/cli/remove.rs Outdated Show resolved Hide resolved
@@ -1,5 +1,6 @@
use anyhow::{Context, Result};
use clap::{ArgAction, CommandFactory, Parser};
use remove::RemoveSubcommand;
Copy link
Collaborator

Choose a reason for hiding this comment

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

I assume this was an auto import, so rust-analyzer put it up here, but all the imports for commands are grouped below so the new import should be there as well.

CompeyDev and others added 5 commits August 28, 2024 11:06
Co-authored-by: Filip Tibell <filip.tibell@gmail.com>
Co-authored-by: Filip Tibell <filip.tibell@gmail.com>
Co-authored-by: Filip Tibell <filip.tibell@gmail.com>
Co-authored-by: Filip Tibell <filip.tibell@gmail.com>
Co-authored-by: Filip Tibell <filip.tibell@gmail.com>
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Add a command for uninstalling a tool/all of them
2 participants