Things I want to implement different to how they are in scoop.
WIP:
- Cleanup with retention count
Scoop allows you to cleanup a single app or all apps, but it doesn't allow you to specify a retention count. This is a problem, because you might want to keep the last 3 versions of an app. This is especially useful for executing some kind of cleanup task.
So you'd execute:
spoon cleanup --retention 3 vscode spoon cleanup --retention 3 *
While the default would be to keep the last 2 versions, as itd always wise to keep the last version and the one before that. You may aswell force it to 1 though.
- No plan to support global apps for now.
WIP
Scoop wastes time by not parallelizing the installation of apps with the download of installation files.
Since scoop probably does a smart thing or two when installing, one way to do
this in a way to not replicate too much of scoops logic, would be to populate
the cache and then trigger scoop install
.
Scoop currently allows something such as
scoop install tokei@12.1.1
This creates an autogenerated manifest in workspaces
. This manifest is
referred to in 12.1.1/install.json
. This has the downside that you can't
reset the pacakage back to its bucket version easily (or its not apparent how)
and the package is neither hold nor can it be unhold.
I've tested manually changed the install.json
to refer to the bucket version
again and holding the package. Therefore, this should also be possible
programmatically and we can make proper use of the hold mechanism.
It's also possible to check old versions of the manifests via git. So if we can find an old version, we can use that, otherwise generate a manifest and pray.
Scoop also auto installs with auto generated manifests without asking the user. While there's a warning, the only way to interfere with the installation, is to be fast enough, with Ctrl-C.
Downloading should use up as much bandwidth as possible. If we download from URL 1 with 2Mbit/s, but are on a 100Mbit/s connection, we should download from more than one URL at once. This prevents unnecessary wait for a single download.
Prompt for closing running instances and add -y / --yes for automatically confirming such questions and go defensive routes where not destructive.