drone/gitrpc/enum/merge.go
2023-05-17 21:56:23 +02:00

61 lines
1.5 KiB
Go

// Copyright 2022 Harness Inc. All rights reserved.
// Use of this source code is governed by the Polyform Free Trial License
// that can be found in the LICENSE.md file for this repository.
package enum
import "github.com/harness/gitness/gitrpc/rpc"
// MergeMethod represents the approach to merge commits into base branch.
type MergeMethod string
const (
// MergeMethodMerge create merge commit.
MergeMethodMerge MergeMethod = "merge"
// MergeMethodSquash squash commits into single commit before merging.
MergeMethodSquash MergeMethod = "squash"
// MergeMethodRebase rebase before merging.
MergeMethodRebase MergeMethod = "rebase"
)
var MergeMethods = []MergeMethod{
MergeMethodMerge,
MergeMethodSquash,
MergeMethodRebase,
}
func MergeMethodFromRPC(t rpc.MergeRequest_MergeMethod) MergeMethod {
switch t {
case rpc.MergeRequest_merge:
return MergeMethodMerge
case rpc.MergeRequest_squash:
return MergeMethodSquash
case rpc.MergeRequest_rebase:
return MergeMethodRebase
default:
return MergeMethodMerge
}
}
func (m MergeMethod) ToRPC() rpc.MergeRequest_MergeMethod {
switch m {
case MergeMethodMerge:
return rpc.MergeRequest_merge
case MergeMethodSquash:
return rpc.MergeRequest_squash
case MergeMethodRebase:
return rpc.MergeRequest_rebase
default:
return rpc.MergeRequest_merge
}
}
func (m MergeMethod) Sanitize() (MergeMethod, bool) {
switch m {
case MergeMethodMerge, MergeMethodSquash, MergeMethodRebase:
return m, true
default:
return MergeMethodMerge, false
}
}