scm.go 778 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  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. // TODO: Add others.
  14. )
  15. func (p Platform) String() string {
  16. return [...]string{
  17. "unknown",
  18. "none",
  19. "github",
  20. "gitlab",
  21. "azuredevops",
  22. }[p]
  23. }
  24. func PlatformFromString(s string) (Platform, error) {
  25. switch strings.ToLower(s) {
  26. case "", "unknown":
  27. return UnknownPlatform, nil
  28. case "none":
  29. return NoPlatform, nil
  30. case "github":
  31. return GitHubPlatform, nil
  32. case "gitlab":
  33. return GitLabPlatform, nil
  34. case "azuredevops":
  35. return AzureDevOpsPlatform, nil
  36. default:
  37. return UnknownPlatform, fmt.Errorf("invalid scm platform value: %s", s)
  38. }
  39. }