Metago
GitHub
01 · Write a Metago template<br>{{/* stringer.metago */}}<br>{{ define "stringer" }}<br>func (v {{ name . }}) String() string {<br>switch v {<br>{{- range .Values }}<br>case {{ .Name }}:<br>return {{ quote .Name }}<br>{{- end }}<br>default:<br>return "unknown"<br>{{ end }}
02 · Add the directive to your type<br>// status.go<br>package example
//mgo:gen stringer<br>type Status int
const (<br>StatusPending Status = iota<br>StatusRunning<br>StatusDone
03 · Run Metago to generate Go<br>// meta.go<br>// Code generated by metago; DO NOT EDIT.
package example
func (v Status) String() string {<br>switch v {<br>case StatusPending:<br>return "StatusPending"<br>case StatusRunning:<br>return "StatusRunning"<br>case StatusDone:<br>return "StatusDone"<br>default:<br>return "unknown"
Get started<br>Install Metago with Go:<br>go install github.com/guillemus/metago@latest
Copy<br>Ready-to-use binaries are also available on GitHub Releases.<br>With Go 1.24 or later, pin Metago as a project tool and call it from a single go:generate directive:<br>go get -tool github.com/guillemus/metago@latest//go:generate go tool metago .Then run go generate ./.... Metago scans the supplied root recursively.<br>Run an installed copy directly from the root of your project with:<br>metagoOptionally, install the Metago skill to help your coding agent start generating templates:<br>npx skills add guillemus/metago --skill metago
Copy