-
Notifications
You must be signed in to change notification settings - Fork 75
/
generate.go
42 lines (35 loc) · 1.16 KB
/
generate.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
package schemaherocli
import (
"github.com/schemahero/schemahero/pkg/generate"
"github.com/spf13/cobra"
"github.com/spf13/viper"
)
func Generate() *cobra.Command {
cmd := &cobra.Command{
Use: "generate",
Short: "generate schemahero custom resources from a running database instance",
Long: `...`,
PreRun: func(cmd *cobra.Command, args []string) {
viper.BindPFlags(cmd.Flags())
},
RunE: func(cmd *cobra.Command, args []string) error {
v := viper.GetViper()
g := generate.Generator{
Driver: v.GetString("driver"),
URI: v.GetString("uri"),
DBName: v.GetString("dbname"),
OutputDir: v.GetString("output-dir"),
}
return g.RunSync()
},
}
cmd.Flags().String("driver", "", "name of the database driver to use")
cmd.Flags().String("uri", "", "connection string uri")
cmd.Flags().String("namespace", "default", "namespace to put the custom resources into")
cmd.Flags().String("dbname", "", "schemahero database name to write in the yaml")
cmd.Flags().String("output-dir", "", "directory to write schema files to")
cmd.MarkFlagRequired("driver")
cmd.MarkFlagRequired("uri")
cmd.MarkFlagRequired("dbname")
return cmd
}