/
root-completion.go
105 lines (85 loc) · 3.02 KB
/
root-completion.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
// Package cmd implements access-cli commands
package cmd
/*
Copyright © 2023 Barracuda Networks, Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
import (
"os"
"github.com/spf13/cobra"
)
// completionCmd represents the completion command
var completionCmd = &cobra.Command{
Use: "completion",
Short: "Generates bash, zsh or PowerShell completion scripts",
}
// bashCompletionCmd represents the completion command for bash
var bashCompletionCmd = &cobra.Command{
Use: "bash",
Short: "Generates bash completion script",
Long: `To load completion run
. <(access-cli completion bash)
To configure your bash shell to load completions for each session add to your bashrc
# ~/.bashrc or ~/.profile
. <(access-cli completion bash)`,
Run: func(cmd *cobra.Command, args []string) {
if global.VerboseLevel > 0 {
cmd.PrintErrln("This command must be called with verbose level 0")
return
}
rootCmd.GenBashCompletion(os.Stdout)
},
}
// zshCompletionCmd represents the completion command for zsh
var zshCompletionCmd = &cobra.Command{
Use: "zsh",
Short: "Generates zsh completion script",
Long: `The completion script can be generated by running
access-cli completion zsh
The generated completion script should be put somewhere in your $fpath named _access-cli.
`,
Run: func(cmd *cobra.Command, args []string) {
if global.VerboseLevel > 0 {
cmd.PrintErrln("This command must be called with verbose level 0")
return
}
rootCmd.GenZshCompletion(os.Stdout)
},
}
// psCompletionCmd represents the completion command for zsh
var psCompletionCmd = &cobra.Command{
Use: "powershell",
Aliases: []string{"ps"},
Short: "Generates PowerShell completion script",
Long: `The completion script can be generated by running
access-cli completion ps
`,
Run: func(cmd *cobra.Command, args []string) {
if global.VerboseLevel > 0 {
cmd.PrintErrln("This command must be called with verbose level 0")
return
}
rootCmd.GenPowerShellCompletion(os.Stdout)
},
}
func init() {
rootCmd.AddCommand(completionCmd)
completionCmd.AddCommand(bashCompletionCmd)
completionCmd.AddCommand(zshCompletionCmd)
completionCmd.AddCommand(psCompletionCmd)
// Here you will define your flags and configuration settings.
// Cobra supports Persistent Flags which will work for this command
// and all subcommands, e.g.:
// completionCmd.PersistentFlags().String("foo", "", "A help for foo")
// Cobra supports local flags which will only run when this command
// is called directly, e.g.:
// completionCmd.Flags().BoolP("toggle", "t", false, "Help message for toggle")
}