From 54a969d1a4fba618661937fd791025badd39a7f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Gronowski?= Date: Thu, 28 Mar 2024 18:18:44 +0100 Subject: [PATCH] Dockerfile: Use CLI generated completions in the dev shell MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Use Cobra-generated completion scripts for the CLI inside the dev container shell. Remove `DOCKER_BASH_COMPLETION_PATH`. Signed-off-by: Paweł Gronowski --- Dockerfile | 7 ++++--- Makefile | 2 -- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/Dockerfile b/Dockerfile index edff43953e..1f4956489b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -266,7 +266,8 @@ RUN --mount=source=hack/dockerfile/cli.sh,target=/download-or-build-cli.sh \ --mount=type=cache,target=/root/.cache/go-build,id=dockercli-build-$TARGETPLATFORM \ rm -f ./.git/*.lock \ && /download-or-build-cli.sh ${DOCKERCLI_VERSION} ${DOCKERCLI_REPOSITORY} /build \ - && /build/docker --version + && /build/docker --version \ + && /build/docker completion bash >/completion.bash FROM base AS dockercli-integration WORKDIR /go/src/github.com/docker/cli @@ -517,9 +518,8 @@ RUN useradd --create-home --gid docker unprivilegeduser \ && chown -R unprivilegeduser /home/unprivilegeduser # Let us use a .bashrc file RUN ln -sfv /go/src/github.com/docker/docker/.bashrc ~/.bashrc -# Activate bash completion and include Docker's completion if mounted with DOCKER_BASH_COMPLETION_PATH +# Activate bash completion RUN echo "source /usr/share/bash-completion/bash_completion" >> /etc/bash.bashrc -RUN ln -s /usr/local/completion/bash/docker /etc/bash_completion.d/docker RUN ldconfig # Set dev environment as safe git directory to prevent "dubious ownership" errors # when bind-mounting the source into the dev-container. See https://github.com/moby/moby/pull/44930 @@ -568,6 +568,7 @@ RUN --mount=type=cache,sharing=locked,id=moby-dev-aptlib,target=/var/lib/apt \ libsystemd-dev \ yamllint COPY --link --from=dockercli /build/ /usr/local/cli +COPY --link --from=dockercli /completion.bash /etc/bash_completion.d/docker COPY --link --from=dockercli-integration /build/ /usr/local/cli-integration FROM base AS build diff --git a/Makefile b/Makefile index 1bc2453c12..9fa36d9392 100644 --- a/Makefile +++ b/Makefile @@ -31,7 +31,6 @@ DOCKER_ENVS := \ -e DOCKER_BUILD_OPTS \ -e DOCKER_BUILD_PKGS \ -e DOCKER_BUILDKIT \ - -e DOCKER_BASH_COMPLETION_PATH \ -e DOCKER_CLI_PATH \ -e DOCKERCLI_VERSION \ -e DOCKERCLI_REPOSITORY \ @@ -99,7 +98,6 @@ DOCKER_MOUNT := $(if $(DOCKER_MOUNT),$(DOCKER_MOUNT),-v /go/src/github.com/docke DOCKER_MOUNT_CACHE := -v docker-dev-cache:/root/.cache -v docker-mod-cache:/go/pkg/mod/ DOCKER_MOUNT_CLI := $(if $(DOCKER_CLI_PATH),-v $(shell dirname $(DOCKER_CLI_PATH)):/usr/local/cli,) -DOCKER_MOUNT_BASH_COMPLETION := $(if $(DOCKER_BASH_COMPLETION_PATH),-v $(shell dirname $(DOCKER_BASH_COMPLETION_PATH)):/usr/local/completion/bash,) ifdef BIND_GIT # Gets the common .git directory (even from inside a git worktree)