go-job-visualizer/main.go

67 خطوط
1.4 KiB
Go

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