lab-development-imb/web/07/labor/loesungen_07/Kommandozeilenprogramm/main.go

74 lines
1.4 KiB
Go

package main
// fmt für ausgaben, os für Kommandozeilenargumente, strconv um strings in ints umzuwandeln
import (
"fmt"
"os"
"strconv"
)
// prüfen, ob mind. 1 Kommando übergeben wurde
func main() {
if len(os.Args) < 2 {
fmt.Println("Bitte einen Befehl eingeben")
return
}
filename := "books.json"
library, err := Load(filename)
if err != nil {
fmt.Println("Fehler beim Laden der JSON-Datai:", err.Error())
return
}
switch os.Args[1] {
case "add":
// Wenn Argumente kleiner 4, Hilfe ausgeben
if len(os.Args) < 4 {
fmt.Println("Benutze: add / Titel / Autor ")
return
}
// sonst titel = Argument 2 und autor = Argument 3
titel := os.Args[2]
autor := os.Args[3]
library.Add(titel, autor)
if err := library.Save(filename); err != nil {
fmt.Println("Fehler beim Speichern:", err.Error())
return
}
fmt.Println("Buch hinzugefügt.")
case "list":
library.List()
case "read":
if len(os.Args) < 3 {
fmt.Println("Benutze: read / ID")
return
}
id, convErr := strconv.Atoi(os.Args[2])
if convErr != nil {
fmt.Println("Die ID muss eine Zahl sein.")
return
}
library.Read(id)
if err := library.Save(filename); err != nil {
fmt.Println("Fehler beim Speichern:", err.Error())
return
}
fmt.Println("Buch als gelesen markiert.")
default:
fmt.Println("Kein bekanntes Kommando(add/list/red")
}
}