Skip to content

Commit 856d805

Browse files
authored
Refactor with AST (#70)
* Refactor Signed-off-by: Loong Dai <[email protected]> * fix CI Signed-off-by: Loong Dai <[email protected]> * skip on Win Signed-off-by: Loong Dai <[email protected]> * fix no imports Signed-off-by: Loong Dai <[email protected]>
1 parent 1964a6b commit 856d805

File tree

113 files changed

+1162
-1628
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

113 files changed

+1162
-1628
lines changed

Makefile

+4-4
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@ default: clean generate test build
66

77
clean:
88
@echo BIN_OUTPUT: ${BIN_OUTPUT}
9-
rm -rf dist/ cover.out
9+
@rm -rf dist cover.out
1010

1111
build: clean
12-
go build -v -trimpath -o ${BIN_OUTPUT} .
12+
@go build -v -trimpath -o ${BIN_OUTPUT} .
1313

1414
test: clean
15-
go test -v -cover ./...
15+
@go test -v -cover ./...
1616

1717
generate:
18-
go generate ./...
18+
@go generate ./...

README.md

+58-46
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,26 @@ GCI, a tool that controls golang package import order and makes it always determ
44

55
The desired output format is highly configurable and allows for more custom formatting than `goimport` does.
66

7+
GCI considers a import block based on AST as below:
8+
```
9+
Doc
10+
Name Path Comment
11+
```
12+
All comments will keep as they were, except the independent comment blocks(line breaks before and after).
13+
14+
GCI splits all import blocks into different sections, now support three section type:
15+
- standard: Golang official imports, like "fmt"
16+
- custom: Custom section, use full and the longest match(match full string first, if multiple matches, use the longest one)
17+
- default: All rest import blocks
18+
19+
The priority is standard>custom>default, all sections sort alphabetically inside.
20+
21+
All import blocks use one TAB(`\t`) as Indent.
22+
23+
**Note**:
24+
25+
`nolint` is hard to handle at section level, GCI will consider it as a single comment.
26+
727
## Download
828

929
```shell
@@ -28,18 +48,14 @@ Aliases:
2848
print, output
2949

3050
Flags:
31-
--NoInlineComments Drops inline comments while formatting
32-
--NoPrefixComments Drops comment lines above an import statement while formatting
33-
-s, --Section strings Sections define how inputs will be processed. Section names are case-insensitive and may contain parameters in (). A section can contain a Prefix and a Suffix section which is delimited by ":". These sections can be used for formatting and will only be rendered if the main section contains an entry.
34-
Comment(your text here) | CommentLine(your text here) - Prints the specified indented comment
35-
Def | Default - Contains all imports that could not be matched to another section type
36-
NL | NewLine - Prints an empty line
37-
Prefix(gitlab.com/myorg) | pkgPrefix(gitlab.com/myorg) - Groups all imports with the specified Prefix. Imports will be matched to the longest Prefix.
38-
Std | Standard - Captures all standard packages if they do not match another section
39-
(default [Standard,Default])
40-
-x, --SectionSeparator strings SectionSeparators are inserted between Sections (default [NewLine])
41-
--SkipGeneratedFiles Don't process generated files
42-
-h, --help help for print
51+
-d, --debug Enables debug output from the formatter
52+
-h, --help help for print
53+
-s, --section strings Sections define how inputs will be processed. Section names are case-insensitive and may contain parameters in (). A section can contain a Prefix and a Suffix section which is delimited by ":". These sections can be used for formatting and will only be rendered if the main section contains an entry. The Section order is the same as below, default value is [Standard,Default].
54+
Std | Standard - Captures all standard packages if they do not match another section
55+
Prefix(github.com/daixiang0) | pkgPrefix(github.com/daixiang0) - Groups all imports with the specified Prefix. Imports will be matched to the longest Prefix.
56+
Def | Default - Contains all imports that could not be matched to another section type
57+
[DEPRECATED] Comment(your text here) | CommentLine(your text here) - Prints the specified indented comment
58+
[DEPRECATED] NL | NewLine - Prints an empty line
4359
```
4460
4561
```shell
@@ -53,18 +69,14 @@ Aliases:
5369
write, overwrite
5470

5571
Flags:
56-
--NoInlineComments Drops inline comments while formatting
57-
--NoPrefixComments Drops comment lines above an import statement while formatting
58-
-s, --Section strings Sections define how inputs will be processed. Section names are case-insensitive and may contain parameters in (). A section can contain a Prefix and a Suffix section which is delimited by ":". These sections can be used for formatting and will only be rendered if the main section contains an entry.
59-
Comment(your text here) | CommentLine(your text here) - Prints the specified indented comment
60-
Def | Default - Contains all imports that could not be matched to another section type
61-
NL | NewLine - Prints an empty line
62-
Prefix(gitlab.com/myorg) | pkgPrefix(gitlab.com/myorg) - Groups all imports with the specified Prefix. Imports will be matched to the longest Prefix.
63-
Std | Standard - Captures all standard packages if they do not match another section
64-
(default [Standard,Default])
65-
-x, --SectionSeparator strings SectionSeparators are inserted between Sections (default [NewLine])
66-
--SkipGeneratedFiles Don't process generated files
67-
-h, --help help for write
72+
-d, --debug Enables debug output from the formatter
73+
-h, --help help for write
74+
-s, --section strings Sections define how inputs will be processed. Section names are case-insensitive and may contain parameters in (). A section can contain a Prefix and a Suffix section which is delimited by ":". These sections can be used for formatting and will only be rendered if the main section contains an entry. The Section order is the same as below, default value is [Standard,Default].
75+
Std | Standard - Captures all standard packages if they do not match another section
76+
Prefix(github.com/daixiang0) | pkgPrefix(github.com/daixiang0) - Groups all imports with the specified Prefix. Imports will be matched to the longest Prefix.
77+
Def | Default - Contains all imports that could not be matched to another section type
78+
[DEPRECATED] Comment(your text here) | CommentLine(your text here) - Prints the specified indented comment
79+
[DEPRECATED] NL | NewLine - Prints an empty line
6880
```
6981
7082
```shell
@@ -75,19 +87,14 @@ Usage:
7587
gci diff path... [flags]
7688

7789
Flags:
78-
--NoInlineComments Drops inline comments while formatting
79-
--NoPrefixComments Drops comment lines above an import statement while formatting
80-
-s, --Section strings Sections define how inputs will be processed. Section names are case-insensitive and may contain parameters in (). A section can contain a Prefix and a Suffix section which is delimited by ":". These sections can be used for formatting and will only be rendered if the main section contains an entry.
81-
Comment(your text here) | CommentLine(your text here) - Prints the specified indented comment
82-
Def | Default - Contains all imports that could not be matched to another section type
83-
NL | NewLine - Prints an empty line
84-
Prefix(gitlab.com/myorg) | pkgPrefix(gitlab.com/myorg) - Groups all imports with the specified Prefix. Imports will be matched to the longest Prefix.
85-
Std | Standard - Captures all standard packages if they do not match another section
86-
(default [Standard,Default])
87-
-x, --SectionSeparator strings SectionSeparators are inserted between Sections (default [NewLine])
88-
--SkipGeneratedFiles Don't process generated files
89-
-d, --debug Enables debug output from the formatter
90-
-h, --help help for diff
90+
-d, --debug Enables debug output from the formatter
91+
-h, --help help for diff
92+
-s, --section strings Sections define how inputs will be processed. Section names are case-insensitive and may contain parameters in (). A section can contain a Prefix and a Suffix section which is delimited by ":". These sections can be used for formatting and will only be rendered if the main section contains an entry. The Section order is the same as below, default value is [Standard,Default].
93+
Std | Standard - Captures all standard packages if they do not match another section
94+
Prefix(github.com/daixiang0) | pkgPrefix(github.com/daixiang0) - Groups all imports with the specified Prefix. Imports will be matched to the full and longest Prefix. All groups are in alphabetical order.
95+
Def | Default - Contains all imports that could not be matched to another section type
96+
[DEPRECATED] Comment(your text here) | CommentLine(your text here) - Prints the specified indented comment
97+
[DEPRECATED] NL | NewLine - Prints an empty line
9198
```
9299
93100
### Old style
@@ -107,21 +114,21 @@ Flags:
107114
108115
**Note**::
109116
110-
The old style is only for local tests, `golangci-lint` uses new style.
117+
The old style is only for local tests, will be deprecated, please uses new style, `golangci-lint` uses new style as well.
111118
112119
## Examples
113120
114-
Run `gci write --Section Standard --Section Default --Section "Prefix(github.com/daixiang0/gci)" main.go` and you will handle following cases:
121+
Run `gci write -s standard -s default -s "prefix(github.com/daixiang0/gci)" main.go` and you will handle following cases:
115122
116123
### simple case
117124
118125
```go
119126
package main
120127
import (
121128
"golang.org/x/tools"
122-
129+
123130
"fmt"
124-
131+
125132
"github.com/daixiang0/gci"
126133
)
127134
```
@@ -131,11 +138,11 @@ to
131138
```go
132139
package main
133140
import (
134-
"fmt"
141+
"fmt"
135142

136-
"golang.org/x/tools"
143+
"github.com/daixiang0/gci"
137144

138-
"github.com/daixiang0/gci"
145+
"golang.org/x/tools"
139146
)
140147
```
141148
@@ -157,12 +164,17 @@ package main
157164
import (
158165
"fmt"
159166

160-
go "github.com/golang"
161-
162167
"github.com/daixiang0/gci"
168+
169+
go "github.com/golang"
163170
)
164171
```
165172
166173
## TODO
167174
175+
- Ensure only one blank between `Name` and `Path` in an import block
176+
- Ensure only one blank between `Path` and `Comment` in an import block
177+
- Format comments
168178
- Add more testcases
179+
- Support imports completion (please use `goimports` first then use GCI)
180+
- Optimize comments

cmd/gci/gcicommand.go

+30-22
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,18 @@
11
package gci
22

33
import (
4-
"fmt"
5-
64
"github.com/spf13/cobra"
75
"go.uber.org/zap/zapcore"
86

9-
"github.com/daixiang0/gci/pkg/configuration"
10-
"github.com/daixiang0/gci/pkg/constants"
11-
"github.com/daixiang0/gci/pkg/gci"
12-
sectionsPkg "github.com/daixiang0/gci/pkg/gci/sections"
7+
"github.com/daixiang0/gci/pkg/config"
138
"github.com/daixiang0/gci/pkg/log"
9+
"github.com/daixiang0/gci/pkg/section"
1410
)
1511

16-
type processingFunc = func(args []string, gciCfg gci.GciConfiguration) error
12+
type processingFunc = func(args []string, gciCfg config.Config) error
1713

1814
func (e *Executor) newGciCommand(use, short, long string, aliases []string, stdInSupport bool, processingFunc processingFunc) *cobra.Command {
19-
var noInlineComments, noPrefixComments, debug, skipGeneratedFiles *bool
15+
var noInlineComments, noPrefixComments, skipGenerated, debug *bool
2016
var sectionStrings, sectionSeparatorStrings *[]string
2117
cmd := cobra.Command{
2218
Use: use,
@@ -25,10 +21,13 @@ func (e *Executor) newGciCommand(use, short, long string, aliases []string, stdI
2521
Long: long,
2622
ValidArgsFunction: goFileCompletion,
2723
RunE: func(cmd *cobra.Command, args []string) error {
28-
fmtCfg := configuration.FormatterConfiguration{*noInlineComments, *noPrefixComments, *debug}
29-
gciCfg, err := gci.GciStringConfiguration{
30-
fmtCfg, *sectionStrings, *sectionSeparatorStrings, *skipGeneratedFiles,
31-
}.Parse()
24+
fmtCfg := config.BoolConfig{
25+
NoInlineComments: *noInlineComments,
26+
NoPrefixComments: *noPrefixComments,
27+
Debug: *debug,
28+
SkipGenerated: *skipGenerated,
29+
}
30+
gciCfg, err := config.YamlConfig{Cfg: fmtCfg, SectionStrings: *sectionStrings, SectionSeparatorStrings: *sectionSeparatorStrings}.Parse()
3231
if err != nil {
3332
return err
3433
}
@@ -45,18 +44,27 @@ func (e *Executor) newGciCommand(use, short, long string, aliases []string, stdI
4544
// register command as subcommand
4645
e.rootCmd.AddCommand(&cmd)
4746

48-
sectionHelp := "Sections define how inputs will be processed. " +
49-
"Section names are case-insensitive and may contain parameters in (). " +
50-
fmt.Sprintf("A section can contain a Prefix and a Suffix section which is delimited by %q. ", constants.SectionSeparator) +
51-
"These sections can be used for formatting and will only be rendered if the main section contains an entry." +
52-
"\n" +
53-
sectionsPkg.SectionParserInst.SectionHelpTexts()
54-
// add flags
5547
debug = cmd.Flags().BoolP("debug", "d", false, "Enables debug output from the formatter")
48+
49+
sectionHelp := `Sections define how inputs will be processed. Section names are case-insensitive and may contain parameters in (). A section can contain a Prefix and a Suffix section which is delimited by ":". These sections can be used for formatting and will only be rendered if the main section contains an entry. The Section order is the same as below, default value is [Standard,Default].
50+
Std | Standard - Captures all standard packages if they do not match another section
51+
Prefix(github.com/daixiang0) | pkgPrefix(github.com/daixiang0) - Groups all imports with the specified Prefix. Imports will be matched to the longest Prefix.
52+
Def | Default - Contains all imports that could not be matched to another section type
53+
[DEPRECATED] Comment(your text here) | CommentLine(your text here) - Prints the specified indented comment
54+
[DEPRECATED] NL | NewLine - Prints an empty line`
55+
56+
skipGenerated = cmd.Flags().Bool("skip-generated", false, "Skip generated files")
57+
58+
sectionStrings = cmd.Flags().StringSliceP("section", "s", nil, sectionHelp)
59+
60+
// deprecated
5661
noInlineComments = cmd.Flags().Bool("NoInlineComments", false, "Drops inline comments while formatting")
62+
cmd.Flags().MarkDeprecated("NoInlineComments", "Drops inline comments while formatting")
5763
noPrefixComments = cmd.Flags().Bool("NoPrefixComments", false, "Drops comment lines above an import statement while formatting")
58-
sectionStrings = cmd.Flags().StringSliceP("Section", "s", gci.DefaultSections().String(), sectionHelp)
59-
sectionSeparatorStrings = cmd.Flags().StringSliceP("SectionSeparator", "x", gci.DefaultSectionSeparators().String(), "SectionSeparators are inserted between Sections")
60-
skipGeneratedFiles = cmd.Flags().Bool("SkipGeneratedFiles", false, "Don't process generated files")
64+
cmd.Flags().MarkDeprecated("NoPrefixComments", "Drops inline comments while formatting")
65+
sectionSeparatorStrings = cmd.Flags().StringSliceP("SectionSeparator", "x", section.DefaultSectionSeparators().String(), "SectionSeparators are inserted between Sections")
66+
cmd.Flags().MarkDeprecated("SectionSeparator", "Drops inline comments while formatting")
67+
cmd.Flags().MarkDeprecated("x", "Drops inline comments while formatting")
68+
6169
return &cmd
6270
}

cmd/gci/root.go

+12-4
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,10 @@ import (
66

77
"github.com/spf13/cobra"
88

9-
"github.com/daixiang0/gci/pkg/configuration"
9+
"github.com/daixiang0/gci/pkg/config"
1010
"github.com/daixiang0/gci/pkg/gci"
1111
"github.com/daixiang0/gci/pkg/log"
12+
"github.com/daixiang0/gci/pkg/section"
1213
)
1314

1415
type Executor struct {
@@ -59,9 +60,16 @@ func (e *Executor) runInCompatibilityMode(cmd *cobra.Command, args []string) err
5960
}
6061
// generate section specification from old localFlags format
6162
sections := gci.LocalFlagsToSections(*e.localFlags)
62-
sectionSeparators := gci.DefaultSectionSeparators()
63-
cfg := gci.GciConfiguration{
64-
configuration.FormatterConfiguration{false, false, false}, sections, sectionSeparators, false,
63+
sectionSeparators := section.DefaultSectionSeparators()
64+
cfg := config.Config{
65+
BoolConfig: config.BoolConfig{
66+
NoInlineComments: false,
67+
NoPrefixComments: false,
68+
Debug: false,
69+
SkipGenerated: false,
70+
},
71+
Sections: sections,
72+
SectionSeparators: sectionSeparators,
6573
}
6674
if *e.writeMode {
6775
return gci.WriteFormattedFiles(args, cfg)

go.mod

+4-1
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,23 @@ require (
66
github.com/hexops/gotextdiff v1.0.3
77
github.com/spf13/cobra v1.3.0
88
github.com/stretchr/testify v1.7.0
9+
github.com/tj/assert v0.0.3
910
go.uber.org/zap v1.17.0
1011
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c
1112
golang.org/x/tools v0.1.5
12-
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b
13+
gopkg.in/yaml.v2 v2.4.0
1314
)
1415

1516
require (
1617
github.com/davecgh/go-spew v1.1.1 // indirect
1718
github.com/inconshreveable/mousetrap v1.0.0 // indirect
19+
github.com/pkg/errors v0.9.1 // indirect
1820
github.com/pmezard/go-difflib v1.0.0 // indirect
1921
github.com/spf13/pflag v1.0.5 // indirect
2022
go.uber.org/atomic v1.7.0 // indirect
2123
go.uber.org/multierr v1.6.0 // indirect
2224
golang.org/x/mod v0.5.0 // indirect
2325
golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e // indirect
2426
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect
27+
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect
2528
)

go.sum

+5-1
Original file line numberDiff line numberDiff line change
@@ -278,8 +278,9 @@ github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FI
278278
github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
279279
github.com/pelletier/go-toml v1.9.4/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c=
280280
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
281-
github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I=
282281
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
282+
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
283+
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
283284
github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI=
284285
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
285286
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
@@ -325,6 +326,8 @@ github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/
325326
github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
326327
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
327328
github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw=
329+
github.com/tj/assert v0.0.3 h1:Df/BlaZ20mq6kuai7f5z2TvPFiwC3xaWJSDQNiIS3Rk=
330+
github.com/tj/assert v0.0.3/go.mod h1:Ne6X72Q+TB1AteidzQncjw9PabbMp4PBMZ1k+vd1Pvk=
328331
github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM=
329332
github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
330333
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
@@ -764,6 +767,7 @@ gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
764767
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
765768
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
766769
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
770+
gopkg.in/yaml.v3 v3.0.0-20200605160147-a5ece683394c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
767771
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo=
768772
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
769773
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=

internal/generate.go

+2-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)