Skip to content

Commit

Permalink
change to examples directory and add build tags (#194)
Browse files Browse the repository at this point in the history
  • Loading branch information
abice committed May 24, 2023
1 parent 97611fd commit f8fd3fd
Show file tree
Hide file tree
Showing 70 changed files with 229 additions and 97 deletions.
10 changes: 5 additions & 5 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ MOCKGEN=bin/mockgen
deps: $(MOCKGEN)
deps: $(GOIMPORTS)

PACKAGES='./generator' './_example'
PACKAGES='./generator' './example'

.PHONY: all
all: build fmt test example cover install
Expand All @@ -50,7 +50,7 @@ fmt:

test: gen-test generate
$(GO) test -v -race -coverprofile=coverage.out ./...
$(GO) test -v -race ./_example
$(GO) test -v -race --tags=example ./example

cover: gen-test test
$(GO) tool cover -html=coverage.out -o coverage.html
Expand All @@ -75,10 +75,10 @@ assert-no-changes:

.PHONY: generate
generate:
$(GO) generate $(PACKAGES)
$(GO) generate --tags=example $(PACKAGES)

gen-test: build
$(GO) generate $(PACKAGES)
$(GO) generate --tags=example $(PACKAGES)

install:
$(GO) install
Expand All @@ -87,7 +87,7 @@ phony: clean tc build

.PHONY: example
example:
$(GO) generate ./_example/...
$(GO) generate ./example/...

bin/goimports: go.sum
$(call goinstall,golang.org/x/tools/cmd/goimports)
Expand Down
44 changes: 26 additions & 18 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -139,26 +139,32 @@ USAGE:
go-enum [global options] [arguments...]

VERSION:
x.y.z
example

GLOBAL OPTIONS:
--file value, -f value The file(s) to generate enums. Use more than one flag for more files.
--noprefix Prevents the constants generated from having the Enum as a prefix. (default: false)
--lower Adds lowercase variants of the enum strings for lookup. (default: false)
--nocase Adds case insensitive parsing to the enumeration (forces lower flag). (default: false)
--marshal Adds text (and inherently json) marshalling functions. (default: false)
--sql Adds SQL database scan and value functions. (default: false)
--flag Adds golang flag functions. (default: false)
--prefix value Replaces the prefix with a user one.
--names Generates a 'Names() []string' function, and adds the possible enum values in the error response during parsing (default: false)
--nocamel Removes the snake_case to CamelCase name changing (default: false)
--ptr Adds a pointer method to get a pointer from const values (default: false)
--sqlnullint Adds a Null{{ENUM}} type for marshalling a nullable int value to sql (default: false)
--sqlnullstr Adds a Null{{ENUM}} type for marshalling a nullable string value to sql. If sqlnullint is specified too, it will be Null{{ENUM}}Str (default: false)
--template value, -t value Additional template file(s) to generate enums. Use more than one flag for more files. Templates will be executed in alphabetical order.
--alias value, -a value Adds or replaces aliases for a non alphanumeric value that needs to be accounted for. [Format should be "key:value,key2:value2", or specify multiple entries, or both!]
--help, -h show help (default: false)
--version, -v print the version (default: false)
--file value, -f value [ --file value, -f value ] The file(s) to generate enums. Use more than one flag for more files. [$GOFILE]
--noprefix Prevents the constants generated from having the Enum as a prefix. (default: false)
--lower Adds lowercase variants of the enum strings for lookup. (default: false)
--nocase Adds case insensitive parsing to the enumeration (forces lower flag). (default: false)
--marshal Adds text (and inherently json) marshalling functions. (default: false)
--sql Adds SQL database scan and value functions. (default: false)
--sqlint Tells the generator that a string typed enum should be stored in sql as an integer value. (default: false)
--flag Adds golang flag functions. (default: false)
--prefix value Adds a prefix with a user one. If you would like to replace the prefix, then combine this option with --noprefix.
--names Generates a 'Names() []string' function, and adds the possible enum values in the error response during parsing (default: false)
--values Generates a 'Values() []{{ENUM}}' function. (default: false)
--nocamel Removes the snake_case to CamelCase name changing (default: false)
--ptr Adds a pointer method to get a pointer from const values (default: false)
--sqlnullint Adds a Null{{ENUM}} type for marshalling a nullable int value to sql (default: false)
--sqlnullstr Adds a Null{{ENUM}} type for marshalling a nullable string value to sql. If sqlnullint is specified too, it will be Null{{ENUM}}Str (default: false)
--template value, -t value [ --template value, -t value ] Additional template file(s) to generate enums. Use more than one flag for more files. Templates will be executed in alphabetical order.
--alias value, -a value [ --alias value, -a value ] Adds or replaces aliases for a non alphanumeric value that needs to be accounted for. [Format should be "key:value,key2:value2", or specify multiple entries, or both!]
--mustparse Adds a Must version of the Parse that will panic on failure. (default: false)
--forcelower Forces a camel cased comment to generate lowercased names. (default: false)
--nocomments Removes auto generated comments. If you add your own comments, these will still be created. (default: false)
--buildtag value, -b value [ --buildtag value, -b value ] Adds build tags to a generated enum file.
--help, -h show help
--version, -v print the version
```
### Syntax
Expand All @@ -167,6 +173,8 @@ The parser looks for comments on your type defs and parse the enum declarations
The parser will look for `ENUM(` and continue to look for comma separated values until it finds a `)`. You can put values on the same line, or on multiple lines.\
If you need to have a specific value jump in the enum, you can now specify that by adding `=numericValue` to the enum declaration. Keep in mind, this resets the data for all following values. So if you specify `50` in the middle of an enum, each value after that will be `51, 52, 53...`
[Examples can be found in the example folder](./example/)
#### Comments
You can use comments inside enum that start with `//`\
Expand Down
3 changes: 0 additions & 3 deletions _example/globs/gen.go

This file was deleted.

5 changes: 4 additions & 1 deletion _example/animal.go → example/animal.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
//go:generate ../bin/go-enum -a "+:Plus,#:Sharp"
//go:build example
// +build example

//go:generate ../bin/go-enum -a "+:Plus,#:Sharp" -b example

package example

Expand Down
3 changes: 3 additions & 0 deletions _example/animal_enum.go → example/animal_enum.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions _example/animal_test.go → example/animal_test.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
//go:build example
// +build example

package example

import (
Expand Down
5 changes: 4 additions & 1 deletion _example/color.go → example/color.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
//go:generate ../bin/go-enum --marshal --lower --ptr --mustparse
//go:build example
// +build example

//go:generate ../bin/go-enum --marshal --lower --ptr --mustparse -b example

package example

Expand Down
3 changes: 3 additions & 0 deletions _example/color_enum.go → example/color_enum.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 3 additions & 2 deletions _example/color_test.go → example/color_test.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
//go:build example
// +build example

package example

import (
Expand Down Expand Up @@ -236,7 +239,6 @@ func TestColorMarshal(t *testing.T) {
}

func BenchmarkColorParse(b *testing.B) {

knownItems := []string{
ColorRedOrangeBlue.String(),
strings.ToLower(ColorRedOrangeBlue.String()),
Expand All @@ -254,5 +256,4 @@ func BenchmarkColorParse(b *testing.B) {
}
})
}

}
2 changes: 1 addition & 1 deletion _example/commented.go → example/commented.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
//go:generate ../bin/go-enum --marshal --lower
//go:generate ../bin/go-enum --marshal --lower -b example

package example

Expand Down
3 changes: 3 additions & 0 deletions _example/commented_enum.go → example/commented_enum.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions _example/commented_test.go → example/commented_test.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
//go:build example
// +build example

package example

import (
Expand Down
2 changes: 1 addition & 1 deletion _example/custom_prefix.go → example/custom_prefix.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
//go:generate ../bin/go-enum --prefix=AcmeInc
//go:generate ../bin/go-enum --prefix=AcmeInc -b example

package example

Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
//go:build example
// +build example

package example

import (
Expand Down
2 changes: 1 addition & 1 deletion _example/enum_32_bit.go → example/enum_32_bit.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
//go:generate ../bin/go-enum --names
//go:generate ../bin/go-enum --names -b example

package example

Expand Down
3 changes: 3 additions & 0 deletions _example/enum_32_bit_enum.go → example/enum_32_bit_enum.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 3 additions & 2 deletions _example/enum_32_bit_test.go → example/enum_32_bit_test.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
//go:build example
// +build example

package example

import (
Expand All @@ -7,7 +10,6 @@ import (
)

func TestEnum32Bit(t *testing.T) {

tests := map[string]struct {
input string
output Enum32bit
Expand Down Expand Up @@ -41,5 +43,4 @@ func TestEnum32Bit(t *testing.T) {
names := Enum32bitNames()
assert.Len(t, names, 12)
})

}
2 changes: 1 addition & 1 deletion _example/enum_64_bit.go → example/enum_64_bit.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
//go:generate ../bin/go-enum --names
//go:generate ../bin/go-enum --names -b example

package example

Expand Down
3 changes: 3 additions & 0 deletions _example/enum_64_bit_enum.go → example/enum_64_bit_enum.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 3 additions & 2 deletions _example/enum_64_bit_test.go → example/enum_64_bit_test.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
//go:build example
// +build example

package example

import (
Expand All @@ -7,7 +10,6 @@ import (
)

func TestEnum64Bit(t *testing.T) {

tests := map[string]struct {
input string
output Enum64bit
Expand Down Expand Up @@ -41,5 +43,4 @@ func TestEnum64Bit(t *testing.T) {
names := Enum64bitNames()
assert.Len(t, names, 16)
})

}
2 changes: 1 addition & 1 deletion _example/example.go → example/example.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
//go:generate ../bin/go-enum --marshal --nocase --flag --names --values
//go:generate ../bin/go-enum --marshal --nocase --flag --names --values -b example

package example

Expand Down
3 changes: 3 additions & 0 deletions _example/example_enum.go → example/example_enum.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 3 additions & 5 deletions _example/example_test.go → example/example_test.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
//go:build example
// +build example

package example

import (
Expand Down Expand Up @@ -195,7 +198,6 @@ func TestNoZeroValues(t *testing.T) {

err = json.Unmarshal([]byte(`{"nz":"pppps"}`), &val)
assert.EqualError(tt, err, "pppps is not a valid NoZeros, try [start, middle, end, ps, pps, ppps]")

})

for _, name := range NoZerosNames() {
Expand All @@ -215,14 +217,11 @@ func TestNoZeroValues(t *testing.T) {
require.Equal(tt, nz.Type(), "NoZeros")
require.Equal(tt, NoZeros(0), nz.Get(), "Unset value should be default")
require.NoError(tt, nz.Set(name), "failed setting flag value")

})

}
}

func BenchmarkMakeParse(b *testing.B) {

knownItems := map[string]struct {
input string
output Make
Expand Down Expand Up @@ -272,5 +271,4 @@ func BenchmarkMakeParse(b *testing.B) {
}
})
}

}
2 changes: 1 addition & 1 deletion _example/force_lower.go → example/force_lower.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
//go:generate ../bin/go-enum --forcelower
//go:generate ../bin/go-enum --forcelower -b example

package example

Expand Down
3 changes: 3 additions & 0 deletions _example/force_lower_enum.go → example/force_lower_enum.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 3 additions & 2 deletions _example/force_lower_test.go → example/force_lower_test.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
//go:build example
// +build example

package example

import (
Expand All @@ -7,7 +10,6 @@ import (
)

func TestForceLowerString(t *testing.T) {

tests := map[string]struct {
input string
output ForceLowerType
Expand Down Expand Up @@ -36,6 +38,5 @@ func TestForceLowerString(t *testing.T) {
assert.Equal(t, "ForceLowerType(99)", ForceLowerType(99).String())
_, err := ParseForceLowerType("-1")
assert.Error(t, err)

})
}
6 changes: 6 additions & 0 deletions example/globs/gen.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
//go:build example
// +build example

//go:generate ../../bin/go-enum -f=*.go -b example

package globs
Loading

0 comments on commit f8fd3fd

Please sign in to comment.