Skip to content

fix: register shell completion for the installed binary name - #857

Merged
kmannislands merged 1 commit into
mainfrom
gh-804-completion-command-name
Aug 27, 2026
Merged

kmannislands merged 1 commit into
mainfrom
gh-804-completion-command-name

Conversation

@kmannislands

Copy link
Copy Markdown

Fixes #804.

Problem

bootstrap --with-autocomplete hardcoded earthly as the command word in both the bash and zsh completion entries, and wrote them to files named earthly / _earthly. Only the completer's executable path was substituted. Since the released binary is earth, shells never loaded the entry and earth <TAB> offered nothing.

Change

The command word and the completion filenames are now derived from the basename of the running executable.

The installation name (--installation-name) is deliberately not used as the source: it names on-disk resources (~/.earthly, the buildkitd container, the cache volume) and can be overridden independently of the name the user actually types.

A binary still installed as earthly registers both earthly and earth, matching the alias symlinkEarthlyToEarth already creates for it.

As a side effect, bashCompleteEntry / zshCompleteEntry became pure functions of (earthPath, cmdName), which drops the renderEntryTemplate string-substitution indirection and makes them directly testable.

Note

docs/alt-installation/alt-installation.md already documents removing /usr/share/bash-completion/completions/earth and /usr/local/share/zsh/site-functions/_earth on uninstall — the docs described this behavior, the code just never did it.

