diff options
Diffstat (limited to 'io_helpers.go')
-rw-r--r-- | io_helpers.go | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/io_helpers.go b/io_helpers.go new file mode 100644 index 0000000..3bf9600 --- /dev/null +++ b/io_helpers.go @@ -0,0 +1,82 @@ +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) + } +} |