package main import ( "fmt" ) type Version interface { String() string } type VersionProvider interface { GetVersion() (Version, error) } func main() { v := GitHubVersionProvider{Repository: "OpenSMTPD/OpenSMTPD"} latest, err := v.GetVersion() if err != nil { return } fmt.Println(latest.String()) yv := YamlVersionProvider{ File: "./versions.yml", Key: "opensmtpd_version", } current, err := yv.GetVersion() if err != nil { return } fmt.Println(current.String()) }