// Simple use of text/template and some name-value pair parsing. package main import ( "bufio" "io" "log" "os" "strings" "text/template" ) func main() { varfile, err := os.Open(os.Args[1]) if err != nil { log.Fatal(err) } reader := bufio.NewReader(varfile) tmpl, err := template.ParseFiles(os.Args[2]) if err != nil { log.Fatal(err) } vars := map[string]string{} for { line, err := reader.ReadString('\n') if err == io.EOF { if line != "" { log.Fatal("final var line missing newline") } break } if err != nil { log.Fatal(err) } fields := strings.SplitN(line[:len(line)-1], "=", 2) vars[fields[0]] = fields[1] } err = tmpl.Execute(os.Stdout, vars) if err != nil { log.Fatal(err) } }