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

Support for global tools #47

Closed
hohwille opened this issue Sep 25, 2023 · 1 comment · Fixed by #113
Closed

Support for global tools #47

hohwille opened this issue Sep 25, 2023 · 1 comment · Fixed by #113
Assignees
Labels
enhancement New feature or request

Comments

@hohwille
Copy link
Member

We have implemented a lot of cross-cutting logic for tool installations in ToolCommandlet.
However, we have tools like Docker that behave very differently: Those are tools that get installed globally, that is:

  • You can not have multiple installations of the same tool on the same computer at a time.
  • These tools are NOT installed into IDE_HOME/software but somewhere globally into the system (e.g. C:\ProgramFiles on Windows or /Applications on MacOS).
  • The downloads of such tools will never be extracted (see isExtract() method) and actually installInRepo does not really make sense here.

We should discuss and decide the following design options:

  • Make ToolCommandlet more generic, add a protected method isGlobalInstallation() that returns false by default that can be overridden by global commandlets like docker.
  • Create abstract sub-classes GlobalToolCommandlet and LocalToolCommandlet derived from ToolCommandlet and make all existing ToolCommandlets derive from LocalToolCommandlet. Then move logic like installInRepo method into LocalToolCommandlet and also for some other methods like install(...) but keep an abstract signature for the latter in ToolCommandlet. Then implement the install(...) methods in GlobalToolCommandlet.
@hohwille hohwille added the enhancement New feature or request label Sep 25, 2023
@hohwille hohwille added this to the release:2024.01.001 milestone Sep 25, 2023
@github-project-automation github-project-automation bot moved this to 🆕 New in IDEasy board Sep 25, 2023
@hohwille
Copy link
Member Author

hohwille commented Oct 17, 2023

Once this story is implemented, we can discuss what global tools we could add to IDEasy:

  • git - actually we do not really require git-bash to be present to run our CLI that can also run directly from CMD without any bash being present (however some features like Add support for executing scripts #69 may not work). So we could also add the ability to install git via IDEasy so we download the latest installer and run it.
  • keepass (there is also a MacOs port and IMHO a linux variant)
  • subversion (TortoiseSVN on Windows?)
  • how about windows specific tools like Notepad++, SuperPutty/WinSCP/Kitty, ...
  • pre-requisites for native-image compilation with GraalVM (e.g. Visual Studio libs on Windows)

@salimbouch salimbouch self-assigned this Oct 18, 2023
@tobka777 tobka777 linked a pull request Oct 26, 2023 that will close this issue
@tobka777 tobka777 moved this from 🆕 New to 🏗 In progress in IDEasy board Oct 27, 2023
@tobka777 tobka777 moved this from 🏗 In progress to 👀 In review in IDEasy board Nov 1, 2023
hohwille pushed a commit that referenced this issue Nov 7, 2023
@github-project-automation github-project-automation bot moved this from 👀 In review to ✅ Done in IDEasy board Nov 7, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
Status: ✅ Done
Development

Successfully merging a pull request may close this issue.

2 participants