marcosnils / bin

Effortless binary manager
MIT License
640 stars 44 forks source link

Install packages/binaries from a file containing a list of packages with pinned versioning (e.g. `bin ls > binfile`, then `bin i ./binfile` #194

Open kforeverisback opened 3 months ago

kforeverisback commented 3 months ago

First let me say, I really enjoyed using bin for managing all my static binary releases!

I was using eget, then moved on to stew, then finally settled on your bin tool.

One of the things I liked about stew was its support for Stewfile (its just stew ls > Stewfile, see https://github.com/marwanhawari/stew?tab=readme-ov-file#list), which you can put in your source control, and from this file you can install all necessary tools (with pinned versioning) in another machine!

Not sure if bin has similar features, but I'd love bin to have this feature. I can also contribute if I get some helps from the community :)

marcosnils commented 3 months ago

First let me say, I really enjoyed using bin for managing all my static binary releases!

hey! that's great to know. It's awesome that you're finding bin useful like other users.

Not sure if bin has similar features, but I'd love bin to have this feature.

yes, bin has something similar as well. If you take your bin config file (generally located at XDG_CONFIG_HOME/bin, move it to a different server and then run bin ensure, that'd synchronize all your missing tools.

Hope this helps!

Marcos.

kforeverisback commented 3 months ago

Thanks @marcosnils! That somewhat works!

Only thing is that bin config file stores the full path under default_path as well as per item.

{
    "default_path": "/home/kushal/.local/bin",      ## <-- Full path to default bin path
    "bins": {
        "/home/kushal/.local/bin/bat": {            ## <-- Full path as key name
            "path": "/home/kushal/.local/bin/bat",  ## <-- Full path again here
            "remote_name": "bat",
            "version": "v0.24.0",
            "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
            "url": "https://github.com/sharkdp/bat",
            "provider": "github",
            "package_path": "bat-v0.24.0-x86_64-unknown-linux-gnu/bat"
        },
        ...
    }
}

A different server might have different username and path. After your comment, I actually created a script which takes care of this (modify the config paths before installing, simple bash and jq based).

Still, I believe a separate cmd (or different config structure for export to source control) in bin might be useful for users to create a reproducible environment (where same binaries are installed) in another server or maybe even share with their friends/colleagues.

Awesome tool, even awesome-er(!) work! Thanks @marcosnils!