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  }