Skip to content

Commit

Permalink
chore: use go generate to generate command builders
Browse files Browse the repository at this point in the history
  • Loading branch information
rueian committed Oct 5, 2023
1 parent f10a1ee commit d2daaaa
Show file tree
Hide file tree
Showing 36 changed files with 67 additions and 38 deletions.
8 changes: 8 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -445,6 +445,14 @@ require github.com/redis/rueidis v1.0.19-go1.18
Contributions are welcome, including [issues](https://github.com/redis/rueidis/issues), [pull requests](https://github.com/redis/rueidis/pulls), and [discussions](https://github.com/redis/rueidis/discussions).
Contributions mean a lot to us and help us improve this library and the community!

### Generate command builders

Command builders are generated based on the definitions in [./hack/cmds](./hack/cmds) by running:

```sh
go generate
```

### Testing

Please use the [./dockertest.sh](./dockertest.sh) script for running test cases locally.
Expand Down
29 changes: 24 additions & 5 deletions hack/cmds/gen.go
Original file line number Diff line number Diff line change
Expand Up @@ -331,11 +331,30 @@ func (n *node) Walk(fn func(node *node)) {
}
}

func main() {
var (
inputglob = "*.json"
outputdir = "../../internal/cmds"
)

// Usages:
// 1) cd hack/cmds && go run gen.go
// 2) go run hack/cmds/gen.go internal/cmds hack/cmds/*.json
func main() {
var err error
var defs []string
var structs = map[string]map[string]goStruct{}

defs, err := filepath.Glob("*.json")
if len(os.Args) > 1 {
outputdir = os.Args[1]
}
if len(os.Args) > 2 {
defs = os.Args[2:]
if len(defs) == 1 {
defs, err = filepath.Glob(defs[0])
}
} else {
defs, err = filepath.Glob(inputglob)
}
if err != nil {
panic(err)
}
Expand Down Expand Up @@ -385,8 +404,8 @@ func main() {
}

for g, structs := range structs {
gfname := "../../internal/cmds/gen_" + g + ".go"
tfname := "../../internal/cmds/gen_" + g + "_test.go"
gfname := filepath.Join(outputdir, "gen_"+g+".go")
tfname := filepath.Join(outputdir, "gen_"+g+"_test.go")
gf, err := os.Create(gfname)
if err != nil {
panic(err)
Expand Down Expand Up @@ -439,7 +458,7 @@ func tests(f io.Writer, structs map[string]goStruct, prefix string) {
pathes = makePath(s, nil, pathes)
}

fmt.Fprintf(f, "// Code generated DO NOT EDIT\n\npackage cmds\n\n")
fmt.Fprintf(f, "// Code generated by go generate; DO NOT EDIT\n\npackage cmds\n\n")

fmt.Fprintf(f, "import \"testing\"\n\n")

Expand Down
2 changes: 1 addition & 1 deletion internal/cmds/gen_bf_test.go

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

2 changes: 1 addition & 1 deletion internal/cmds/gen_bitmap_test.go

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

2 changes: 1 addition & 1 deletion internal/cmds/gen_cf_test.go

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

2 changes: 1 addition & 1 deletion internal/cmds/gen_cluster_test.go

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

2 changes: 1 addition & 1 deletion internal/cmds/gen_cms_test.go

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

2 changes: 1 addition & 1 deletion internal/cmds/gen_connection_test.go

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

2 changes: 1 addition & 1 deletion internal/cmds/gen_gears_test.go

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

2 changes: 1 addition & 1 deletion internal/cmds/gen_generic_test.go

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

2 changes: 1 addition & 1 deletion internal/cmds/gen_geo_test.go

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

2 changes: 1 addition & 1 deletion internal/cmds/gen_graph_test.go

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

2 changes: 1 addition & 1 deletion internal/cmds/gen_hash_test.go

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

2 changes: 1 addition & 1 deletion internal/cmds/gen_hyperloglog_test.go

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

2 changes: 1 addition & 1 deletion internal/cmds/gen_inference_test.go

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

2 changes: 1 addition & 1 deletion internal/cmds/gen_json_test.go

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

2 changes: 1 addition & 1 deletion internal/cmds/gen_list_test.go

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

2 changes: 1 addition & 1 deletion internal/cmds/gen_model_test.go

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

2 changes: 1 addition & 1 deletion internal/cmds/gen_pubsub_test.go

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

2 changes: 1 addition & 1 deletion internal/cmds/gen_script_test.go

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

2 changes: 1 addition & 1 deletion internal/cmds/gen_scripting_test.go

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

2 changes: 1 addition & 1 deletion internal/cmds/gen_search_test.go

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

2 changes: 1 addition & 1 deletion internal/cmds/gen_sentinel_test.go

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

2 changes: 1 addition & 1 deletion internal/cmds/gen_server_test.go

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

2 changes: 1 addition & 1 deletion internal/cmds/gen_set_test.go

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

2 changes: 1 addition & 1 deletion internal/cmds/gen_sorted_set_test.go

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

2 changes: 1 addition & 1 deletion internal/cmds/gen_stream_test.go

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

2 changes: 1 addition & 1 deletion internal/cmds/gen_string_test.go

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

2 changes: 1 addition & 1 deletion internal/cmds/gen_suggestion_test.go

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

2 changes: 1 addition & 1 deletion internal/cmds/gen_tdigest_test.go

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

2 changes: 1 addition & 1 deletion internal/cmds/gen_tensor_test.go

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

2 changes: 1 addition & 1 deletion internal/cmds/gen_timeseries_test.go

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

2 changes: 1 addition & 1 deletion internal/cmds/gen_topk_test.go

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

2 changes: 1 addition & 1 deletion internal/cmds/gen_transactions_test.go

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

2 changes: 1 addition & 1 deletion internal/cmds/gen_triggers_and_functions_test.go

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

2 changes: 2 additions & 0 deletions rueidis.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
// Package rueidis is a fast Golang Redis RESP3 client that does auto pipelining and supports client side caching.
package rueidis

//go:generate go run hack/cmds/gen.go internal/cmds hack/cmds/*.json

import (
"context"
"crypto/tls"
Expand Down

0 comments on commit d2daaaa

Please sign in to comment.