autoupdate/main.go

66 lines
1.2 KiB
Go

package main
import (
"log"
"os"
"github.com/urfave/cli"
"gopkg.in/yaml.v2"
)
func main() {
app := &cli.App{
Name: "autoupdate",
ArgsUsage: "[CONFIG_FILE] [VERSIONS_FILE]",
Action: func(c *cli.Context) error {
if c.NArg() != 2 {
cli.ShowAppHelp(c)
}
var sources map[string]struct {
Type string `yaml:"type"`
Args map[string]interface{} `yaml:"args"`
}
conf, err := os.Open(c.Args().Get(0))
if err != nil {
log.Fatal(err)
return err
}
defer conf.Close()
versions, err := os.Create(c.Args().Get(1))
if err != nil {
log.Fatal(err)
return err
}
defer versions.Close()
err = yaml.NewDecoder(conf).Decode(&sources)
if err != nil {
log.Fatal(err)
return err
}
new_versions := make(map[string]string, len(sources))
for name, source := range sources {
provider, err := GetProvider(source.Type, source.Args)
if err != nil {
log.Fatal(err)
return err
}
v, err := provider.GetVersion()
if err != nil {
log.Fatal(err)
return err
}
new_versions[name] = v.String()
}
yaml.NewEncoder(versions).Encode(new_versions)
return nil
},
}
app.Run(os.Args)
}