mirror of
https://github.com/ent/ent.git
synced 2026-03-05 19:35:23 +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`).
|
||||
cfg.Package = path.Dir(spec.PkgPath)
|
||||
}
|
||||
if err := defaultTarget(schemaPath, cfg); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
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},
|
||||
// })
|
||||
func Generate(schemaPath string, cfg *gen.Config, options ...Option) error {
|
||||
if cfg.Target == "" {
|
||||
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)
|
||||
if err := defaultTarget(schemaPath, cfg); err != nil {
|
||||
return err
|
||||
}
|
||||
for _, opt := range options {
|
||||
if err := opt(cfg); err != nil {
|
||||
@@ -407,3 +404,17 @@ func indirect(t reflect.Type) reflect.Type {
|
||||
}
|
||||
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...)
|
||||
require.ErrorContains(t, err, "duplicated increment start value 4294967296 for types")
|
||||
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