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 }