go-job-visualizer/main.go

67 lines
1.4 KiB
Go
Raw Normal View History

2019-11-07 22:16:09 +00:00
package main
import (
"bufio"
"encoding/csv"
"flag"
"fmt"
2019-11-07 22:50:52 +00:00
"html/template"
2019-11-07 22:16:09 +00:00
"io"
"os"
)
func main() {
var file = flag.String("file", "", "File to import")
var columnStart = flag.Int("columnStart", -1, "Column number with a start Datetime")
var columnEnd = flag.Int("columnEnd", -1, "Column number with a end Datetime")
2019-11-07 22:50:52 +00:00
var columnDescription = flag.Int("columnDescription", -1, "Column number with a descriptive name or similar")
2019-11-07 22:16:09 +00:00
flag.Parse()
2019-11-07 22:50:52 +00:00
if _, err := os.Stat(*file); os.IsNotExist(err) || *columnStart == -1 || *columnEnd == -1 || *columnDescription == -1 {
2019-11-07 22:16:09 +00:00
flag.Usage()
return
}
fmt.Println("Scanning file " + *file + "...")
2019-11-07 22:50:52 +00:00
readCsvFile(*file, *columnStart, *columnEnd, *columnDescription)
2019-11-07 22:16:09 +00:00
}
2019-11-07 22:50:52 +00:00
func readCsvFile(csvFile string, columnStart int, columnEnd int, columnDescription int) {
2019-11-07 22:16:09 +00:00
f, _ := os.Open(csvFile)
r := csv.NewReader(bufio.NewReader(f))
2019-11-07 22:50:52 +00:00
type JobDetails struct {
Start string
End string
Description string
}
type ViewData struct {
Jobs []JobDetails
}
var data ViewData
2019-11-07 22:16:09 +00:00
for {
2019-11-07 22:50:52 +00:00
row, err := r.Read()
2019-11-07 22:16:09 +00:00
if err == io.EOF {
break
}
2019-11-07 22:50:52 +00:00
job := JobDetails{
Start: row[columnStart],
End: row[columnEnd],
Description: row[columnDescription],
2019-11-07 22:16:09 +00:00
}
2019-11-07 22:50:52 +00:00
data.Jobs = append(data.Jobs, job)
}
tpl, err := template.ParseFiles("template.html")
if err != nil {
fmt.Println(err)
2019-11-07 22:16:09 +00:00
}
2019-11-07 22:50:52 +00:00
fmt.Printf("%+v\n", data)
tpl.Execute(os.Stdout, data)
2019-11-07 22:16:09 +00:00
}