dashboard of nationalrail train times
at main 1.5 kB view raw
1package main 2 3import ( 4 "encoding/json" 5 "fmt" 6 "log" 7 "os" 8) 9 10func main() { 11 if len(os.Args) < 2 { 12 fmt.Println("Sundial - Live Train Departures") 13 fmt.Println("Usage:") 14 fmt.Println(" go run . server - Start web server") 15 fmt.Println(" go run . tui - Start interactive tui") 16 fmt.Println(" go run . parse <html_file> - Parse HTML file") 17 fmt.Println("Examples:") 18 fmt.Println(" go run . server") 19 fmt.Println(" go run . tui") 20 fmt.Println(" go run . parse sample.html") 21 os.Exit(1) 22 } 23 24 command := os.Args[1] 25 26 switch command { 27 case "server": 28 runServer() 29 case "tui": 30 err := runTUI() 31 if err != nil { 32 log.Fatalf("tui error: %v", err) 33 } 34 case "parse": 35 if len(os.Args) < 3 { 36 fmt.Println("Usage: go run . parse <html_file>") 37 os.Exit(1) 38 } 39 parseFile(os.Args[2]) 40 default: 41 // Backward compatibility - treat first arg as filename 42 parseFile(command) 43 } 44} 45 46func runServer() { 47 config, err := LoadConfig("config.yaml") 48 if err != nil { 49 log.Fatalf("Error loading config: %v", err) 50 } 51 52 server := NewServer(config) 53 log.Fatal(server.Start()) 54} 55 56func parseFile(filename string) { 57 departures, err := ParseDeparturesFromFile(filename) 58 if err != nil { 59 log.Fatalf("Error parsing departures: %v", err) 60 } 61 62 fmt.Printf("Found %d departures:\n\n", len(departures)) 63 64 // Print as formatted JSON 65 jsonData, err := json.MarshalIndent(departures, "", " ") 66 if err != nil { 67 log.Fatalf("Error marshaling to JSON: %v", err) 68 } 69 70 fmt.Println(string(jsonData)) 71}