struct2interface is a CLI utility to extract an interface from a Golang struct
go get github.com/reflog/struct2interface
struct2interface --help
Usage:
struct2interface [flags]
Flags:
-f, --folder string Path to the package in which the struct resides
-h, --help help for struct2interface
-i, --interface string Name of the output interface
-o, --output string Path to output file (will be overwritten)
-p, --package string Name of the package in which the struct resides
-s, --struct string Name of the input struct
-t, --template string Path to a Go template file to use for writing the resulting interface
struct2interface -f "/home/reflog/go/src/github.com/mattermost/mattermost-server/app" -o "/home/reflog/go/src/github.com/mattermost/mattermost-server/
app/app_iface.go" -p "app" -s "App" -i "AppIface"
Before writing this, I tried the following projects, but encountered issues:
Interfacer - incredibly slow, dumps odd messages to stderr and writes fully qualified package name instead of localized one, i.e. *github.com/mattermost/mattermost-server/v5/model.Config
instead of *model.Config
Ifacemaker - created duplicate imports (in my case "html/template"
and "text/template"
)
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
Please make sure to update tests as appropriate.