Skip to content

A goimports client as well as a parser of its result

License

Notifications You must be signed in to change notification settings

nakabonne/fmtdiff

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

fmtdiff

Go Doc codecov

A goimports client as well as a parser that parses the diff between an original file and formatted one. You can use it as a wrapper for golang.org/x/tools/imports.

goimports not only fixes imports, but also formats your code in the same style as gofmt, so fmtdiff means importsdiff substantially.

Installation

go get github.com/nakabonne/fmtdiff

Usage Example

package main	

import "github.com/nakabonne/fmtdiff"

func main() {	
	fileDiff, _ := fmtdiff.Process("/path/to/foo.go", &fmtdiff.Options{
		LocalPrefixes:  []string{"example.com/foo/bar"},
                IgnoreComments: true,
                FormatOnly:     true,
	})	
}

Combined with nakabonne/modpath, and then you can detect the local prefix from the go.mod.

import (
	"github.com/nakabonne/modpath"
	
	"github.com/nakabonne/fmtdiff"
)

func main() {
	prefix, _ := modpath.Run("/path/to/foo/bar")
	fileDiff, _ := fmtdiff.Process("/path/to/foo.go", &fmtdiff.Options{
		LocalPrefixes:  []string{prefix},
	})	
}

Thanks

Thanks to sourcegraph/go-diff for cool diff parser.