1
0
mirror of https://github.com/rclone/rclone.git synced 2025-12-06 00:03:32 +00:00

support for zsh auto-completion - #983

This commit is contained in:
bpicode
2017-08-31 15:52:51 +01:00
committed by Nick Craig-Wood
parent 7e93567b18
commit f1f7e0e6f9
9 changed files with 422 additions and 52 deletions

View File

@@ -0,0 +1,50 @@
package genautocomplete
import (
"log"
"os"
"github.com/ncw/rclone/cmd"
"github.com/spf13/cobra"
)
func init() {
completionDefinition.AddCommand(zshCommandDefinition)
}
var zshCommandDefinition = &cobra.Command{
Use: "zsh [output_file]",
Short: `Output zsh completion script for rclone.`,
Long: `
Generates a zsh autocompletion script for rclone.
This writes to /usr/share/zsh/vendor-completions/_rclone by default so will
probably need to be run with sudo or as root, eg
sudo rclone genautocomplete zsh
Logout and login again to use the autocompletion scripts, or source
them directly
autoload -U compinit && compinit
If you supply a command line argument the script will be written
there.
`,
Run: func(command *cobra.Command, args []string) {
cmd.CheckArgs(0, 1, command, args)
out := "/usr/share/zsh/vendor-completions/_rclone"
if len(args) > 0 {
out = args[0]
}
outFile, err := os.Create(out)
if err != nil {
log.Fatal(err)
}
defer func() { _ = outFile.Close() }()
err = cmd.Root.GenZshCompletion(outFile)
if err != nil {
log.Fatal(err)
}
},
}