Testing

  • New unit tests in cmd/earth/subcmd/bootstrap_cmds_test.go cover the name derivation (earth, legacy earthly + alias, custom name) and both rendered entries.
  • tests/bootstrap/test-bootstrap.sh no longer hardcodes the completion filename — it derives it from the binary under test and additionally asserts the registered command word. This keeps working when the integration suite moves to driving earth (test: drive the earth binary throughout the integration suite #803).
  • tests/autocompletion/install/Earthfile now asserts the command word each file registers, and that the earth alias file is installed alongside earthly. The root-user target checks neither name lands under /root.

go build ./..., go vet ./cmd/earth/... and go test ./cmd/earth/subcmd/ pass locally. The Earthfile-driven autocompletion and bootstrap suites run in CI.

🤖 Generated with Claude Code

@kmannislands
kmannislands requested a review from a team as a code owner August 25, 2026 20:05
@kmannislands
kmannislands requested review from janishorsts and removed request for a team August 25, 2026 20:05
@kmannislands kmannislands self-assigned this Aug 25, 2026
@kmannislands kmannislands added the ai-assisted Authored with AI assistance label Aug 25, 2026
@github-actions

github-actions Bot commented Aug 25, 2026 •

Copy link
Copy Markdown

🎉 Are we earthbuild yet?

Great progress! You've reduced "earthly" occurrences by 5 (0.14%)

📈 Overall Progress

Branch Total Count
main 3617
This PR 3612
Difference -5 (0.14%)

📁 Changes by file type:

File Type Change
Go files (.go) ✅ -5
Documentation (.md) ❌ +1
Earthfiles ❌ +1

Keep up the great work migrating from Earthly to Earthbuild! 🚀

💡 Tips for finding more occurrences

Run locally to see detailed breakdown:

./.github/scripts/count-earthly.sh

Note that the goal is not to reach 0.
There is anticipated to be at least some occurrences of earthly in the source code due to backwards compatibility with config files and language constructs.

@kmannislands
kmannislands force-pushed the gh-804-completion-command-name branch from 09c46a1 to 7e608c0 Compare August 25, 2026 21:26
@kmannislands
kmannislands enabled auto-merge (squash) August 26, 2026 05:28
Comment thread cmd/earth/subcmd/bootstrap_cmds.go Outdated

@janishorsts janishorsts left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM.

As this is a temporary implementation, I'm not going to leave more comments to simplify.

@kmannislands
kmannislands force-pushed the gh-804-completion-command-name branch from 7de638f to 79c8c07 Compare August 26, 2026 20:58
The bash and zsh completion entries written by `bootstrap
--with-autocomplete` hardcoded `earthly` as the command word, and
installed to files named `earthly` / `_earthly`. The released binary is
`earth`, so `earth <TAB>` offered nothing.

Derive the command word and the completion filenames from the basename of
the running executable instead. The installation name is deliberately not
used: it names on-disk resources and can be overridden independently of
what the user actually types.

A binary still installed as `earthly` also registers `earth`, matching
the alias symlinkEarthlyToEarth already creates for it.

The uninstall docs in docs/alt-installation already documented
`completions/earth` and `_earth`; this makes the code match.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@kmannislands
kmannislands force-pushed the gh-804-completion-command-name branch from 79c8c07 to 4972bb9 Compare August 26, 2026 21:31
@kmannislands

Copy link
Copy Markdown
Author

Pushed a fix for a real CI failure that appeared after rebasing onto main.

tests/autocompletion/install/Earthfile asserted that bootstrap registers both earthly and earth, which was true when the test image installed the CLI as earthly. Since #796 landed on main the image installs it as earth, so only earth is registered and the hardcoded $path/earthly assertion failed with No such file or directory in test-bash-non-root-fallback-dir and test-bash-non-root-xdg-dir.

The production behaviour is correct — registering earthly for a binary installed as earth is exactly what this PR removes. It was the test that carried the stale assumption. It now derives the expected command word from the binary under test, matching what test-bootstrap.sh already does, and only requires the earth alias file when the binary really is installed as earthly, so it keeps working under either name:

cmd="$(basename "$(readlink -f "$(command -v earth)")")"
grep "^complete" "$path/$cmd" && grep -q "$cmd\$" "$path/$cmd" && \
    if [ "$cmd" = earthly ]; then grep -q "earth$" "$path/earth"; fi && ...

I also updated test-bash-non-root-no-overwrite, which had the same hardcoded name (it is not in +test-all, so it was not failing, just stale).

Verified the assertion locally against both an earth-named and an earthly-named binary, plus a negative control confirming it still fails when the alias file is genuinely missing.

Two other red checks are not from this PR:

  • Go Vulnerabilities Report — failing on main itself, same 10 CVEs in containerd/docker deps. Needs a separate dependency bump.
  • Race Tests (Misc) / EarthBuild Image Test — local registry flake (pullping blob fetch returning EOF mid-pull); no data races or test failures in the logs.

@kmannislands
kmannislands disabled auto-merge August 27, 2026 16:59
@kmannislands
kmannislands merged commit 12b7a0d into main Aug 27, 2026
93 checks passed
@kmannislands
kmannislands deleted the gh-804-completion-command-name branch August 27, 2026 16:59
janishorsts pushed a commit that referenced this pull request Sep 9, 2026
The bash and zsh completion entries written by `bootstrap
--with-autocomplete` hardcoded `earthly` as the command word, and
installed to files named `earthly` / `_earthly`. The released binary is
`earth`, so `earth <TAB>` offered nothing.

Derive the command word and the completion filenames from the basename of
the running executable instead. The installation name is deliberately not
used: it names on-disk resources and can be overridden independently of
what the user actually types.

A binary still installed as `earthly` also registers `earth`, matching
the alias symlinkEarthlyToEarth already creates for it.

The uninstall docs in docs/alt-installation already documented
`completions/earth` and `_earth`; this makes the code match.

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
kmannislands added a commit that referenced this pull request Sep 11, 2026
* docs: rename Earthly to EarthBuild across markdown

Apply the project rename in markdown docs per AGENTS.md conventions:
`Earthly` (project name) becomes `EarthBuild`, and the `earthly` CLI
becomes `earth`.

Preserve literal identifiers: EARTHLY_* env vars, the earthly.dev
domain and subdomains, github.com/earthly repos, earthly/* image and
repo names, +earthly-* targets, /usr/bin/earthly paths, .earthlyignore,
and the __earthly__ completion function.

Leave references to the upstream project untouched: AGENTS.md, the
README fork banner, and docs/migrating-from-earthly.md all describe the
migration from the original Earthly and keep that name. CHANGELOG.md is
left as-is to preserve historical release notes. Also fix the in-page
TOC anchors whose renamed headings would otherwise break.

* Update .github/actions/failure-diagnostics/README.md

Co-authored-by: Janis Horsts <janis.horsts@gmail.com>

* docs: complete earthly to earth rename in identifiers and paths

Address PR review feedback: rename earthly-prefixed literals that have
earth equivalents in v0.8.18+ (installation name drives the config dir,
buildkit container, and cache volume names).

- Rename EARTHLY_CONFIG/EARTHLY_BUILD_ARGS env vars to EARTH_ prefix
- Rename earthly-cache volume and earthly-buildkitd container references
- Rename ~/.earthly paths to ~/.earth
- Rename .earthlyignore to .earthignore (the code's preferred file)
- Fix docs.earthly.dev to docs.earthbuild.dev in docs-internals
- Revert accidental 'Migrating from earth' back to 'Migrating from earthly'
- Rename doc files/dirs: earthly-command, earthly-config, earthlyignore
  and update all inbound links, anchors, and gitbook redirects
- Update failure-diagnostics action to inspect ~/.earth

* docs: rename remaining ~/.earthly and earthly-buildkitd references

Sweep user-facing docs for installation-name-derived identifiers that
resolve to earth on official releases:
- ~/.earthly/config.yml -> ~/.earth/config.yml
- earthly-buildkitd -> earth-buildkitd (commands and example output)
- earthly-cache -> earth-cache in uninstall steps

Left intact: /etc/.earthly paths (hardcoded in the image entrypoint),
CONTRIBUTING.md (from-source dev workflow), and CHANGELOG.md (history).

* docs: use EARTH_ env var prefix for CLI settings

CLI flag env vars are read via the EarthEnvVars helper, which prefers
the EARTH_ prefix (EARTHLY_ is deprecated). Update all 'Also available
as an env var setting' references and the .env example in the command
reference, plus EARTH_BUILDKIT_HOST/EARTH_TARGET_PADDING/EARTH_FULL_TARGET.

Left intact: image/buildkitd env vars hardcoded as EARTHLY_ in the
entrypoint scripts (EARTHLY_ADDITIONAL_BUILDKIT_CONFIG, EARTHLY_EXEC_CMD,
EARTHLY_TMP_DIR, EARTHLY_RESET_TMP_DIR).

* docs: use EARTH_ORG env var in config reference

* docs: rename earthly-buildkitd to earth-buildkitd in Go example

* Update examples/tutorial/js/part6/README.md

Co-authored-by: Janis Horsts <janis.horsts@gmail.com>

* Update examples/tutorial/js/README.md

Co-authored-by: Janis Horsts <janis.horsts@gmail.com>

* Update examples/tutorial/python/part1/README.md

Co-authored-by: Janis Horsts <janis.horsts@gmail.com>

* Update examples/tutorial/python/part2/README.md

Co-authored-by: Janis Horsts <janis.horsts@gmail.com>

* Update examples/tutorial/python/part3/README.md

Co-authored-by: Janis Horsts <janis.horsts@gmail.com>

* Update examples/tutorial/python/part4/README.md

Co-authored-by: Janis Horsts <janis.horsts@gmail.com>

* Update examples/tutorial/README.md

Co-authored-by: Janis Horsts <janis.horsts@gmail.com>

* Update release/apt-repo/README.md

Co-authored-by: Janis Horsts <janis.horsts@gmail.com>

* Update release/yum-repo/README.md

Co-authored-by: Janis Horsts <janis.horsts@gmail.com>

* Update .gitbook.yaml

Co-authored-by: Janis Horsts <janis.horsts@gmail.com>

* Update CONTRIBUTING.md

Co-authored-by: Janis Horsts <janis.horsts@gmail.com>

* Update CONTRIBUTING.md

Co-authored-by: Janis Horsts <janis.horsts@gmail.com>

* Update CONTRIBUTING.md

Co-authored-by: Janis Horsts <janis.horsts@gmail.com>

* Update CONTRIBUTING.md

Co-authored-by: Janis Horsts <janis.horsts@gmail.com>

* Update CONTRIBUTING.md

Co-authored-by: Janis Horsts <janis.horsts@gmail.com>

* Update CONTRIBUTING.md

Co-authored-by: Janis Horsts <janis.horsts@gmail.com>

* Update CONTRIBUTING.md

Co-authored-by: Janis Horsts <janis.horsts@gmail.com>

* Update CONTRIBUTING.md

Co-authored-by: Janis Horsts <janis.horsts@gmail.com>

* Update CONTRIBUTING.md

Co-authored-by: Janis Horsts <janis.horsts@gmail.com>

* Update CONTRIBUTING.md

Co-authored-by: Janis Horsts <janis.horsts@gmail.com>

* Update release/apt-repo/README.md

Co-authored-by: Janis Horsts <janis.horsts@gmail.com>

* fix: complete EARTHLY_ -> EARTH_ migration for internal vars (#800)

* fix: complete EARTHLY_ -> EARTH_ migration for internal vars

The EARTHLY_ -> EARTH_ rename was done for the CLI surface but not for the
variables EarthBuild sets on itself. Because the deprecation scan cannot tell
a user-set variable from one the product set, the published image emitted six
unactionable warnings per invocation, and EARTHLY_WITH_DOCKER warned you to
migrate to a name that was silently ignored.

Make EarthBuild only ever write EARTH_ names, so the scan becomes correct by
construction and no allowlist is needed:

- Rename the image ENVs, the earthly-entrypoint.sh exports, and the Go writers
  into the buildkitd container. Readers accept the EARTHLY_ spelling via a new
  earth_env shim (buildkitd/earth-env.sh), warning but still working.
- Read WITH_DOCKER through env.Lookup so EARTH_WITH_DOCKER is honoured and the
  earth-in-earth cgroup bind-mount is no longer lost by following the warning.
- Pass WITH DOCKER settings to dockerd-wrapper.sh as flags rather than
  EARTHLY_* environment variables. That removes them from the namespace
  entirely, so they can never trip the scan again. An older CLI paired with a
  newer buildkitd image still works, with a warning.
- Drop EARTHLY_IMAGE and EARTHLY_GIT_CONFIG, which had no reader and no writer
  respectively.

dockerd-wrapper.sh is bind-mounted into RUN commands as a single file, so it
carries its own copy of earth_env rather than sourcing the shared one.

Also sweeps the docs, which #753 deliberately left on the EARTHLY_ spelling
because these variables had no working EARTH_ equivalent until now.

Fixes #751

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

* style: tighten comments in the internal env var rename

Drop bare ticket links used as justification, and reword a test comment that
framed itself around the migration rather than the behaviour it covers.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

* Update buildkitd/buildkitd.go

Co-authored-by: Janis Horsts <janis.horsts@gmail.com>

---------

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Co-authored-by: Janis Horsts <janis.horsts@gmail.com>

* fix: ship the CLI as earth in the published docker image (#801)

* fix: ship the CLI as earth in the published docker image

The v0.8.18 release notes document the CLI binary rename earthly -> earth,
and the release assets follow it, but the published earthbuild/earthbuild
image shipped only earthly -- there was no earth anywhere on the filesystem,
so following the release notes into the image failed with "earth: not found".

+earthly-docker hardcoded DEFAULT_INSTALLATION_NAME="earthly" while the
release path passes "earth". That value is an ldflag which also drives the
config dir, the buildkitd container name, the cache volume name and the
buildkit port offset, so the image's CLI disagreed with the released binaries
on all of them -- visible to anyone extracting the CLI from the image, which
is how the issue was found.

DEFAULT_INSTALLATION_NAME is now threaded into +earthly-docker instead of
hardcoded, and declared once as a global in release/Earthfile so the release
binaries and the image cannot drift apart again. The CLI installs as
/usr/bin/earth with an earthly symlink kept for one deprecation cycle.

Two things fall out of the rename:

PortOffset special-cased only "earthly" as the official name, so switching the
image to "earth" would have moved buildkit to 8846 and the local registry to
8845 while earthly-entrypoint.sh and buildkitd.tcp.template hardcode
8372/8371. Both official spellings now offset to zero.

earthly-entrypoint.sh hardcoded /root/.earthly/certs for the certificates the
CLI generates under ~/.<installation name>/certs, which would have become
three dangling symlinks and a TLS failure with no diagnostic. The path now
derives from the installation name the image was built with, and the script
fails loudly if the directory is absent.

Also fixes two defects in the rename notice itself: it claimed earthly "is
currently symlinked" whether or not it was, and its rm suggestion was gated on
a path built from the deprecated name, so it tested for the invoked binary
rather than its replacement.

Fixes #796.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

* style: tighten comments in the earth binary rename

Drop changelog voice, ticket references and reviewer-facing justification from
the comments introduced with the image binary rename. State the invariant each
one is protecting instead: that the image and the release binaries must agree on
the installation name, that the official names must map to a zero port offset
because other files hardcode the resulting ports, and that /etc/.earthly is a
caller-supplied mount point rather than a CLI-derived path.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

* test: follow the image config dir to ~/.earth

The config tests assert the default config location, which the installation
name determines. The image installs as earth, so the default is ~/.earth.

Cases that set an installation name explicitly keep their own directories.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

* fix: stop the image shadowing a caller's installation name

The entrypoint needs the installation name to locate the certificates the CLI
generates under ~/.<name>/certs, and took it from EARTH_INSTALLATION_NAME baked
into the image. That is the CLI's own variable, and env.Lookup prefers it over
EARTHLY_INSTALLATION_NAME, so the baked value silently overrode a caller using
the deprecated spelling: the CLI kept writing to ~/.earth while the caller
expected their own directory.

Carry the build-time name in EARTH_IMAGE_INSTALLATION_NAME, which the CLI does
not read, and use it only as the fallback when resolving the name.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

* ci: address the buildkit daemon under the pinned earth name

#796 makes the published image install the CLI as `earth`, which also
renames the daemon it manages: `earthly-buildkitd` becomes
`earth-buildkitd`. CI built its binaries with
DEFAULT_INSTALLATION_NAME=earthly, so the image test's docker.sock case
looked for `earth-buildkitd`, found nothing, and tried to pull
`ghcr.io/earthbuild/earthbuild:buildkitd-image-test` -- a tag
`+earthly-docker` never builds.

Pin DEFAULT_INSTALLATION_NAME=earth in ci.yml and build-earthly.yml and
follow the name through everywhere CI addresses the daemon directly:
reusable-test.yml and reusable-misc-tests-{1,2}.yml, the registry-certs
test, and the bug-report template.

tests/bootstrap/test-bootstrap.sh derives the name from
$default_install_name instead of hardcoding it, so it tracks whatever CI
passes rather than needing a second edit next time.

earth-retry.sh and the failure-diagnostics defaults keep the deprecated
names alongside the new ones: both are best-effort cleanup and
diagnostics, and a job may still have either container.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

* fix: follow the installation name for the in-image config path

Review feedback on #801: the entrypoint derived the certs directory from
the installation name but kept the config at a hardcoded
/etc/.earthly/config.yml, so the two disagreed as soon as the image
switched to `earth`.

The config now sits at /etc/.<installation name>/config.yml alongside the
other per-installation paths, and the variable is `earth_config` to
match. The pre-rename path is still honoured when a caller mounts a
config there and nothing is mounted at the derived path, so an existing
`-v ./config.yml:/etc/.earthly/config.yml` keeps working for one
deprecation cycle; `earthly_config` stays exported as an alias for the
test call sites that read it.

setup-registry.sh and tests/warn-if-not-logged-in write to the derived
path rather than relying on that fallback, and the Earthfile reads
buildkit_additional_config back from the same place.

Also renames earthly-entrypoint.sh to earth-entrypoint.sh, with
/usr/bin/earthly-entrypoint.sh kept as a symlink: the CI integration
guides name that path explicitly, so it gets the same deprecation cycle
as /usr/bin/earthly.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

* fix: silence SC2016 on the entrypoint symlink assertion

+lint-scripts-misc runs shellcheck at default severity, so the info-level
SC2016 fails the build. The single quotes are deliberate: the readlink
is evaluated by `sh -c` inside the container, not by the test script, so
the warning does not apply here.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>

* test: drive the earth binary throughout the integration suite (#803)

* test: drive the earth binary throughout the integration suite

`earthly` compatibility symlink. The integration suite still reached the
CLI through the deprecated name, so ~176 call sites were exercising the
symlink rather than the binary users actually get. This drives `earth`
throughout and keeps one deliberate case on `earthly`.

+deprecated-name-test is that case: it asserts the symlink reaches the
CLI and that the rename warning is emitted, so the compatibility path
stays covered deliberately rather than incidentally.

Three things a mechanical s/earthly/earth/ gets wrong, all handled here:

1. COMP_POINT is a byte offset into COMP_LINE. Most cases derive it via
   `wc -m`, but two are literal (10 and 9). autocomplete/complete.go
   returns early when compPoint > len(compLine), so a stale offset
   yields no completions and the test fails confusingly rather than
   obviously. Now 8 and 7.
2. The bash completion file is named `earthly` regardless of
   installation name (bootstrap_cmds.go), so the assertions in
   tests/autocompletion/install must keep the old name.
3. The eine tests copy the binary in rather than taking it from the
   image, so their COPY destination moves to `earth` alongside their
   invocations.

Also left on the deprecated spelling on purpose: earthly_config (a shell
variable exported by the entrypoint), earthly.output and
/tmp/*-earthly-script (filenames), github.com/earthly/earthly+base (a
remote target ref), +earthly-docker (a target name), and the
.earthly-test2 / .earthly-not-test directories belonging to cases that
set an installation name explicitly.

CI's installation-name pin and the earth-buildkitd rename live in #801,
so that PR is green on its own; this one is purely the suite rename.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

* test: read the config path from earth_config

The suite read $earthly_config, which earth-entrypoint.sh now exports
only as a deprecated alias of $earth_config. Keeping the call sites on
the alias meant the integration tests were exercising the compatibility
shim rather than the spelling callers get, which is the opposite of what
this branch is for.

The alias itself stays: it is a contract for callers outside this repo,
and scripts/tests/earth-image.sh still asserts it resolves.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

* test: remove the unrunnable AWS OIDC integration test

tests/oidc has not been exercised since #32 (Aug 2025), which commented
out the docker-test-oidc-command and podman-test-oidc-command jobs
pending an AWS account; those commented jobs were later dropped from the
workflows entirely, so nothing builds ./tests/oidc+test today.

It could not be reinstated as written in any case. It depends on three
things the fork removed: `earth account login`, which no longer exists as
a subcommand; EARTHLY_TOKEN, documented as removed in
docs/migrating-from-earthly.md along with Earthly Cloud auth; and the
cloud-backed secret `test-oidc-user/token` plus the
`PROJECT other-service+oidc-ci-test/my-project` reference in aws.earth,
neither of which resolves without a cloud provider.

Note this leaves the live --run-with-aws-oidc feature with only unit
coverage (util/oidcutil). The commented-out test-aws-oidc block in
tests/Earthfile still records the error-case assertions if someone
reinstates integration coverage; its pointer to this directory is
dropped.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>

* fix(deps): update github.com/tonistiigi/fsutil digest to 83cac42 (#865)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update module github.com/sirupsen/logrus to v1.10.2 (#867)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update module google.golang.org/grpc to v1.83.2 (#868)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update module google.golang.org/protobuf to v1.36.12 (#869)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency kubernetes-sigs/kind to v0.33.0 (#870)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update module github.com/gofrs/flock to v0.13.1 (#871)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency com.eed3si9n:sbt-assembly to v2.5.0 (#854)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix: register shell completion for the installed binary name (#857)

The bash and zsh completion entries written by `bootstrap
--with-autocomplete` hardcoded `earthly` as the command word, and
installed to files named `earthly` / `_earthly`. The released binary is
`earth`, so `earth <TAB>` offered nothing.

Derive the command word and the completion filenames from the basename of
the running executable instead. The installation name is deliberately not
used: it names on-disk resources and can be overridden independently of
what the user actually types.

A binary still installed as `earthly` also registers `earth`, matching
the alias symlinkEarthlyToEarth already creates for it.

The uninstall docs in docs/alt-installation already documented
`completions/earth` and `_earth`; this makes the code match.

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>

* chore(deps): update dependency scala to v3.9.0 (#872)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update aws sdk (#873)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update otel (#874)

* fix(deps): update otel

* fix: bump to the highest possible otel

* chore: bump semconv to v1.43.0

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Janis Horsts <janis.horsts@gmail.com>

* chore(deps): update dependency golangci/golangci-lint to v2.13.2 (#875)

* chore(deps): update dependency golangci/golangci-lint to v2.13.2

* fix: lint

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Janis Horsts <janis.horsts@gmail.com>

* chore(deps): update dependency sbt/sbt to v2.0.8 (#876)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update aws sdk (#877)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dockerfile-dependencies (#880)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* docs: add missing param to top-level WITH DOCKER doc (#881)

The Earthfile reference doc for `WITH DOCKER` mentions the `--platform`
flag in the list of args, but it isn't shown in the top level invocation
doc. Add it there.

Co-authored-by: Janis Horsts <janis.horsts@gmail.com>

* fix(deps): update otel (#879)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): lock file maintenance (#885)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update public.ecr.aws/amazonlinux/amazonlinux docker tag to v2023.12.20260831.0 (#886)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update module github.com/aws/aws-sdk-go-v2/config to v1.33.2 (#887)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update module al.essio.dev/pkg/shellescape to v1.6.1 (#888)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* refactor: migrate from encoding/json to encoding/json/v2 (#883)

* refactor: migrate from encoding/json to standard library encoding/json/v2

* chore: tidy

---------

Co-authored-by: Squirrel <gilescope@gmail.com>

* chore(deps): update dependency bundler to v4.0.20 (#889)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* refactor: use std uuid (#882)

* refactor: use std uuid

* fix: lint

* fix(deps): update dependency org.clojure:clojure to v1.12.6 (#891)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update module golang.org/x/crypto to v0.56.0 (#892)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency org.apache.maven.plugins:maven-compiler-plugin to v3.16.0 (#893)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update jdkato/vale docker tag to v3.20.0 (#894)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update public.ecr.aws/amazonlinux/amazonlinux docker tag to v2027 (#895)

* chore(deps): update public.ecr.aws/amazonlinux/amazonlinux docker tag to v2027

* fix: support both Amazon Linux 2023 and 2027

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Janis Horsts <janis.horsts@gmail.com>

* chore(deps): update dependency org.apache.maven.plugins:maven-surefire-plugin to v3.6.0 (#896)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update module github.com/docker/cli to v29.8.0+incompatible (#897)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update aws sdk (#898)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore: tidy

* chore: sort gitbook redirects alphabetically

* chore: tidy release/README.md

* Apply suggestion from @janishorsts

Co-authored-by: Janis Horsts <janis.horsts@gmail.com>

---------

Co-authored-by: Janis Horsts <janis.horsts@gmail.com>
Co-authored-by: Kieran Mann <kieranjarrettmann@gmail.com>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: John Moon <john.moon@voyagertechnologies.com>
Co-authored-by: Squirrel <gilescope@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ai-assisted Authored with AI assistance

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Shell completion is registered for earthly, so it never loads for earth

2 participants