@@ -36,11 +36,18 @@ An enum generator for Go that creates type-safe enumerations with useful methods
3636
3737## Requirements
3838
39- - Go 1.23.0 or later
39+ - Go 1.24.0 or later (recommended for new tool installation method)
40+ - Go 1.23.0 or later (minimum for legacy installation)
4041
4142## Quick Start
4243
43- 1 . Install go-enum:
44+ 1 . Install go-enum as a project tool (Go 1.24+):
45+
46+ ``` shell
47+ go get -tool github.com/abice/go-enum@latest
48+ ```
49+
50+ Or for older Go versions:
4451
4552 ``` shell
4653 go install github.com/abice/go-enum@latest
@@ -58,6 +65,10 @@ An enum generator for Go that creates type-safe enumerations with useful methods
58653 . Generate the enum:
5966
6067 ``` shell
68+ # Go 1.24+ (recommended)
69+ go tool go-enum -f your_file.go
70+
71+ # Or for older Go versions
6172 go-enum -f your_file.go
6273 ```
6374
@@ -189,7 +200,27 @@ docker run -w /app -v $(pwd):/app abice/go-enum:latest
189200
190201## Installation
191202
192- ### Using go install (recommended)
203+ ### Using go get -tool (Go 1.24+, recommended)
204+
205+ Install go-enum as a project tool with dependency tracking in `go.mod`:
206+
207+ ```shell
208+ go get -tool github.com/abice/go-enum@latest
209+ ```
210+
211+ This will add a tool dependency to your `go.mod` file:
212+
213+ ```mod
214+ tool github.com/abice/go-enum
215+ ```
216+
217+ You can then run the tool using:
218+
219+ ```shell
220+ go tool go-enum [options]
221+ ```
222+
223+ ### Using go install (older Go versions)
193224
194225Install the latest version directly from source:
195226
@@ -226,14 +257,25 @@ docker run -w /app -v $(pwd):/app abice/go-enum:v0.9.0
226257
227258### Using go generate
228259
229- 1. Add a go:generate line to your file like so... `// go:generate go-enum --marshal`
230- 1. Run go generate like so `go generate ./...`
260+ For Go 1.24+ with tool dependency:
261+
262+ 1. Install the tool dependency: `go get -tool github.com/abice/go-enum@latest`
263+ 1. Add a go:generate line to your file: `// go:generate go tool go-enum --marshal`
264+ 1. Run go generate: `go generate ./...`
265+ 1. Enjoy your newly created Enumeration!
266+
267+ For older Go versions:
268+
269+ 1. Add a go:generate line to your file: `// go:generate go-enum --marshal`
270+ 1. Run go generate: `go generate ./...`
2312711. Enjoy your newly created Enumeration!
232272
233273### Using Makefile
234274
235275If you prefer makefile stuff, you can always do something like this:
236276
277+ For Go 1.24+ with tool dependency:
278+
237279```Makefile
238280STANDARD_ENUMS = ./example/animal_enum.go \
239281 ./example/color_enum.go
@@ -245,8 +287,15 @@ $(NULLABLE_ENUMS): GO_ENUM_FLAGS=--nocase --marshal --names --sqlnullint --ptr
245287
246288enums: $(STANDARD_ENUMS) $(NULLABLE_ENUMS)
247289
248- # The generator statement for go enum files. Files that invalidate the
249- # enum file: source file, the binary itself, and this file (in case you want to generate with different flags)
290+ # The generator statement for go enum files using go tool (Go 1.24+)
291+ %_enum.go: %.go Makefile
292+ go tool go-enum -f $*.go $(GO_ENUM_FLAGS)
293+ ```
294+
295+ For older Go versions:
296+
297+ ```Makefile
298+ # The generator statement for go enum files using go-enum binary
250299%_enum.go: %.go $(GOENUM) Makefile
251300 $(GOENUM) -f $*.go $(GO_ENUM_FLAGS)
252301```
0 commit comments