Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save ghthor/33a418854e01abc1d83450f3ebcfecef to your computer and use it in GitHub Desktop.
Save ghthor/33a418854e01abc1d83450f3ebcfecef to your computer and use it in GitHub Desktop.
Subject: [PATCH] Add bash/zsh completions and fix version string
From 8faf889cf8991cd383ad89bbd1f93d8db2ec5a6a Mon Sep 17 00:00:00 2001
From: Will Owens <ghthor@gmail.com>
Date: Fri, 11 Nov 2022 02:13:38 -0500
Subject: [PATCH] Add bash/zsh completions and fix version string
They are embedded in a command that requires sudo to run so I
pulled the templates out of their source so we can install them
a package build time instead of afterwards.
```
$ earthly bootstrap --autocomplete
```
Also, I fixed the version string being passed to the build to avoid this
warning message from `earthly bootstrap`
```
$ earthly bootstrap
buildkitd | Starting buildkit daemon as a docker container (earthly-buildkitd)...
buildkitd | ...Done
buildkitd | Warning: Buildkit version (v0.6.27) is different from Earthly version (0.6.27)
```
---
Makefile | 3 +++
PKGBUILD | 16 +++++++++++++---
earthly.bash-completion | 2 ++
earthly.zsh-completion | 8 ++++++++
4 files changed, 26 insertions(+), 3 deletions(-)
create mode 100644 Makefile
create mode 100644 earthly.bash-completion
create mode 100644 earthly.zsh-completion
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..d5871ad
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,3 @@
+.PHONY: shfmt
+shfmt:
+ shfmt -w -i 4 ./PKGBUILD
diff --git a/PKGBUILD b/PKGBUILD
index 010abfe..60e7597 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -10,8 +10,16 @@ license=('MPL2')
depends=('docker')
makedepends=('git' 'go')
BUILDENV+=('!check')
-source=("git+https://github.com/earthly/earthly.git#tag=v${pkgver}")
-sha256sums=('SKIP')
+source=(
+ "git+https://github.com/earthly/earthly.git#tag=v${pkgver}"
+ "earthly.bash-completion"
+ "earthly.zsh-completion"
+)
+sha256sums=(
+ 'SKIP'
+ 'd6003dada86fefa4ab84be64d8a314527bfe117591640fd399c90d925de85212'
+ '54d597dccde088ca71873f2c3681fe38a4d634b096d4a763c31192157505fb38'
+)
prepare() {
mkdir -p earthly/build
@@ -20,7 +28,7 @@ prepare() {
build() {
local _ldflags='-linkmode=external'
_ldflags+=" -X main.DefaultBuildkitdImage=docker.io/earthly/buildkitd:v${pkgver}"
- _ldflags+=" -X main.Version=${pkgver}"
+ _ldflags+=" -X main.Version=v${pkgver}"
_ldflags+=" -X main.GitSha=$(git -C earthly rev-parse HEAD)"
local _tags='dfrunmount,dfrunsecurity,dfsecrets,dfssh,dfrunnetwork,dfheredoc,forceposix'
export CGO_CPPFLAGS="$CPPFLAGS"
@@ -39,4 +47,6 @@ check() {
package() {
install -D -m755 earthly/build/earthly -t "${pkgdir}/usr/bin"
+ install -D -m644 earthly.bash-completion -T "${pkgdir}/usr/share/bash-completion/completions/earthly"
+ install -D -m644 earthly.zsh-completion -T "${pkgdir}/usr/share/zsh/site-functions/_earthly"
}
diff --git a/earthly.bash-completion b/earthly.bash-completion
new file mode 100644
index 0000000..e04a341
--- /dev/null
+++ b/earthly.bash-completion
@@ -0,0 +1,2 @@
+# Sourced from: https://github.com/earthly/earthly/blob/84c74238a21ff7372d61322800da08a4e28a8584/cmd/earthly/autocomplete.go#L164
+complete -o nospace -C '/usr/bin/earthly' earthly
diff --git a/earthly.zsh-completion b/earthly.zsh-completion
new file mode 100644
index 0000000..18dee29
--- /dev/null
+++ b/earthly.zsh-completion
@@ -0,0 +1,8 @@
+#compdef _earthly earthly
+function _earthly {
+ autoload -Uz bashcompinit
+ bashcompinit
+ complete -o nospace -C '/usr/bin/earthly' earthly
+}
+
+# Sourced from: https://github.com/earthly/earthly/blob/84c74238a21ff7372d61322800da08a4e28a8584/cmd/earthly/autocomplete.go#L169
--
2.37.3
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment