26 lines
552 B
Go
26 lines
552 B
Go
package main
|
|
|
|
import "fmt"
|
|
|
|
type Version interface {
|
|
String() string
|
|
}
|
|
|
|
type VersionProvider interface {
|
|
GetVersion() (Version, error)
|
|
}
|
|
|
|
func GetProvider(p string, args map[string]interface{}) (VersionProvider, error) {
|
|
switch p {
|
|
case "github":
|
|
drafts, _ := args["drafts"].(bool)
|
|
prereleases, _ := args["prereleases"].(bool)
|
|
return &GitHubVersionProvider{
|
|
Repository: args["repository"].(string),
|
|
IncludeDrafts: drafts,
|
|
IncludePrereleases: prereleases,
|
|
}, nil
|
|
}
|
|
return nil, fmt.Errorf("unknown provider: %s", p)
|
|
}
|