4
0

scm.go 932 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. package scm
  2. import (
  3. "fmt"
  4. "strings"
  5. )
  6. type Platform int
  7. const (
  8. UnknownPlatform Platform = iota
  9. NoPlatform // Explicitly disable the feature
  10. GitHubPlatform
  11. GitLabPlatform
  12. AzureDevOpsPlatform
  13. GiteaPlatform
  14. BitbucketPlatform
  15. // TODO: Add others.
  16. )
  17. func (p Platform) String() string {
  18. return [...]string{
  19. "unknown",
  20. "none",
  21. "github",
  22. "gitlab",
  23. "azuredevops",
  24. "gitea",
  25. "bitbucket",
  26. }[p]
  27. }
  28. func PlatformFromString(s string) (Platform, error) {
  29. switch strings.ToLower(s) {
  30. case "", "unknown":
  31. return UnknownPlatform, nil
  32. case "none":
  33. return NoPlatform, nil
  34. case "github":
  35. return GitHubPlatform, nil
  36. case "gitlab":
  37. return GitLabPlatform, nil
  38. case "azuredevops":
  39. return AzureDevOpsPlatform, nil
  40. case "gitea":
  41. return GiteaPlatform, nil
  42. case "bitbucket":
  43. return BitbucketPlatform, nil
  44. default:
  45. return UnknownPlatform, fmt.Errorf("invalid scm platform value: %s", s)
  46. }
  47. }