github.com/ActiveState/cli@v0.0.0-20240508170324-6801f60cd051/internal/runners/packages/rationalize.go (about)

     1  package packages
     2  
     3  import (
     4  	"errors"
     5  
     6  	"github.com/ActiveState/cli/internal/errs"
     7  	"github.com/ActiveState/cli/internal/locale"
     8  	"github.com/ActiveState/cli/internal/runbits/rationalize"
     9  	bpResp "github.com/ActiveState/cli/pkg/platform/api/buildplanner/response"
    10  	"github.com/ActiveState/cli/pkg/platform/api/buildplanner/types"
    11  	"github.com/ActiveState/cli/pkg/platform/authentication"
    12  	"github.com/ActiveState/cli/pkg/platform/runtime/buildexpression"
    13  )
    14  
    15  func rationalizeError(auth *authentication.Auth, err *error) {
    16  	var commitError *bpResp.CommitError
    17  	var requirementNotFoundErr *buildexpression.RequirementNotFoundError
    18  
    19  	switch {
    20  	case err == nil:
    21  		return
    22  
    23  	// No activestate.yaml.
    24  	case errors.Is(*err, rationalize.ErrNoProject):
    25  		*err = errs.WrapUserFacing(*err,
    26  			locale.T("err_no_project"),
    27  			errs.SetInput(),
    28  		)
    29  
    30  	// Error staging a commit during install.
    31  	case errors.As(*err, &commitError):
    32  		switch commitError.Type {
    33  		case types.NotFoundErrorType:
    34  			*err = errs.WrapUserFacing(*err,
    35  				locale.Tl("err_packages_not_found", "Could not make runtime changes because your project was not found."),
    36  				errs.SetInput(),
    37  				errs.SetTips(locale.T("tip_private_project_auth")),
    38  			)
    39  		case types.ForbiddenErrorType:
    40  			*err = errs.WrapUserFacing(*err,
    41  				locale.Tl("err_packages_forbidden", "Could not make runtime changes because you do not have permission to do so."),
    42  				errs.SetInput(),
    43  				errs.SetTips(locale.T("tip_private_project_auth")),
    44  			)
    45  		case types.HeadOnBranchMovedErrorType:
    46  			*err = errs.WrapUserFacing(*err,
    47  				locale.T("err_buildplanner_head_on_branch_moved"),
    48  				errs.SetInput(),
    49  			)
    50  		case types.NoChangeSinceLastCommitErrorType:
    51  			*err = errs.WrapUserFacing(*err,
    52  				locale.Tl("err_packages_exists", "That package is already installed."),
    53  				errs.SetInput(),
    54  			)
    55  		default:
    56  			*err = errs.WrapUserFacing(*err,
    57  				locale.Tl("err_packages_buildplanner_error", "Could not make runtime changes due to the following error: {{.V0}}", commitError.Message),
    58  				errs.SetInput(),
    59  			)
    60  		}
    61  
    62  	// Requirement not found for uninstall.
    63  	case errors.As(*err, &requirementNotFoundErr):
    64  		*err = errs.WrapUserFacing(*err,
    65  			locale.Tr("err_remove_requirement_not_found", requirementNotFoundErr.Name),
    66  			errs.SetInput(),
    67  		)
    68  	}
    69  }