-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdot.go
85 lines (80 loc) · 2.47 KB
/
dot.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
package main
import (
"fmt"
"os"
"strings"
)
/*
determineDotData idetermines 'dot' (.) data from string or file.
*/
func determineDotData() (any, error) {
var dotdata any
var err error
if *dotstring != "" {
// create temporary file (to unify dot data processing)
f, err := os.CreateTemp("", "dotstring.*.txt")
if err != nil {
return nil, fmt.Errorf("-dotstring: unable to create temporary file, error=[%v]", err)
}
tempFilename := f.Name()
defer os.Remove(tempFilename)
ds := strings.ReplaceAll(*dotstring, "\\n", "\n")
_, err = f.WriteString(ds)
if err != nil {
f.Close()
return nil, fmt.Errorf("-dotstring: unable to write to temporary file, file=[%v], error=[%v]", tempFilename, err)
}
err = f.Close()
if err != nil {
return nil, fmt.Errorf("-dotstring: unable to close temporary file, file=[%v], error=[%v]", tempFilename, err)
}
*dotfile = tempFilename
}
if *dotfile != "" {
switch strings.ToLower(*dottype) {
case "json":
dotdata, err = readJSON(*dotfile)
if err != nil {
return nil, fmt.Errorf("unable to transform dot file to JSON, file=[%v], error=[%v]", *dotfile, err)
}
case "yaml":
dotdata, err = readYAML(*dotfile)
if err != nil {
return nil, fmt.Errorf("unable to transform dot file to YAML, file=[%v], error=[%v]", *dotfile, err)
}
case "csv":
dotdata, err = readCSV(*dotfile)
if err != nil {
return nil, fmt.Errorf("unable to transform dot file to CSV, file=[%v], error=[%v]", *dotfile, err)
}
case "csvmap":
dotdata, err = readCSVMap(*dotfile)
if err != nil {
return nil, fmt.Errorf("unable to transform dot file to CSVMap, file=[%v], error=[%v]", *dotfile, err)
}
case "text":
dotdata, err = readText(*dotfile)
if err != nil {
return nil, fmt.Errorf("unable to transform dot file to TEXT, file=[%v], error=[%v]", *dotfile, err)
}
case "lines":
dotdata, err = readLines(*dotfile)
if err != nil {
return nil, fmt.Errorf("unable to transform dot file to LINES, file=[%v], error=[%v]", *dotfile, err)
}
case "xml":
dotdata, err = readXML(*dotfile)
if err != nil {
return nil, fmt.Errorf("unable to transform dot file to XML, file=[%v], error=[%v]", *dotfile, err)
}
case "toml":
dotdata, err = readTOML(*dotfile)
if err != nil {
return nil, fmt.Errorf("unable to transform dot file to TOML, file=[%v], error=[%v]", *dotfile, err)
}
default:
return nil, fmt.Errorf("unsupported dot type, type=[%v]", *dottype)
}
}
return dotdata, nil
}