4c25f6ce95
Nothing mergeable here, but this was me playing around; initially to see if we could print the format such as suggested in https://github.com/docker/cli/issues/5560#issuecomment-2437212303 That output is shown in `TestTree`: IMAGE/TAGS ID DISK USAGE CONTENT SIZE USED alpine:latest beefdbd8a1da 13.6MB 4.09MB ├─ linux/amd64 33735bd63cf8 0B 0B ├─ linux/arm/v6 50f635c8b04d 0B 0B ├─ linux/arm/v7 f2f82d424957 0B 0B ├─ linux/arm64/v8 9cee2b382fe2 13.6MB 4.09MB ├─ linux/386 b3e87f642f5c 0B 0B ├─ linux/ppc64le c7a6800e3dc5 0B 0B ├─ linux/riscv64 80cde017a105 0B 0B └─ linux/s390x 2b5b26e09ca2 0B 0B namespace/image beefdbd8a1da 13.6MB 4.09MB ├─ namespace/image:1 beefdbd8a1da - - ├─ namespace/image:1.0 beefdbd8a1da - - ├─ namespace/image:1.0.0 beefdbd8a1da - - └─ namespace/image:latest beefdbd8a1da - - ├─ linux/amd64 33735bd63cf8 0B 0B ├─ linux/arm/v6 50f635c8b04d 0B 0B ├─ linux/arm/v7 f2f82d424957 0B 0B ├─ linux/arm64/v8 9cee2b382fe2 13.6MB 4.09MB ├─ linux/386 b3e87f642f5c 0B 0B ├─ linux/ppc64le c7a6800e3dc5 0B 0B ├─ linux/riscv64 80cde017a105 0B 0B └─ linux/s390x 2b5b26e09ca2 0B 0B internal.example.com/namespace/image beefdbd8a1da 13.6MB 4.09MB ├─ internal.example.com/namespace/image:1 beefdbd8a1da - - ├─ internal.example.com/namespace/image:1.0 beefdbd8a1da - - ├─ internal.example.com/namespace/image:1.0.0 beefdbd8a1da - - └─ internal.example.com/namespace/image:latest beefdbd8a1da - - ├─ linux/amd64 33735bd63cf8 0B 0B ├─ linux/arm/v6 50f635c8b04d 0B 0B ├─ linux/arm/v7 f2f82d424957 0B 0B ├─ linux/arm64/v8 9cee2b382fe2 13.6MB 4.09MB ├─ linux/386 b3e87f642f5c 0B 0B ├─ linux/ppc64le c7a6800e3dc5 0B 0B ├─ linux/riscv64 80cde017a105 0B 0B └─ linux/s390x 2b5b26e09ca2 0B 0B And `TestTreeNoTrunc` (non-truncated): IMAGE/TAGS ID DISK USAGE CONTENT SIZE USED alpine:latest sha256:beefdbd8a1da6d2915566fde36db9db0b524eb737fc57cd1367effd16dc0d06d 13.6MB 4.09MB ├─ linux/amd64 sha256:33735bd63cf84d7e388d9f6d297d348c523c044410f553bd878c6d7829612735 0B 0B ├─ linux/arm/v6 sha256:50f635c8b04d86dde8a02bcd8d667ba287eb8b318c1c0cf547e5a48ddadea1be 0B 0B ├─ linux/arm/v7 sha256:f2f82d42495723c4dc508fd6b0978a5d7fe4efcca4282e7aae5e00bcf4057086 0B 0B ├─ linux/arm64/v8 sha256:9cee2b382fe2412cd77d5d437d15a93da8de373813621f2e4d406e3df0cf0e7c 13.6MB 4.09MB ├─ linux/386 sha256:b3e87f642f5c48cdc7556c3e03a0d63916bd0055ba6edba7773df3cb1a76f224 0B 0B ├─ linux/ppc64le sha256:c7a6800e3dc569a2d6e90627a2988f2a7339e6f111cdf6a0054ad1ff833e99b0 0B 0B ├─ linux/riscv64 sha256:80cde017a10529a18a7274f70c687bb07c4969980ddfb35a1b921fda3a020e5b 0B 0B └─ linux/s390x sha256:2b5b26e09ca2856f50ac88312348d26c1ac4b8af1df9f580e5cf465fd76e3d4d 0B 0B namespace/image sha256:beefdbd8a1da6d2915566fde36db9db0b524eb737fc57cd1367effd16dc0d06d 13.6MB 4.09MB ├─ namespace/image:1 sha256:beefdbd8a1da6d2915566fde36db9db0b524eb737fc57cd1367effd16dc0d06d - - ├─ namespace/image:1.0 sha256:beefdbd8a1da6d2915566fde36db9db0b524eb737fc57cd1367effd16dc0d06d - - ├─ namespace/image:1.0.0 sha256:beefdbd8a1da6d2915566fde36db9db0b524eb737fc57cd1367effd16dc0d06d - - └─ namespace/image:latest sha256:beefdbd8a1da6d2915566fde36db9db0b524eb737fc57cd1367effd16dc0d06d - - ├─ linux/amd64 sha256:33735bd63cf84d7e388d9f6d297d348c523c044410f553bd878c6d7829612735 0B 0B ├─ linux/arm/v6 sha256:50f635c8b04d86dde8a02bcd8d667ba287eb8b318c1c0cf547e5a48ddadea1be 0B 0B ├─ linux/arm/v7 sha256:f2f82d42495723c4dc508fd6b0978a5d7fe4efcca4282e7aae5e00bcf4057086 0B 0B ├─ linux/arm64/v8 sha256:9cee2b382fe2412cd77d5d437d15a93da8de373813621f2e4d406e3df0cf0e7c 13.6MB 4.09MB ├─ linux/386 sha256:b3e87f642f5c48cdc7556c3e03a0d63916bd0055ba6edba7773df3cb1a76f224 0B 0B ├─ linux/ppc64le sha256:c7a6800e3dc569a2d6e90627a2988f2a7339e6f111cdf6a0054ad1ff833e99b0 0B 0B ├─ linux/riscv64 sha256:80cde017a10529a18a7274f70c687bb07c4969980ddfb35a1b921fda3a020e5b 0B 0B └─ linux/s390x sha256:2b5b26e09ca2856f50ac88312348d26c1ac4b8af1df9f580e5cf465fd76e3d4d 0B 0B internal.example.com/namespace/image sha256:beefdbd8a1da6d2915566fde36db9db0b524eb737fc57cd1367effd16dc0d06d 13.6MB 4.09MB ├─ internal.example.com/namespace/image:1 sha256:beefdbd8a1da6d2915566fde36db9db0b524eb737fc57cd1367effd16dc0d06d - - ├─ internal.example.com/namespace/image:1.0 sha256:beefdbd8a1da6d2915566fde36db9db0b524eb737fc57cd1367effd16dc0d06d - - ├─ internal.example.com/namespace/image:1.0.0 sha256:beefdbd8a1da6d2915566fde36db9db0b524eb737fc57cd1367effd16dc0d06d - - └─ internal.example.com/namespace/image:latest sha256:beefdbd8a1da6d2915566fde36db9db0b524eb737fc57cd1367effd16dc0d06d - - ├─ linux/amd64 sha256:33735bd63cf84d7e388d9f6d297d348c523c044410f553bd878c6d7829612735 0B 0B ├─ linux/arm/v6 sha256:50f635c8b04d86dde8a02bcd8d667ba287eb8b318c1c0cf547e5a48ddadea1be 0B 0B ├─ linux/arm/v7 sha256:f2f82d42495723c4dc508fd6b0978a5d7fe4efcca4282e7aae5e00bcf4057086 0B 0B ├─ linux/arm64/v8 sha256:9cee2b382fe2412cd77d5d437d15a93da8de373813621f2e4d406e3df0cf0e7c 13.6MB 4.09MB ├─ linux/386 sha256:b3e87f642f5c48cdc7556c3e03a0d63916bd0055ba6edba7773df3cb1a76f224 0B 0B ├─ linux/ppc64le sha256:c7a6800e3dc569a2d6e90627a2988f2a7339e6f111cdf6a0054ad1ff833e99b0 0B 0B ├─ linux/riscv64 sha256:80cde017a10529a18a7274f70c687bb07c4969980ddfb35a1b921fda3a020e5b 0B 0B └─ linux/s390x sha256:2b5b26e09ca2856f50ac88312348d26c1ac4b8af1df9f580e5cf465fd76e3d4d 0B 0B The above is all without the nice color-formatting etc, but this would be handled before this; The second bit was to see if we could make the tree output more align with other output formats; - Most of our commands allow passing a `--format`, including for (e.g.) `table` - We want the tree view to also support, e.g. `--no-trunc`, which means that some columns will be wider. - If we use a tabwriter for printing, we can have it handle the column-sizing for us. - And if we do, we could let the user pass a custom format, and still print it as a tree. e.g., a format could be; --format 'tree {.Image}}\t{{.Digest}}\t{{.InUse}}' Which would output something like IMAGE ID USED alpine:latest beefdbd8a1da ✔ ├─ linux/amd64 33735bd63cf8 ├─ linux/arm/v6 50f635c8b04d ├─ linux/arm/v7 f2f82d424957 ├─ linux/arm64/v8 9cee2b382fe2 ✔ ├─ linux/386 b3e87f642f5c ├─ linux/ppc64le c7a6800e3dc5 ├─ linux/riscv64 80cde017a105 └─ linux/s390x 2b5b26e09ca2 The `TestTree` implementation is really quirky though, as it uses a `[][]string`, which won't work well if we want to make it more generic (with an "unknown" depth); probably needs some type defined that has an optional slice for child rows; those child-rows can be pre-formatted. Signed-off-by: Sebastiaan van Stijn <github@gone.nl> |
||
---|---|---|
.github | ||
cli | ||
cli-plugins | ||
cmd/docker | ||
contrib/completion | ||
dockerfiles | ||
docs | ||
e2e | ||
experimental | ||
hack/otel | ||
internal/test | ||
man | ||
opts | ||
pkg/kvfile | ||
scripts | ||
service/logs | ||
templates | ||
vendor | ||
.dockerignore | ||
.gitattributes | ||
.gitignore | ||
.golangci.yml | ||
.mailmap | ||
AUTHORS | ||
CONTRIBUTING.md | ||
Dockerfile | ||
LICENSE | ||
MAINTAINERS | ||
Makefile | ||
NOTICE | ||
README.md | ||
SECURITY.md | ||
TESTING.md | ||
VERSION | ||
codecov.yml | ||
docker-bake.hcl | ||
docker.Makefile | ||
vendor.mod | ||
vendor.sum |
README.md
Docker CLI
About
This repository is the home of the Docker CLI.
Development
docker/cli
is developed using Docker.
Build CLI from source:
docker buildx bake
Build binaries for all supported platforms:
docker buildx bake cross
Build for a specific platform:
docker buildx bake --set binary.platform=linux/arm64
Build dynamic binary for glibc or musl:
USE_GLIBC=1 docker buildx bake dynbinary
Run all linting:
docker buildx bake lint shellcheck
Run test:
docker buildx bake test
List all the available targets:
make help
In-container development environment
Start an interactive development environment:
make -f docker.Makefile shell
Legal
Brought to you courtesy of our legal counsel. For more context, see the NOTICE document in this repo.
Use and transfer of Docker may be subject to certain restrictions by the United States and other governments.
It is your responsibility to ensure that your use and/or transfer does not violate applicable laws.
For more information, see https://www.bis.doc.gov
Licensing
docker/cli is licensed under the Apache License, Version 2.0. See LICENSE for the full license text.