mirror of
https://github.com/ent/ent.git
synced 2026-04-28 05:30:56 +03:00
entc/gen: compute default target on LoadGraph (#4311)
This commit is contained in:
27
entc/entc.go
27
entc/entc.go
@@ -37,6 +37,9 @@ func LoadGraph(schemaPath string, cfg *gen.Config) (*gen.Graph, error) {
|
|||||||
// before the schema package (`<project>/ent/schema`).
|
// before the schema package (`<project>/ent/schema`).
|
||||||
cfg.Package = path.Dir(spec.PkgPath)
|
cfg.Package = path.Dir(spec.PkgPath)
|
||||||
}
|
}
|
||||||
|
if err := defaultTarget(schemaPath, cfg); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
return gen.NewGraph(cfg, spec.Schemas...)
|
return gen.NewGraph(cfg, spec.Schemas...)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -52,14 +55,8 @@ func LoadGraph(schemaPath string, cfg *gen.Config) (*gen.Graph, error) {
|
|||||||
// IDType: &field.TypeInfo{Type: field.TypeInt},
|
// IDType: &field.TypeInfo{Type: field.TypeInt},
|
||||||
// })
|
// })
|
||||||
func Generate(schemaPath string, cfg *gen.Config, options ...Option) error {
|
func Generate(schemaPath string, cfg *gen.Config, options ...Option) error {
|
||||||
if cfg.Target == "" {
|
if err := defaultTarget(schemaPath, cfg); err != nil {
|
||||||
abs, err := filepath.Abs(schemaPath)
|
return err
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
// default target-path for codegen is one dir above
|
|
||||||
// the schema.
|
|
||||||
cfg.Target = filepath.Dir(abs)
|
|
||||||
}
|
}
|
||||||
for _, opt := range options {
|
for _, opt := range options {
|
||||||
if err := opt(cfg); err != nil {
|
if err := opt(cfg); err != nil {
|
||||||
@@ -407,3 +404,17 @@ func indirect(t reflect.Type) reflect.Type {
|
|||||||
}
|
}
|
||||||
return t
|
return t
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// defaultTarget computes and sets the default target-path for codegen (one level above schema-path).
|
||||||
|
func defaultTarget(schemaPath string, cfg *gen.Config) error {
|
||||||
|
if cfg.Target != "" {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
abs, err := filepath.Abs(schemaPath)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
// Default target-path for codegen is one dir above the schema.
|
||||||
|
cfg.Target = filepath.Dir(abs)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|||||||
@@ -51,4 +51,12 @@ func TestIncrementStartAnnotation(t *testing.T) {
|
|||||||
g, err = gen.NewGraph(c, s...)
|
g, err = gen.NewGraph(c, s...)
|
||||||
require.ErrorContains(t, err, "duplicated increment start value 4294967296 for types")
|
require.ErrorContains(t, err, "duplicated increment start value 4294967296 for types")
|
||||||
require.Nil(t, g)
|
require.Nil(t, g)
|
||||||
|
|
||||||
|
// Respects existing increment starting values loaded from file.
|
||||||
|
c.Target = t.TempDir()
|
||||||
|
is := gen.IncrementStarts{"bs": 0, "as": 1 << 32, "cs": 2 << 32}
|
||||||
|
require.NoError(t, is.WriteToDisk(c.Target))
|
||||||
|
g, err = gen.NewGraph(c, &load.Schema{Name: "A"}, &load.Schema{Name: "B"}, &load.Schema{Name: "C"})
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.Equal(t, is, g.Annotations[is.Name()])
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user