/
root.go
73 lines (66 loc) · 1.33 KB
/
root.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
package cmd
import (
"fmt"
"io"
"os"
"github.com/gohxs/boiler"
"github.com/spf13/cobra"
)
const (
bashCompleteFunc = `
__boiler_get_generator()
{
if boiler_output=$(bp generators list); then
out=$(echo "${boiler_output}")
COMPREPLY=( $( compgen -W "${out[*]}" -- "$cur" ) )
fi
}
__custom_func() {
case ${last_command} in
bp_add)
__boiler_get_generator
return
;;
*)
;;
esac
}
`
)
var (
// RootCmd of application
RootCmd = &cobra.Command{Use: os.Args[0], BashCompletionFunction: bashCompleteFunc}
// Stdin for cli app
Stdin io.Reader = os.Stdin
gboiler *boiler.Core
)
func init() {
RootCmd.Flags().String("bashcompletion", "", "Generates bashcompletion helper")
RootCmd.Run = func(cmd *cobra.Command, args []string) {
fl := cmd.Flag("bashcompletion")
if fl.Changed {
// Specially reset commands generated from project path
for _, c := range RootCmd.Commands() {
if c.Name() == "add" {
c.ResetCommands()
break
}
}
RootCmd.GenBashCompletionFile(fl.Value.String())
return
}
RootCmd.Help()
}
}
// Boiler Singleton?
func Boiler() *boiler.Core {
var err error
if gboiler != nil {
return gboiler
}
gboiler, err = boiler.From(".")
if err != nil {
fmt.Fprintln(os.Stderr, err)
}
return gboiler
}