67 lignes
1.4 KiB
Go
67 lignes
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)
|
|
}
|