https://github.com/geekchanskiy/enum_codegen
Go enum code generator
https://github.com/geekchanskiy/enum_codegen
code-generation enum enumeration enums generated go golang
Last synced: 3 months ago
JSON representation
Go enum code generator
- Host: GitHub
- URL: https://github.com/geekchanskiy/enum_codegen
- Owner: GeekchanskiY
- License: mit
- Created: 2025-08-02T20:19:58.000Z (8 months ago)
- Default Branch: main
- Last Pushed: 2025-12-21T19:03:58.000Z (4 months ago)
- Last Synced: 2025-12-23T07:35:54.791Z (4 months ago)
- Topics: code-generation, enum, enumeration, enums, generated, go, golang
- Language: Go
- Homepage:
- Size: 37.1 KB
- Stars: 3
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Enum_codegen
Pretty enum code generator.
## Links
- [Overview](#overview)
- [Requirements](#requirements)
- [Quick Start](#quick-start)
- [Generated Code Examples](#generated-code-examples)
## Overview
Enum_codegen is a library for quick enum creation
Generates `var Tags = map[Enum]string`, `var Types = map[string]Enum`, `var Translations = map[Enum]string`.
Implements `sql.Scanner`, `driver.Valuer`, `fmt.Stringer`, `json.Marshaler` interfaces.
Forces Enum to have default Undefined value.
Generates snake_case string Enum value: `EnumValue1 -> enum_value_1`
You can override default string value, and set translation value
## Requirements
- go 1.23.0 or later
## Quick Start
1. Install enum_codegen:
```shell
go install github.com/GeekchanskiY/enum_codegen/cmd/enum_codegen
```
Before other steps make sure that go/bin is in your $PATH
2. Create a Go file with an enum declaration:
```go
package main
//go:generate enum_codegen
type Enum int
const (
// Undefined Translate="Undefined value"
Undefined Enum = iota
// EnumValue1 Value="SuperbValue" Translate="Enum 1"
EnumValue1
// EnumValue2 Your documentation here if need Translate="Enum 2" Value="MegaValue"
EnumValue2
// EnumValue3 Translate="Enum 3"
EnumValue3
// Translate="Some value Enum 4"
EnumValue4
EnumValue5
)
```
3. Run go generate:
you can specify the file to generate from explicitly
```shell
go generate package/file.go
```
or generate from every file in project. Result will not change
```shell
go generate ./...
```
## Generated code examples
[Default usage](examples/default_generation/file_Enum__gen.go)
## TODO's
- add multi-language support
- add output map naming customization (Tags, Values, Translations)
- add unit tests
- add different string value generators