package main import ( "flag" "log" "os" "time" "git.aiterp.net/rpdata/api/internal/store" "git.aiterp.net/rpdata/api/models/posts" "git.aiterp.net/rpdata/api/models/logs" ) var dateStr string var tzStr string var channel string var fileName string func main() { var inputPosts []Post flag.StringVar(&dateStr, "date", "2013-04-04", "Date in YYYY-MM-DD form.") flag.StringVar(&tzStr, "tz", "Europe/Oslo", "Time zone for the date.") flag.StringVar(&channel, "channel", "#RedrockAgency", "Channel it's set in.") flag.StringVar(&fileName, "file", "-", "File to read from (- = stdin).") flag.Parse() tz, err := time.LoadLocation(tzStr) if err != nil { log.Fatalln("Parse timezone:", err) } date, err := time.ParseInLocation("2006-01-02", dateStr, tz) if err != nil { log.Fatalln("Parse date:", err) } err = store.Init() if err != nil { log.Fatalln("Init store:", err) } if fileName != "-" { file, fileErr := os.Open(fileName) if fileErr != nil { log.Fatalln("Open file:", fileErr) } inputPosts, err = parsePosts(file, date) file.Close() } else { inputPosts, err = parsePosts(os.Stdin, date) } if err != nil { log.Fatalln("Read inputPosts:", err) } if len(inputPosts) == 0 { log.Fatalln("Input file contained no posts.") } l, err := logs.Add(inputPosts[0].Time, channel, "", "", "", false) if err != nil { log.Fatalln("Add log:", err) } log.Println("Added log", l.ID) for _, inputPost := range inputPosts { p, err := posts.Add(l, inputPost.Time, inputPost.Kind, inputPost.Nick, inputPost.Text) if err != nil { log.Fatalln("Add post:", err) } log.Println("Added post", p.ID) } _, err = logs.UpdateCharacters(l) if err != nil { log.Println("Warning, failed to update characters:", err) } }