Unit tests can't prove the rewritten binary actually works on each supported
distro and on both podman and docker; this exercises the real thing.
Move the tests in a set of simple scripts to run them.
Make a smaller e2e test for CLI and Images that runs on every PR
Keep the full compatibility suite in a separate job for main merge and
manual runs.
Signed-off-by: Luca Di Maio <luca.dimaio1@gmail.com>
v1 containers bind-mount distrobox-{init,export,host-exec} from host
$bindir, and v1 desktop entries launch via `distrobox-enter`. Both
would silently break under v2's single binary. argv[0] dispatch
routes distrobox-* symlinks to the right subcommand, and the helpers
ship at the v1 paths so v1 containers keep working.
BREAKING CHANGE: v2 rc1 and rc2 prerelease containers used ~/.local/share/distrobox/v2/
for their helpers and must be recreated.
Signed-off-by: Luca Di Maio <luca.dimaio1@gmail.com>
Wrappers in completions/ call --generate-shell-completion; a Go
ShellComplete callback emits flag names so urfave's default response
(subcommands only) is replaced with the full candidate set.
This replaces old hard-coded way to auto-complete using shell script's
parsing.
Signed-off-by: Luca Di Maio <luca.dimaio1@gmail.com>
Previously, the CLI hardcoded "1.0.0" as the version string in two places (the root command and the generate-entry subcommand).
Introduce pkg/version, a minimal package that exposes a single variable Version, defaulting to "dev". The root command now references such a value; generate-entry does not need it al all
The Makefile computes the version at build time by running:
git describe --tags --always
This produces the exact tag name when HEAD is tagged, or --g when it is not, giving a precise description of the build relative to the nearest ancestor tag. If git is unavailable, the value falls back to "dev".
The resulting string is injected into the binary via:
-ldflags "-X github.com/89luca89/distrobox/pkg/version.Version=<value>" so that distrobox --version and distrobox generate-entry --version both report the exact version of the build.
* chore(repo): remove shell implementation
* chore(repo): remove bash completion for sub-commands
There is no need for separate files as there will be no dedicated binary
for sub-commands
* chore(repo): remove zsh completion for sub-commands
There is no need for separate files as there will be no dedicated binary
for sub-commands
* chore(repo): delete RFC
We are not using RFC at the moment
* chore(repo): move golang project to the root
* chore(ci): move golang project to the root
* chore(repo): use standard .gitignore for golang projects
source: https://github.com/github/gitignore/blob/main/Go.gitignore
* chore(ci): compatibility CI to handle a golang project
* refactor(ci): run shell script checks against the inside-distrobox files
* refactor(ci): merge ci.yml workflow into main.yml