Commit d636c73
committed
usage, completion: assume executable is always lowercase
When running on a case-insensitive platform / filesystem, the user
can invoke the executable using any case (e.g., "bUiLdX"). In situations
where buildx is running standalone, we use os.Args to determine the
name of the executable, and this information is used by Cobra to
print "Usage" output as well as generating the shell-completion
scripts.
Unfortunately, neither [os.Executable] nor [os.Stat] provide information
about the actual name of the executable, and the "correct" solution would
be to use [os.File.Readdirnames], which is a rather heavy hammer to use
just for this.
This patch assumes the executable to be named lowercase, regardless of
how it's invoked, on macOS and Windows (usually case-insensitive platforms).
It's worth noting that there's a corner-case to this corner-case; both
Windows and macOS can be configured to use a case-sensitive filesystem
(on Windows, this can be configured per-Directory). If that is the case,
and the executable is not lowercase, the generated shell-completion script
will be invalid.
Let's assume that's not the case, and that the user did not rename the
executable to anything uppercase.
Before this patch:
./bin/build/bUiLdX --help | head -n 5
Extended build capabilities with BuildKit
Usage:
bUiLdX
bUiLdX [command]
./bin/build/bUiLdX completion bash | head -n 3
# bash completion V2 for bUiLdX -*- shell-script -*-
__bUiLdX_debug()
With this patch applied:
./bin/build/bUiLdX --help | head -n 5
Extended build capabilities with BuildKit
Usage:
buildx
buildx [command]
./bin/build/bUiLdX completion bash | head -n 3
# bash completion V2 for buildx -*- shell-script -*-
__buildx_debug()
[os.Executable]: https://pkg.go.dev/os#Executable
[os.Stat]: https://pkg.go.dev/os#Stat
[os.File.Readdirnames]: https://pkg.go.dev/os#File.Readdirnames
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>1 parent bb4bef2 commit d636c73
1 file changed
+26
-0
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
| 8 | + | |
| 9 | + | |
8 | 10 | | |
9 | 11 | | |
10 | 12 | | |
| |||
43 | 45 | | |
44 | 46 | | |
45 | 47 | | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
46 | 72 | | |
47 | 73 | | |
48 | 74 | | |
| |||
0 commit comments