fix zsh completion not working with `source`

README.md: add shell completion installation instructions

Signed-off-by: Adphi <philippe.adrien.nousse@gmail.com>
This commit is contained in:
Adphi 2022-09-12 10:01:04 +02:00
parent 7f3b3a859d
commit f1557d104d
Signed by: adphi
GPG Key ID: 46BE4062DB2397FF
2 changed files with 23 additions and 0 deletions

View File

@ -75,6 +75,23 @@ which d2vm
/go/bin/d2vm
```
### Generate shell completion
The *d2vm* program supports shell completion for *bash*, *zsh* and *fish*.
It can be enabled by running the following command:
```bash
source <(d2vm completion $(basename $SHELL))
```
Or you can install the completion file in the shell completion directory by following the instructions:
```bash
d2vm completion $(basename $SHELL) --help
```
### Converting an existing Docker Image to VM image:
```bash

View File

@ -56,6 +56,12 @@ var (
logrus.SetLevel(logrus.TraceLevel)
}
exec.SetDebug(verbose)
// make the zsh completion work when sourced with `source <(d2vm completion zsh)`
if cmd.Name() == "zsh" && cmd.Parent() != nil && cmd.Parent().Name() == "completion" {
zshHead := fmt.Sprintf("#compdef %[1]s\ncompdef _%[1]s %[1]s\n", cmd.Root().Name())
cmd.OutOrStdout().Write([]byte(zshHead))
}
},
}
)