package main import ( "fmt" "os" "strconv" ) func main() { // Frage: Was macht dieser Teil genau? if len(os.Args) < 2 { fmt.Println("Usage: add | list | done ") return } // Lädt alle Tasks aus JSON-Datei in eine Liste // Gibt eine leere Liste zurück, falls die JSON-Datei noch nicht existiert // Gibt Fehlermeldung vom Typ error zurück, falls etwas schief gelaufen ist tasklist, err := LoadTasks("tasks.json") // TODO: Fehlerbehandlung if err != nil { fmt.Println("Fehler beim Laden der JSON-Datei: " + err.Error()) } // Je nach Kommandozeilenargument wird: // - Task neu erstellt und zur Liste hinzugefügt (auch in JSON-Datei) // - Alle Tasks aus der Liste ausgegeben inkl. Status ("✓" für done, sonst " ") // - Task als done markiert und Ergebnis ausgegeben switch os.Args[1] { case "add": // TODO: Prüfen, ob 3. Kommandozeilenargument für Title vorliegt if len(os.Args) < 3 { fmt.Println("Geben Sie einen Titel ein.") return } // TODO: Task zur Liste hinzufügen tasklist.Add(os.Args[2]) // TODO: Liste in JSON-Datei speichern tasklist.Save("tasks.json") // Ergebnis ausgeben fmt.Println("Task added.") case "list": // TODO: Durch alle Tasks der Liste iterieren for _, task := range tasklist.Tasks { // TODO: Task-Status bestimmen und inklusive ID und Title ausgeben status := " " if task.Done { status = "✓" } fmt.Printf("[%s] %d: %s\n", status, task.ID, task.Title) } case "done": // TODO: Prüfen, ob 3. Kommandozeilenargument für ID vorliegen if len(os.Args) < 3 { fmt.Println("Geben Sie eine ID ein.") return } // TODO: Prüfen, ob ID vom Typ integer, sonst Fehlermeldung und Abbruch // Tipp: strconv.Atoi(string) id, err := strconv.Atoi(os.Args[2]) if err != nil { fmt.Println("Falsche Eingabe der ID") return } // TODO: Task auf done setzen tasklist.Complete(id) // TODO: Taskliste in JSON-Datei speichern tasklist.Save("tasks.json") // Ergebnis ausgeben fmt.Println("Task marked as done.") } }