Skip to content

Commit

Permalink
improve some error propegation
Browse files Browse the repository at this point in the history
Signed-off-by: Tony Worm <tony@hofstadter.io>
  • Loading branch information
verdverm committed Dec 27, 2021
1 parent 77ab80c commit 49b51de
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 11 deletions.
31 changes: 21 additions & 10 deletions lib/gen/loadcue.go
Expand Up @@ -43,20 +43,24 @@ func (G *Generator) LoadCue() (errs []error) {
errs = append(errs, err)
}

if err := G.loadOut(); err != nil {
errs = append(errs, err)
if serr := G.loadOut(); serr != nil {
errs = append(errs, serr...)
}

if err := G.loadPackageName(); err != nil {
errs = append(errs, err)
}

// Load Subgens

// finalize load timing stats
cueDecodeTime := time.Now()
G.Stats.CueLoadingTime = cueDecodeTime.Sub(start)

if errs != nil {
return errs
}

// Load Subgens

// Initialize Generator
errsI := G.Initialize()
if len(errsI) != 0 {
Expand Down Expand Up @@ -173,26 +177,27 @@ func (G *Generator) loadVal() error {
return nil
}

func (G *Generator) loadOut() error {
func (G *Generator) loadOut() []error {
val := G.CueValue.LookupPath(cue.ParsePath("Out"))
if val.Err() != nil {
return val.Err()
return []error{val.Err()}
}

Out := make([]*File, 0)
err := val.Decode(&Out)
if err != nil {
return err
return []error{err}
}

// need this extra work to load In into a cue.Value
L, err := val.List()
if err != nil {
return err
return []error{err}
}

G.Out = make([]*File, 0)
i := 0
allErrs := []error{}
for L.Next() {
v := L.Value()
in := v.LookupPath(cue.ParsePath("In"))
Expand All @@ -204,12 +209,14 @@ func (G *Generator) loadOut() error {

// check template fields (See TODO in schema/gen/file.cue)
if elem.TemplateContent == "" && elem.TemplatePath == "" {
err := fmt.Errorf("In %q, only one of TemplateContent or TemplatePath must be set, both are empty")
err := fmt.Errorf("In %s.%d (%s), only one of TemplateContent or TemplatePath must be set, both are empty", G.Name, i, elem.Filepath)
elem.Errors = append(elem.Errors, err)
allErrs = append(allErrs, err)
}
if elem.TemplateContent != "" && elem.TemplatePath != "" {
err := fmt.Errorf("In %q, only one of TemplateContent or TemplatePath must be set, both are set")
err := fmt.Errorf("In %s.%d (%s), only one of TemplateContent or TemplatePath must be set, both are set", G.Name, i, elem.Filepath)
elem.Errors = append(elem.Errors, err)
allErrs = append(allErrs, err)
}

// manage In value
Expand All @@ -232,6 +239,10 @@ func (G *Generator) loadOut() error {
i++
}

if len(allErrs) > 0 {
return allErrs
}

return nil
}

Expand Down
2 changes: 1 addition & 1 deletion lib/gen/runtime.go
Expand Up @@ -168,7 +168,7 @@ func (R *Runtime) LoadGenerators() []error {
// Load the Generator!
errsL := G.LoadCue()
if len(errsL) != 0 {
fmt.Println(" Load Error:", errsL)
fmt.Println("Load Error:")
errs = append(errs, errsL...)
continue
}
Expand Down

0 comments on commit 49b51de

Please sign in to comment.