internal/config/repository.go (view raw)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | package config import ( "fmt" "strings" ) type RepoType int const ( UnknownRepoType = iota GitHub ) type Repository struct { Type RepoType `toml:"" default:"github" comment:"Currently only 'github' is supported."` Owner string Repo string Revision string `toml:"-"` } func (f RepoType) String() string { switch f { case GitHub: return "github" default: return fmt.Sprintf("RepoType(%d)", f) } } func parseRepoType(name string) (RepoType, error) { switch strings.ToLower(name) { case "github": return GitHub, nil default: return UnknownRepoType, fmt.Errorf("unsupported repo type %s", name) } } func (f *RepoType) UnmarshalText(text []byte) error { var err error *f, err = parseRepoType(string(text)) return err } func (f *RepoType) MarshalText() ([]byte, error) { return []byte(f.String()), nil } |