/
get.go
71 lines (66 loc) · 2.08 KB
/
get.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
package cliserv
import (
"github.com/containerum/chkit/pkg/context"
"github.com/containerum/chkit/pkg/export"
"github.com/containerum/chkit/pkg/model"
"github.com/containerum/chkit/pkg/model/service"
"github.com/containerum/chkit/pkg/util/ferr"
"github.com/containerum/chkit/pkg/util/strset"
"github.com/spf13/cobra"
)
var aliases = []string{"srv", "services", "svc", "serv"}
func Get(ctx *context.Context) *cobra.Command {
var getServiceConfig = struct {
export.ExportConfig
}{}
command := &cobra.Command{
Use: "service",
Aliases: aliases,
Short: "show service info",
Long: "Show service info.",
Example: "chkit get service service_label [-o yaml/json] [-f output_file]",
Run: func(cmd *cobra.Command, args []string) {
serviceData, err := func() (model.Renderer, error) {
switch len(args) {
case 0:
var list service.ServiceList
var err error
if solutionName, _ := cmd.Flags().GetString("solution"); solutionName != "" {
list, err = ctx.Client.GetSolutionServices(ctx.GetNamespace().ID, solutionName)
} else {
list, err = ctx.Client.GetServiceList(ctx.GetNamespace().ID)
}
return list, err
case 1:
svc, err := ctx.Client.GetService(ctx.GetNamespace().ID, args[0])
return svc, err
default:
list, err := ctx.Client.GetServiceList(ctx.GetNamespace().ID)
var filteredList service.ServiceList
names := strset.NewSet(args)
for _, svc := range list {
if names.Have(svc.Name) {
filteredList = append(filteredList, svc)
}
}
return filteredList, err
}
}()
if err != nil {
ferr.Println(err)
ctx.Exit(1)
}
if err := export.ExportData(serviceData, getServiceConfig.ExportConfig); err != nil {
ferr.Println(err)
ctx.Exit(1)
}
},
}
command.PersistentFlags().
StringVarP((*string)(&getServiceConfig.Format), "output", "o", "", "output format [yaml/json]")
command.PersistentFlags().
StringVarP(&getServiceConfig.Filename, "file", "f", "-", "output file")
command.PersistentFlags().
StringP("solution", "s", "", "solution name")
return command
}