func init() { conf = config.NewConfig() conf.SetLogLevel("info") // use no authentication for test conf.GOCDUser = "" conf.GOCDPassword = "" server = NewServerConfig(conf.GOCDHost, conf.GOCDPort, conf.GOCDUser, conf.GOCDPassword, conf.GOCDTimeout) buf := bytes.NewBuffer(nil) f, _ := os.Open("./test.json") io.Copy(buf, f) f.Close() gocdPipelineConfig = buf.Bytes() }
func main() { cli.VersionFlag = cli.BoolFlag{ Name: "print-version, V", Usage: "print only the version", } app := cli.NewApp() app.Name = "Rhobot" app.Usage = "Rhobot is a database development tool that uses DevOps best practices." app.Version = Version app.EnableBashCompletion = true conf := config.NewConfig() gocdServer := gocd.NewServerConfig(conf.GOCDHost, conf.GOCDPort, conf.GOCDUser, conf.GOCDPassword, conf.GOCDTimeout) logLevelFlag := cli.StringFlag{ Name: "loglevel, lvl", Value: "", Usage: "sets the log level for Rhobot", } gocdHostFlag := cli.StringFlag{ Name: "host", Value: "", Usage: "host of the GoCD server", } reportFileFlag := cli.StringFlag{ Name: "report", Value: "", Usage: "path to the healthcheck report", } dburiFlag := cli.StringFlag{ Name: "dburi", Value: "", Usage: "database uri postgres://user:password@host:port/database", } emailListFlag := cli.StringFlag{ Name: "email", Value: "", Usage: "yaml file containing email distribution list", } schemaFlag := cli.StringFlag{ Name: "schema", Value: "", Usage: "which schema the healthchecks should be put into", } tableFlag := cli.StringFlag{ Name: "table", Value: "", Usage: "which table the healthchecks should be put into", } app.Flags = []cli.Flag{logLevelFlag} app.Commands = []cli.Command{ { Name: "healthchecks", Usage: "HEALTHCHECK_FILE " + "[--dburi DATABASE_URI] " + "[--report REPORT_FILE] [--email DISTRIBUTION_FILE]" + "[--schema SCHEMA] [--table TABLE]", Flags: []cli.Flag{ reportFileFlag, dburiFlag, emailListFlag, schemaFlag, tableFlag, }, Action: func(c *cli.Context) { updateLogLevel(c, conf) // variables to be populated by cli args var healthcheckPath string var reportPath string var emailListPath string var schema string var table string if c.Args().Get(0) != "" { healthcheckPath = c.Args().Get(0) } else { log.Error("You must provide the path to the healthcheck file.") return } log.Info("Running health checks from ", healthcheckPath) if c.String("dburi") != "" { conf.SetDBURI(c.String("dburi")) } log.Debug("DB_URI: ", conf.DBURI()) if c.String("report") != "" { reportPath = c.String("report") log.Infof("Generating report at %v", reportPath) } if c.String("email") != "" { emailListPath = c.String("email") log.Infof("Emailing report to %v", emailListPath) } if c.String("schema") != "" && c.String("table") != "" { schema = c.String("schema") table = c.String("table") log.Infof("Saving healthchecks to %v.%v", schema, table) } healthcheckRunner(conf, healthcheckPath, reportPath, emailListPath, schema, table) log.Info("Success!") }, }, { Name: "pipeline", Aliases: []string{}, Usage: "Interact with GoCD pipeline", Subcommands: []cli.Command{ { Name: "push", Usage: "PATH [PIPELINE_GROUP]", Flags: []cli.Flag{ gocdHostFlag, }, Action: func(c *cli.Context) { updateLogLevel(c, conf) updateGOCDHost(c, conf, gocdServer) if len(c.Args()) > 0 { path := c.Args()[0] group := c.Args().Get(1) log.Infof("Pushing config from %v to pipeline group %v...", path, group) if err := gocd.Push(gocdServer, path, group); err != nil { log.Fatal("Failed to push pipeline config: ", err) } log.Info("Success!") } else { log.Fatal("A path to the pipeline config to push is required.") } }, }, { Name: "pull", Usage: "PATH", Flags: []cli.Flag{ gocdHostFlag, }, Action: func(c *cli.Context) { updateLogLevel(c, conf) updateGOCDHost(c, conf, gocdServer) if len(c.Args()) > 0 { path := c.Args()[0] log.Infof("Pulling config from %v to %v...", gocdServer.URL(), path) if err := gocd.Pull(gocdServer, path); err != nil { log.Fatal("Failed to pull pipeline config: ", err) } log.Info("Success!") } else { log.Fatal("A path to pull the pipeline config to is required.") } }, }, { Name: "clone", Usage: "PIPELINE_NAME PATH", Flags: []cli.Flag{ gocdHostFlag, }, Action: func(c *cli.Context) { updateLogLevel(c, conf) updateGOCDHost(c, conf, gocdServer) if len(c.Args()) > 1 { name := c.Args()[0] path := c.Args()[1] log.Infof("Cloning pipeline %v to %v...", name, path) if _, err := gocd.Clone(gocdServer, path, name); err != nil { log.Fatal("Failed to clone pipeline config: ", err) } log.Info("Success!") } else { log.Fatal("A pipeline name and a path to clone to are required.") } }, }, }, }, } app.Run(os.Args) }
func init() { conf = config.NewConfig() conf.SetLogLevel("debug") }
func init() { conf = config.NewConfig() conf.SetLogLevel("info") }
func init() { conf = config.NewConfig() }