forked from WEB-IMB-WS2526/lab-development-imb
83 lines
2.0 KiB
Go
83 lines
2.0 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"strconv"
|
|
)
|
|
|
|
func main() {
|
|
// Frage: Was macht dieser Teil genau?
|
|
if len(os.Args) < 2 {
|
|
fmt.Println("Usage: add <task> | list | done <id>")
|
|
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.")
|
|
}
|
|
}
|