
The new version of goimports works 100x faster with go modules. Also it has some new features: $ git cherry -v 6c7e314b6563 92cdcd90bf52 | fgrep imports + 5bbcdc15656ef390fab5dd6e8daf95354f7171e3 imports: redesign fixImports + ee45598d2ff288037f53f9e13ae0b1a6e2165ad5 imports: create named imports for name/path mismatches (again) + 4c53570e0460bc32468f75bf9dd71c018d03bfa9 imports: ignore globals in different packages + 1d424dbce8dd500e9e449fd3ff9d0668c09e2ae1 imports: clean up customization seam + 6a3e9aa2ab7749d72d1006ee484271b4a11f96c2 imports: fix renamed sibling imports + 5f4a60f04f23ac48e0665f257413ae3eacf339be imports: fix renamed sibling imports more + bbccd8cae4a9a47e0f978e03ff4b5df88a9fde1e imports: use go/packages, support modules + d4971274fe382404aee0e8c163af974f2bf738e6 imports: don't remove imports that conflict with globals
34 lines
520 B
Go
34 lines
520 B
Go
package goimports
|
|
|
|
import (
|
|
"bytes"
|
|
"fmt"
|
|
"io/ioutil"
|
|
|
|
"golang.org/x/tools/imports"
|
|
)
|
|
|
|
func Run(filename string) ([]byte, error) {
|
|
src, err := ioutil.ReadFile(filename)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
res, err := imports.Process(filename, src, options)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
if bytes.Equal(src, res) {
|
|
return nil, nil
|
|
}
|
|
|
|
// formatting has changed
|
|
data, err := diff(src, res, filename)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("error computing diff: %s", err)
|
|
}
|
|
|
|
return data, nil
|
|
}
|