Skip to content
Jesús García Crespo edited this page May 28, 2025 · 55 revisions

Welcome to the bine wiki!

TODOs

MUST

  • Publish binaries with GoReleaser
  • Support Go tools without precompiled binaries
  • Document variable expansion
  • Support other hosts, e.g. releases ariga
  • Refactor main to be testable
  • Build subcommands with ffcli
  • Check binary integrity
  • Try in the wild (CCP, Enduro, ...)
  • Add bine sync to install them all
  • Add root --cache-dir option to isolate env from tests
  • Add bine list --installed
  • Add bine list --outdated
  • Add integration tests with testscript
  • Add test workflow and protect branch
  • Disallow "latest" version
  • Always ensure version matches

SHOULD

Ranked by priority, highest first:

  • Add --verbosity=N with logger
  • Add bine upgrade to upgrade outdated binaries
  • Reconsider checksum attr (not portable)
  • Include checksum in the version stamp
  • Share bine instance in the root config

COULD

Ranked by priority, highest first:

  • Add bine upgrade --dry-run
  • Add a mechanism to update the system path
  • Add support for MacOS and Windows
  • Add a GitHub action to install bine and/or cache binary store
  • Implement a mechanism to periodically report oudated deps
  • Add a self-update command
  • Add a mechanism to upgrade related deps in go.mod

Feature analysis

Add a mechanism to update the system path

Something like bine env --shell=X. This would save the user from having to maintain something like this: https://github.com/artefactual-sdps/enduro/tree/main/hack/activate.

Usage:

# bash/zsh
eval "$(bine env)"

# fish
bine env | source

--shell=X is optional, bine should be able to detect the shell.

Add support for MacOS and Windows

More users!

Add GitHub action to install bine and/or cache binary store

This sounds like it could be useful.

Implement a mechanism to periodically report oudated deps

A few options:

  • An example of a nightly workflow that sends a notification or pushes a pull request,
  • An option in the GitHub action proposed elsewhere,
  • An integration with renovatebot (see regexManagers) or similar.

Add a self-update command

Something like bine self update.

See https://github.com/creativeprojects/go-selfupdate, it shares some similarities with bine.

Add a mechanism to upgrade related deps in go.mod

In Go projects, it's not uncommon to need both a binary like ent but also its counterpart library in go.mod. Other examples: goa, atlas... it is right now up to the user to keep then in sync. The question is whether bine can assist the developer in this scenario.