package main import ( "bufio" "encoding/csv" "encoding/json" "fmt" "io/ioutil" "os" ) func readLines(filepath string) []string { file, err := os.Open(filepath) if err != nil { panic(err) } defer file.Close() resp := []string{} scanner := bufio.NewScanner(file) for scanner.Scan() { resp = append(resp, scanner.Text()) } if err := scanner.Err(); err != nil { panic(err) } return resp } // writeLines writes the lines to the given file. func writeLines(lines []string, path string) error { file, err := os.Create(path) if err != nil { return err } defer file.Close() w := bufio.NewWriter(file) for _, line := range lines { fmt.Fprintln(w, line) } return w.Flush() } func readJson(filepath string) map[string]string { data := make(map[string]string) plan, err := ioutil.ReadFile(filepath) if err != nil { return data } err = json.Unmarshal(plan, &data) if err != nil { panic(err) } return data } func writeJson(data map[string]string) { metadataJson, _ := json.MarshalIndent(data, "", " ") err := ioutil.WriteFile(metadataPath, metadataJson, 0644) if err != nil { panic(err) } } func writeCSV(data [][]string) { f, err := os.Create(metadataPathCSV) defer f.Close() if err != nil { panic(err) } w := csv.NewWriter(f) w.Comma = '\t' defer w.Flush() if err := w.WriteAll(data); err != nil { panic(err) } }