// GetConfig parses and returns the wercker.yml file. func (p *Runner) GetConfig() (*core.Config, string, error) { // Return a []byte of the yaml we find or create. var werckerYaml []byte var err error if p.options.WerckerYml != "" { werckerYaml, err = ioutil.ReadFile(p.options.WerckerYml) if err != nil { return nil, "", err } } else { werckerYaml, err = core.ReadWerckerYaml([]string{p.ProjectDir()}, false) if err != nil { return nil, "", err } } // Parse that bad boy. rawConfig, err := core.ConfigFromYaml(werckerYaml) if err != nil { return nil, "", err } // Add some options to the global config if rawConfig.SourceDir != "" { p.options.SourceDir = rawConfig.SourceDir } // Only use the ignore file from the config when it is not empty and not defined as a command-line option if rawConfig.IgnoreFile != "" && p.options.DefaultsUsed.IgnoreFile { p.options.IgnoreFile = rawConfig.IgnoreFile } MaxCommandTimeout := 60 // minutes MaxNoResponseTimeout := 60 // minutes if rawConfig.CommandTimeout > 0 { commandTimeout := util.MinInt(rawConfig.CommandTimeout, MaxCommandTimeout) p.options.CommandTimeout = commandTimeout * 60 * 1000 // convert to milliseconds p.logger.Debugln("CommandTimeout set in config, new CommandTimeout:", commandTimeout) } if rawConfig.NoResponseTimeout > 0 { noResponseTimeout := util.MinInt(rawConfig.NoResponseTimeout, MaxNoResponseTimeout) p.options.NoResponseTimeout = noResponseTimeout * 60 * 1000 // convert to milliseconds p.logger.Debugln("NoReponseTimeout set in config, new NoReponseTimeout:", noResponseTimeout) } return rawConfig, string(werckerYaml), nil }
func cmdCheckConfig(options *core.PipelineOptions, dockerOptions *dockerlocal.DockerOptions) error { soft := NewSoftExit(options.GlobalOptions) logger := util.RootLogger().WithField("Logger", "Main") // TODO(termie): this is pretty much copy-paste from the // runner.GetConfig step, we should probably refactor var werckerYaml []byte var err error if options.WerckerYml != "" { werckerYaml, err = ioutil.ReadFile(options.WerckerYml) if err != nil { return soft.Exit(err) } } else { werckerYaml, err = core.ReadWerckerYaml([]string{"."}, false) if err != nil { return soft.Exit(err) } } // Parse that bad boy. rawConfig, err := core.ConfigFromYaml(werckerYaml) if err != nil { return soft.Exit(err) } for name, _ := range rawConfig.PipelinesMap { build, err := dockerlocal.NewDockerPipeline(name, rawConfig, options, dockerOptions, dockerlocal.NewNilBuilder()) if err != nil { return soft.Exit(err) } logger.Println("Found pipeline section:", name) if build.Box() != nil { logger.Println(" with box:", build.Box().GetName()) } } return nil }