[go] goimport that check and replace specific import
Now I use goimport instead of gofmt when formatting code because it checks import and do the sorting. However I have some new use cases:
- replace specific import because they were added by IDE when there are imports with similar name. Especially when your dependency depends on its own fork of your other dependency, e.g. assert.
- group import into multiple groups, e.g. protobuf, third party dependency, packages inside the project
- enforce import alias, e.g. protobuf packages should be named to
xxxpb
Should put it under gommon fmt or gommon gofmt
I should be part of #75
Found one linter from m3db https://github.com/m3db/build-tools/tree/master/linters/importorder
Also there is one checking if specific import is allowed https://github.com/fatih/faillint
Source of goimports https://github.com/golang/tools/blob/master/cmd/goimports/goimports.go
https://pkg.go.dev/golang.org/x/tools/go/ast/astutil?tab=doc#AddImport astutil contains add and remove imports, looks pretty good ... not sure if we can do something similar to goimports using that
https://github.com/cockroachdb/crlfmt/blob/master/main.go#L238 found one from cockroachdb, crlfmt
https://github.com/OpenPeeDeeP/depguard found from golint ci