Utility to fix/replace import paths in Go files recursively & pretty-print like gofmt.
$ go get github.com/semk/gofiximports
Usage of gofiximports:
-dir string
directory where the replacements are to be done (default "./")
-from string
import statement to be replaced
-indent int
all code is indented at least by this much
-rawformat
do not use a tabwriter; if set, -usespaces is ignored
-recursive
peform the replacecements recursively on the directory (to be used with -dir) (default true)
-sourcepos
emit //line directives to preserve original source positions
-stdin
read the file names from stdin where the replacements are to be done (overrides -dir)
-tabindent
use tabs for indentation independent of -usespaces (default true)
-tabwidth int
tab width (default 8)
-to string
replacement import statement
-usespaces
use spaces instead of tabs for alignment (default true)
The following example replaces all imports of "library/module"
to "repository/library/module"
recursively inside the awesome_go_project
directory. The command only modifies .go
files.
$ gofiximports -dir awesome_go_project -from "library/module" -to "repository/library/module"
NOTE: The above command will replace all the imports starting with "library/module"
.
"library/module/x"
will be changed to "repository/library/module/x"
as well.
Before fixing imports:
package main
import logger "fmt"
func main() {
logger.Println("hello world")
}
$ gofiximports -dir test -from "fmt" -to "log"
After fixing imports:
package main
import logger "log"
func main() {
logger.Println("hello world")
}
You can also pass the list of files to stdin
using pipe.
$ find ./test -name "*.go" | gofiximports -stdin -from "fmt" -to "log"