2025-06-15 18:10:04 +08:00

113 lines
2.5 KiB
Go

package application
import (
"bytes"
"fmt"
"slices"
"strings"
)
const (
// 源码类型的应用, 需要填写代码仓库信息
TYPE_SOURCE_CODE TYPE = 0
// 镜像类型的应用, 需要添加镜像信息
TYPE_CONTAINER_IMAGE TYPE = 1
// 其他类型
TYPE_OTHER TYPE = 15
)
// Enum value maps for Type.
var (
TYPE_NAME = map[TYPE]string{
TYPE_SOURCE_CODE: "SOURCE_CODE",
TYPE_CONTAINER_IMAGE: "CONTAINER_IMAGE",
TYPE_OTHER: "OTHER",
}
TYPE_VALUE = map[string]TYPE{
"SOURCE_CODE": TYPE_SOURCE_CODE,
"CONTAINER_IMAGE": TYPE_CONTAINER_IMAGE,
"OTHER": TYPE_OTHER,
}
)
// ParseTypeFromString Parse Type from string
func ParseTypeFromString(str string) (TYPE, error) {
key := strings.Trim(string(str), `"`)
v, ok := TYPE_VALUE[strings.ToUpper(key)]
if !ok {
return 0, fmt.Errorf("unknown Type: %s", str)
}
return TYPE(v), nil
}
type TYPE int32
func (t TYPE) String() string {
if name, ok := TYPE_NAME[t]; ok {
return name
}
return fmt.Sprintf("TYPE(%d)", t)
}
// Equal type compare
func (t TYPE) Equal(target TYPE) bool {
return t == target
}
// IsIn todo
func (t TYPE) IsIn(targets ...TYPE) bool {
return slices.ContainsFunc(targets, t.Equal)
}
// MarshalJSON todo
func (t TYPE) MarshalJSON() ([]byte, error) {
b := bytes.NewBufferString(`"`)
b.WriteString(strings.ToUpper(t.String()))
b.WriteString(`"`)
return b.Bytes(), nil
}
// UnmarshalJSON todo
func (t *TYPE) UnmarshalJSON(b []byte) error {
ins, err := ParseTypeFromString(string(b))
if err != nil {
return err
}
*t = ins
return nil
}
// SCM_TYPE 源码仓库类型
type SCM_PROVIDER string
const (
// gitlab
SCM_PROVIDER_GITLAB SCM_PROVIDER = "gitlab"
// github
SCM_PROVIDER_GITHUB SCM_PROVIDER = "github"
// bitbucket
SCM_PROVIDER_BITBUCKET SCM_PROVIDER = "bitbucket"
)
type LANGUAGE string
const (
LANGUAGE_JAVA LANGUAGE = "java"
LANGUAGE_JAVASCRIPT LANGUAGE = "javascript"
LANGUAGE_GOLANG LANGUAGE = "golang"
LANGUAGE_PYTHON LANGUAGE = "python"
LANGUAGE_PHP LANGUAGE = "php"
LANGUAGE_C_SHARP LANGUAGE = "csharp"
LANGUAGE_C LANGUAGE = "c"
LANGUAGE_C_PLUS_PLUS LANGUAGE = "cpp"
LANGUAGE_SWIFT LANGUAGE = "swift"
LANGUAGE_OBJECT_C LANGUAGE = "objectivec"
LANGUAGE_RUST LANGUAGE = "rust"
LANGUAGE_RUBY LANGUAGE = "ruby"
LANGUAGE_DART LANGUAGE = "dart"
LANGUAGE_KOTLIN LANGUAGE = "kotlin"
LANGUAGE_SHELL LANGUAGE = "shell"
LANGUAGE_POWER_SHELL LANGUAGE = "powershell"
)