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

     1  package pull
     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/pkg/platform/api/buildplanner/response"
     9  	"github.com/ActiveState/cli/pkg/platform/api/buildplanner/types"
    10  )
    11  
    12  func rationalizeError(err *error) {
    13  	if err == nil {
    14  		return
    15  	}
    16  
    17  	var mergeCommitErr *response.MergedCommitError
    18  	var noCommonParentErr *errNoCommonParent
    19  
    20  	switch {
    21  	case errors.As(*err, &mergeCommitErr):
    22  		switch mergeCommitErr.Type {
    23  		// Custom target does not have a compatible history
    24  		case types.NoCommonBaseFoundType:
    25  			*err = errs.WrapUserFacing(*err,
    26  				locale.Tl("err_pull_no_common_base",
    27  					"Could not merge, no common base found between local and remote commits",
    28  				),
    29  				errs.SetInput(),
    30  			)
    31  		case types.NotFoundErrorType, types.ForbiddenErrorType:
    32  			*err = errs.WrapUserFacing(*err,
    33  				locale.Tl("err_pull_not_found",
    34  					mergeCommitErr.Error(),
    35  				),
    36  				errs.SetInput(),
    37  				errs.SetTips(
    38  					locale.T("tip_private_project_auth"),
    39  				),
    40  			)
    41  		default:
    42  			*err = errs.WrapUserFacing(*err,
    43  				locale.Tl("err_pull_no_common_base",
    44  					"Could not merge, recieved error message: {{.V0}}",
    45  					mergeCommitErr.Error(),
    46  				),
    47  			)
    48  		}
    49  	case errors.As(*err, &noCommonParentErr):
    50  		*err = errs.WrapUserFacing(*err,
    51  			locale.Tr("err_pull_no_common_parent",
    52  				noCommonParentErr.localCommitID.String(),
    53  				noCommonParentErr.remoteCommitID.String(),
    54  			),
    55  			errs.SetInput(),
    56  		)
    57  	}
    58  }