File: README.md

package info (click to toggle)
golang-github-facebook-ent 0.5.4-3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 14,284 kB
  • sloc: javascript: 349; makefile: 8
file content (60 lines) | stat: -rw-r--r-- 1,627 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# entcpkg example

An example of using `entc` (ent codegen) as package rather than an executable.

In this example, we have a file named `entc.go` under the `./ent` directory, that holds the
configuration for the codegen:

```go
// +build ignore

package main

import (
	"log"
	"strings"
	"text/template"

	"github.com/facebook/ent/entc"
	"github.com/facebook/ent/entc/gen"
)

func main() {
	// A usage for custom templates with external functions.
	// One template is defined in the option below, and the
	// second template is provided with the `Templates` field.
	opts := []entc.Option{
		entc.Funcs(template.FuncMap{"title": strings.ToTitle}),
		entc.TemplateFiles("template/static.tmpl"),
	}
	err := entc.Generate("./schema", &gen.Config{
		Header: `
			// Copyright 2019-present Facebook Inc. All rights reserved.
			// This source code is licensed under the Apache 2.0 license found
			// in the LICENSE file in the root directory of this source tree.

			// Code generated by entc, DO NOT EDIT.
		`,
		Templates: []*template.Template{
			template.Must(template.New("debug").
				Funcs(gen.Funcs).
				ParseFiles("template/debug.tmpl")),
		},
	}, opts...)
	if err != nil {
		log.Fatal("running ent codegen:", err)
	}
}
```

As you can see, the file is tagged with `// +build ignore` in order to not include it
in the `ent` package. In order to run the codegen, run the file itself (using `go run`)
or run `go generate ./ent`. The `generate.go` file holds the `go run command`:

```go
package ent

//go:generate go run entc.go
```

The `generate.go` file is preferred if you have many `generate` pragmas in your project.