package chartify import ( "fmt" "strings" ) type InjectOpts struct { injectors []string injects []string } func (r *Runner) Inject(files []string, o InjectOpts) error { var flagsTemplate string for _, inj := range o.injectors { tokens := strings.Split(inj, ",") injector := tokens[0] injectFlags := tokens[1:] for _, flag := range injectFlags { flagSplit := strings.Split(flag, "=") switch len(flagSplit) { case 1: flagsTemplate += flagSplit[0] case 2: key, val := flagSplit[0], flagSplit[1] flagsTemplate += createFlagChain(key, []string{val}) default: return fmt.Errorf("inject-flags must be in the form of key1=value1[,key2=value2,...]: %v", flag) } } for _, file := range files { flags := strings.Replace(flagsTemplate, "FILE", file, 1) command := fmt.Sprintf("%s %s", injector, flags) stdout, err := r.runBytes("", command) if err != nil { return err } if err := r.WriteFile(file, stdout, 0644); err != nil { return err } } } for _, tmpl := range o.injects { for _, file := range files { cmd := strings.Replace(tmpl, "FILE", file, 1) stdout, err := r.runBytes("", cmd) if err != nil { return err } if err := r.WriteFile(file, stdout, 0644); err != nil { return err } } } return nil }