go-job-visualizer/main.go

91 lines
1.7 KiB
Go

package main
import (
"bufio"
"encoding/csv"
"flag"
"fmt"
"html/template"
"io"
"log"
"os"
"strings"
)
func main() {
var file = flag.String("file", "", "File to import")
var output = flag.String("output", "", "File to generate")
//var columnStart = flag.Int("columnStart", -1, "Column number with a start Datetime")
//var columnEnd = flag.Int("columnEnd", -1, "Column number with a end Datetime")
//var columnDescription = flag.Int("columnDescription", -1, "Column number with a descriptive name or similar")
flag.Parse()
if _, err := os.Stat(*file); os.IsNotExist(err) || *output == "" {
flag.Usage()
return
}
fmt.Println("Analyzing " + *file + "...")
readCsvFile(*file, *output)
}
func readCsvFile(input string, output string) {
csvFile, _ := os.Open(input)
reader := csv.NewReader(bufio.NewReader(csvFile))
type JobDetails struct {
Id int
Name string
Type string
Provider string
Start []string
End []string
}
type ViewData struct {
Jobs []JobDetails
}
var data ViewData
id := 0
for {
row, err := reader.Read()
if err == io.EOF {
break
}
id++
job := JobDetails{
Id: id,
Name: row[1],
Type: row[2],
Provider: row[0],
Start: strings.Split(row[3], ","),
End: strings.Split(row[4], ","),
}
data.Jobs = append(data.Jobs, job)
}
fmt.Println("Scanning done.")
fmt.Println("Creating template...")
tpl, err := template.ParseFiles("template.html")
if err != nil {
fmt.Println(err)
}
outputFile, err := os.Create(output)
if err != nil {
log.Println("create file: ", err)
return
}
err = tpl.Execute(outputFile, data)
if err != nil {
log.Print("execute: ", err)
return
}
outputFile.Close()
fmt.Println("Generated " + output)
}