From 7d36af075367c1f16744f1026cf8f74f5e3240b9 Mon Sep 17 00:00:00 2001 From: Kamil Samigullin Date: Tue, 2 Oct 2018 19:25:14 +0300 Subject: [PATCH] little cmd/grpc_helper improvements --- Makefile | 1 + cmd/config.go | 1 - cmd/ctl_test.go | 2 +- cmd/grpc_helper.go | 47 +++++++++++++++++++++++++++++---------------- cmd/migrate_test.go | 2 +- cmd/root_test.go | 2 +- cmd/run_test.go | 2 +- 7 files changed, 35 insertions(+), 22 deletions(-) diff --git a/Makefile b/Makefile index ff30508..6827716 100644 --- a/Makefile +++ b/Makefile @@ -2,6 +2,7 @@ OPEN_BROWSER = SUPPORTED_VERSIONS = 1.9 1.10 1.11 latest +include env/.env.example include env/makefiles/env.mk include env/makefiles/docker.mk include env/makefiles/local.mk diff --git a/cmd/config.go b/cmd/config.go index bbbb95e..b3e36ef 100644 --- a/cmd/config.go +++ b/cmd/config.go @@ -24,7 +24,6 @@ var ( "idle_timeout": time.Duration(0), "base_url": "http://localhost/", "template_dir": "static/templates", - "forma_token": "", "dsn": "postgres://postgres:postgres@127.0.0.1:5432/postgres?connect_timeout=1&sslmode=disable", "open_conn": 1, "idle_conn": 1, diff --git a/cmd/ctl_test.go b/cmd/ctl_test.go index 1d619dd..fedae39 100644 --- a/cmd/ctl_test.go +++ b/cmd/ctl_test.go @@ -1 +1 @@ -package cmd +package cmd_test diff --git a/cmd/grpc_helper.go b/cmd/grpc_helper.go index 0640716..5ebcb59 100644 --- a/cmd/grpc_helper.go +++ b/cmd/grpc_helper.go @@ -22,25 +22,30 @@ import ( "gopkg.in/yaml.v2" ) +const ( + schemaKind kind = "Schema" + templateKind kind = "Template" +) + var entities factory func init() { entities = factory{ createCmd: { - "Schema": func() interface{} { return &pb.CreateSchemaRequest{} }, - "Template": func() interface{} { return &pb.CreateTemplateRequest{} }, + schemaKind: func() interface{} { return &pb.CreateSchemaRequest{} }, + templateKind: func() interface{} { return &pb.CreateTemplateRequest{} }, }, readCmd: { - "Schema": func() interface{} { return &pb.ReadSchemaRequest{} }, - "Template": func() interface{} { return &pb.ReadTemplateRequest{} }, + schemaKind: func() interface{} { return &pb.ReadSchemaRequest{} }, + templateKind: func() interface{} { return &pb.ReadTemplateRequest{} }, }, updateCmd: { - "Schema": func() interface{} { return &pb.UpdateSchemaRequest{} }, - "Template": func() interface{} { return &pb.UpdateTemplateRequest{} }, + schemaKind: func() interface{} { return &pb.UpdateSchemaRequest{} }, + templateKind: func() interface{} { return &pb.UpdateTemplateRequest{} }, }, deleteCmd: { - "Schema": func() interface{} { return &pb.DeleteSchemaRequest{} }, - "Template": func() interface{} { return &pb.DeleteTemplateRequest{} }, + schemaKind: func() interface{} { return &pb.DeleteSchemaRequest{} }, + templateKind: func() interface{} { return &pb.DeleteTemplateRequest{} }, }, } } @@ -52,11 +57,15 @@ func communicate(cmd *cobra.Command, _ []string) error { } if dry, _ := cmd.Flags().GetBool("dry-run"); dry { cmd.Printf("%T would be sent with data: ", entity) + if cmd.Flag("output").Value.String() == jsonFormat { + return json.NewEncoder(cmd.OutOrStdout()).Encode(entity) + } return json.NewEncoder(cmd.OutOrStdout()).Encode(entity) } response, err := call(cnf.Union.GRPCConfig, entity) if err != nil { - return err + cmd.Println(err) + return nil } if cmd.Flag("output").Value.String() == jsonFormat { return json.NewEncoder(cmd.OutOrStdout()).Encode(response) @@ -67,7 +76,7 @@ func communicate(cmd *cobra.Command, _ []string) error { func printSchemas(cmd *cobra.Command, _ []string) error { var ( target *cobra.Command - builders map[string]func() interface{} + builders map[kind]builder found bool ) use := cmd.Flag("for").Value.String() @@ -80,30 +89,34 @@ func printSchemas(cmd *cobra.Command, _ []string) error { if !found { return errors.Errorf("unknown control command %q", use) } - for kind, builder := range builders { - yaml.NewEncoder(cmd.OutOrStdout()).Encode(schema{Kind: kind, Payload: convert(builder())}) + for k, b := range builders { + _ = yaml.NewEncoder(cmd.OutOrStdout()).Encode(schema{Kind: k, Payload: convert(b())}) cmd.Println() } return nil } +type builder func() interface{} + +type kind string + type schema struct { - Kind string `yaml:"kind"` + Kind kind `yaml:"kind"` Payload map[string]interface{} `yaml:"payload"` } -type factory map[*cobra.Command]map[string]func() interface{} +type factory map[*cobra.Command]map[kind]builder func (f factory) new(cmd *cobra.Command) (interface{}, error) { data, err := f.data(cmd.Flag("filename").Value.String()) if err != nil { return nil, err } - builder, ok := f[cmd][data.Kind] - if !ok { + build, found := f[cmd][data.Kind] + if !found { return nil, errors.Errorf("unknown payload type %q", data.Kind) } - entity := builder() + entity := build() if err = mapstructure.Decode(data.Payload, &entity); err != nil { return nil, errors.Wrapf(err, "trying to decode payload to %#v", entity) } diff --git a/cmd/migrate_test.go b/cmd/migrate_test.go index 1d619dd..fedae39 100644 --- a/cmd/migrate_test.go +++ b/cmd/migrate_test.go @@ -1 +1 @@ -package cmd +package cmd_test diff --git a/cmd/root_test.go b/cmd/root_test.go index 1d619dd..fedae39 100644 --- a/cmd/root_test.go +++ b/cmd/root_test.go @@ -1 +1 @@ -package cmd +package cmd_test diff --git a/cmd/run_test.go b/cmd/run_test.go index 1d619dd..fedae39 100644 --- a/cmd/run_test.go +++ b/cmd/run_test.go @@ -1 +1 @@ -package cmd +package cmd_test