package main import ( "fmt" "git.tek.govt.hu/dowerx/buildx-manager/buildx" "git.tek.govt.hu/dowerx/buildx-manager/config" "github.com/sanity-io/litter" ) func main() { cfg := config.GetConfig() job, err := buildx.LoadJob(cfg.File) if err != nil { panic(err) } var buildCommands []buildx.Command var tagCommands []buildx.Command for _, repo := range job.Repositories { buildCommands, tagCommands, err = buildx.RepoToCommands(&repo, job.Registries) if err != nil { panic(err) } } if cfg.Verbose { fmt.Println("config:") litter.Dump(cfg) fmt.Println("\njob loaded:") litter.Dump(job) fmt.Println("\nbuild commands:", len(buildCommands)) litter.Dump(buildCommands) fmt.Println("\ntag commands:", len(tagCommands)) litter.Dump(tagCommands) } if cfg.Dryrun { return } // build if cfg.Parallel { errors := make(chan error) // start builds for _, cmd := range buildCommands { go func() { errors <- cmd.Run() }() } // wait for builds for i := 0; i < len(buildCommands); i++ { for err := range errors { if err != nil { panic(err) } } } } else { for _, cmd := range buildCommands { err = cmd.Run() if err != nil { panic(err) } } } // tag for _, cmd := range tagCommands { err = cmd.Run() if err != nil { panic(err) } } }