Skip to content

Utility to fix/replace import paths in Go files recursively & pretty-print like gofmt

License

Notifications You must be signed in to change notification settings

semk/gofiximports

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

gofiximports

Utility to fix/replace import paths in Go files recursively & pretty-print like gofmt.

Installation

$ go get github.com/semk/gofiximports

Usage

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)

Examples

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" 

About

Utility to fix/replace import paths in Go files recursively & pretty-print like gofmt

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages