func NewRunner(config *config.Config, dry, once bool) (*Runner, error) {
	log.Printf("[INFO] (runner) creating new runner (dry: %v, once: %v)", dry, once)

	runner := &Runner{
		config: config,
		dry:    dry,
		once:   once,
	}

	if err := runner.init(); err != nil {
		return nil, err
	}

	return runner, nil
}
func NewRunner(config *config.Config, dry, once bool) (*Runner, error) {
	log.Printf("[INFO] (runner) creating new runner (dry: %v, once: %v)", dry, once)

	runner := &Runner{
		config: config,
		dry:    dry,
		once:   once,
	}

	if err := runner.init(); err != nil {
		return nil, err
	}

	return runner, nil
}
func NewRunner ( config * config . Config , dry , once bool ) ( * Runner , error ) { log . Printf ( " " , dry , once ) runner := & Runner { config : config , dry : dry , once : once , } if err := runner . init ( ) ; err != nil { return nil , err } return runner , nil }
// NewRunner accepts a slice of TemplateConfigs and returns a pointer to the new
// Runner and any error that occurred during creation.
NewRunner accepts a slice of TemplateConfigs and returns a pointer to the new Runner and any error that occurred during creation .