I am embarking on a project to create a Windows-native version of SDKMAN that utilizes shims to manage software installations and updates. To get started, I would like to learn from the experience of existing package managers like Scoop and Chocolatey, and understand the pros, cons, and areas for improvement in their approach.
My ultimate goal is to make it easier for Windows users to manage their Java and other software development kits using SDKMAN. I want to enable Windows users to access the same features and benefits that Linux and Mac users have been enjoying with SDKMAN for years, while also leveraging the advantages of shims for seamless integration with the Windows environment.
Specifically, I would like to know:
What are the key components of a package manager with shims for Windows, and how can they be adapted to create a Windows-native SDKMAN?
What are the advantages and disadvantages of using shims in a package manager for Windows, and how can they be optimized for SDKMAN?
How can I create and manage shims effectively in my package manager, based on the experience of Scoop and Chocolatey, to ensure seamless integration with the Windows environment?
What are some common challenges and pitfalls in building a package manager with shims for Windows, and how can I avoid them while building a native SDKMAN tool for Windows?
What are some additional features or capabilities that I should consider incorporating into my native SDKMAN tool for Windows to make it more useful and efficient for Windows users?
Thus, far I have explored the idea of using both Go,Rust,C#,C++ and Powershell. Any recommendations?
I would appreciate any insights or guidance on these questions as I begin to work on this project. Thank you in advance for your help!
Buglione, I've been working on a similar tool. I have been using it internally in my company to accommodate multiple development environments. I have been trying to opensource it.
https://github.com/bazurto/bz
Right now I have Openjdk, Groovy and Python for Mac, Windows and Linux (amd64 and Arm64)
create a .bz.hcl file:
Then you can execute python scripts by running
or you can you start a shell with python in your path, then you just execute python directly:
It has some bugs and I'm trying to add more features. Let me know if this is helpful or want to collaborate on it.