| func newLogfile(prefix string) (*os.File, error) { |
| f, err := ioutil.TempFile("", "__modules__"+prefix) |
| func readTo(r io.Reader, w io.Writer) { |
| scanner := bufio.NewScanner(r) |
| fmt.Fprintf(w, "%s\n", scanner.Text()) |
| // envSliceToMap returns a map representation of a string slive |
| // of environment variables. |
| func envSliceToMap(env []string) map[string]string { |
| m := make(map[string]string) |
| for _, osv := range env { |
| parts := strings.SplitN(osv, "=", 2) |
| // mergeMaps merges two maps, a & b, with b taking preference over a. |
| func mergeMaps(a, b map[string]string) map[string]string { |
| merged := make(map[string]string) |