53 lines
932 B
Go
53 lines
932 B
Go
package scm
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
)
|
|
|
|
type Platform int
|
|
|
|
const (
|
|
UnknownPlatform Platform = iota
|
|
NoPlatform // Explicitly disable the feature
|
|
GitHubPlatform
|
|
GitLabPlatform
|
|
AzureDevOpsPlatform
|
|
GiteaPlatform
|
|
BitbucketPlatform
|
|
// TODO: Add others.
|
|
)
|
|
|
|
func (p Platform) String() string {
|
|
return [...]string{
|
|
"unknown",
|
|
"none",
|
|
"github",
|
|
"gitlab",
|
|
"azuredevops",
|
|
"gitea",
|
|
"bitbucket",
|
|
}[p]
|
|
}
|
|
|
|
func PlatformFromString(s string) (Platform, error) {
|
|
switch strings.ToLower(s) {
|
|
case "", "unknown":
|
|
return UnknownPlatform, nil
|
|
case "none":
|
|
return NoPlatform, nil
|
|
case "github":
|
|
return GitHubPlatform, nil
|
|
case "gitlab":
|
|
return GitLabPlatform, nil
|
|
case "azuredevops":
|
|
return AzureDevOpsPlatform, nil
|
|
case "gitea":
|
|
return GiteaPlatform, nil
|
|
case "bitbucket":
|
|
return BitbucketPlatform, nil
|
|
default:
|
|
return UnknownPlatform, fmt.Errorf("invalid scm platform value: %s", s)
|
|
}
|
|
}
|