github.com/ActiveState/cli@v0.0.0-20240508170324-6801f60cd051/internal/runners/eval/rationalize.go (about) 1 package eval 2 3 import ( 4 "errors" 5 "strings" 6 7 "github.com/ActiveState/cli/internal/errs" 8 "github.com/ActiveState/cli/internal/locale" 9 "github.com/ActiveState/cli/internal/runbits/rationalize" 10 bpResp "github.com/ActiveState/cli/pkg/platform/api/buildplanner/response" 11 "github.com/ActiveState/cli/pkg/platform/model/buildplanner" 12 ) 13 14 func rationalizeError(rerr *error) { 15 if rerr == nil { 16 return 17 } 18 19 var planningError *bpResp.BuildPlannerError 20 var failedArtifactsError buildplanner.ErrFailedArtifacts 21 22 switch { 23 case errors.Is(*rerr, rationalize.ErrNotAuthenticated): 24 *rerr = errs.WrapUserFacing(*rerr, 25 locale.T("err_init_authenticated"), 26 errs.SetInput(), 27 ) 28 29 case errors.Is(*rerr, rationalize.ErrNoProject): 30 *rerr = errs.WrapUserFacing(*rerr, 31 locale.Tr("err_no_project"), 32 errs.SetInput()) 33 34 case errors.As(*rerr, &planningError): 35 // Forward API error to user. 36 *rerr = errs.WrapUserFacing(*rerr, planningError.Error()) 37 38 case errors.As(*rerr, &failedArtifactsError): 39 var artfErrs []string 40 for _, artf := range failedArtifactsError.Artifacts { 41 artfErrs = append(artfErrs, locale.Tr("err_build_artifact_failed", artf.DisplayName, strings.Join(artf.Errors, "\n"), artf.LogURL)) 42 } 43 *rerr = errs.WrapUserFacing(*rerr, locale.Tr("err_build_artifacts_failed", strings.Join(artfErrs, "\n"))) 44 } 45 }