mirror of
https://github.com/ent/ent.git
synced 2026-05-24 09:31:56 +03:00
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:
// +build ignore
package main
import (
"log"
"strings"
"text/template"
"entgo.io/ent/entc"
"entgo.io/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{}
err := entc.Generate("./schema", &gen.Config{
// Target: "./gen", If you want generated files placed under custom path
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 ent, DO NOT EDIT.
`,
Templates: []*gen.Template{
// Custom templates can be provided by entc.Extension (see below),
// or by setting templates on the gen.Config object.
//
gen.MustParse(gen.NewTemplate("static").
Funcs(template.FuncMap{"title": strings.ToTitle}).
ParseFiles("./template/t1.tmpl")), // create template files under ent/template
},
}, 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:
package ent
//go:generate go run entc.go
The generate.go file is preferred if you have many generate pragmas in your project.