How to get docker 'objects' completion on mintty-bash from git for windows
Asked Answered
D

1

9

I have read (and tried) this: https://docs.docker.com/machine/completion/

But it seems this is not the right way to get it on.

Anybody know how to get docker completion commands in Mintty (from Git for windows) bash command line?

Doorframe answered 2/4, 2017 at 15:17 Comment(1)
Just for the record and because it would be easier to find this question with a search, the error messages displayed are for instance $ docker build bash: _filedir: command not found or $ docker run bash: __ltrim_colon_completions: command not foundHypocorism
H
13

Not sure if this is the best way to do this or if it work properly at all, but it seems to work! Let me know if you find any strange behavior...

Minimum requirements:

  • Git for Windows (git bash / mintty terminal)
  • 7-Zip or similar to extract files

Installation:

First of all, you will need the bash-completion package.

I discovered that the package built for cygwin works.

  1. Choose a cygwin mirror: https://cygwin.com/mirrors.html
  2. Navigate to: /cygwin/noarch/release/bash-completion/
  3. Download: bash-completion-2.7-1.tar.xz
  4. Extract it elsewhere
  5. Copy the etc and usr folder to C:\Program Files\Git (see the note below)

Done, now you should have command completion enabled.


Testing:

You can test it by opening a git bash terminal and typing:

curl --ver (hit tab twice)

It will suggests something like this:

$ curl --ver
--verbose  --version

Docker commands:

Now, about that docker commands...

I have found my files here:

docker command: https://github.com/docker/docker-ce/blob/v17.09.0-ce/components/cli/contrib/completion/bash/docker

docker-compose command: https://github.com/docker/compose/blob/1.16.1/contrib/completion/bash/docker-compose

docker-machine command: https://github.com/docker/machine/blob/v0.12.2/contrib/completion/bash/docker-machine.bash

Just download and copy them to: C:\Program Files\Git\usr\share\bash-completion\completions\

Make sure they are correctly named (remove the filename extension if any).

It should be named like this:

  • docker
  • docker-compose
  • docker-machine

No extra .txt or whatever...

docker commands with completion


Some notes:

I'm not sure if the package bash-completion-2.7.1 is the best version to work with git bash, I just got the latest one. (You can compare them and find it out)

You don't need to copy all the files from /usr/share/bash-completion/completions/, just the ones you want. (I didn't copy any of them).

It's a good idea to run a docker version, docker-compose version, docker-machine version and check the versions you are running, then download the correct files from the repository. (Choose the correct release tag for you).

Hughhughes answered 9/12, 2017 at 18:47 Comment(3)
Indeed the only two required files seem to be etc/profile.d/bash_completion.sh and usr/share/bash-completion/bash_completion.Hypocorism
msysgit doesn't come with the man command, so the /usr/share/doc folder isn't relevant. The other completion files are just for other commands. Some might be interesting depending on your usage. Some aren't relevant in msysgit. But these extra files won't do any damage.Moke
For others looking for solution - I've had to use Docker autp-completion syntax from here: github.com/docker/cli/blob/18.06/contrib/completion/bash/dockerAnomalous

© 2022 - 2024 — McMap. All rights reserved.