From 7f49bd8a3159dedfea456ce34a01c23f74c37d27 Mon Sep 17 00:00:00 2001 From: kingxt Date: Wed, 13 Jan 2021 16:37:33 +0800 Subject: [PATCH] code optimized (#382) --- tools/goctl/api/format/format.go | 17 ++++++++++------- tools/goctl/api/parser/parser.go | 5 +++++ 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/tools/goctl/api/format/format.go b/tools/goctl/api/format/format.go index 0abf13a54..923401d3f 100644 --- a/tools/goctl/api/format/format.go +++ b/tools/goctl/api/format/format.go @@ -54,10 +54,12 @@ func GoFormatApi(c *cli.Context) error { }) be.Add(err) } + if be.NotNil() { scanner.PrintError(os.Stderr, be.Err()) os.Exit(1) } + return be.Err() } @@ -73,10 +75,7 @@ func ApiFormatByStdin() error { } _, err = fmt.Print(result) - if err != nil { - return err - } - return nil + return err } func ApiFormatByPath(apiFilePath string) error { @@ -90,10 +89,12 @@ func ApiFormatByPath(apiFilePath string) error { return err } - if err := ioutil.WriteFile(apiFilePath, []byte(result), os.ModePerm); err != nil { + _, err = parser.ParseContent(result) + if err != nil { return err } - return nil + + return ioutil.WriteFile(apiFilePath, []byte(result), os.ModePerm) } func apiFormat(data string) (string, error) { @@ -150,6 +151,7 @@ func apiFormat(data string) (string, error) { } preLine = line } + return strings.TrimSpace(builder.String()), nil } @@ -178,9 +180,9 @@ func formatGoTypeDef(line string, scanner *bufio.Scanner, builder *strings.Build break } } - return true, nil } + return false, nil } @@ -212,5 +214,6 @@ func mayInsertStructKeyword(line string, token *int) string { if strings.Contains(noCommentLine, "`") { return util.UpperFirst(strings.TrimSpace(line)) } + return line } diff --git a/tools/goctl/api/parser/parser.go b/tools/goctl/api/parser/parser.go index b42295db6..1943b8d54 100644 --- a/tools/goctl/api/parser/parser.go +++ b/tools/goctl/api/parser/parser.go @@ -148,6 +148,11 @@ func (p parser) fieldToMember(field *ast.TypeField) spec.Member { var tag = "" if !field.IsAnonymous { name = field.Name.Text() + if field.Tag == nil { + panic(fmt.Sprintf("error: line %d:%d field %s has no tag", field.Name.Line(), field.Name.Column(), + field.Name.Text())) + } + tag = field.Tag.Text() } return spec.Member{