TheMathemagicians/sevenkeys/cli/mainui.go

84 lines
1.7 KiB
Go

package cli
import (
"database/sql"
"errors"
"fmt"
"os"
"os/exec"
"sevenkeys/database"
"sevenkeys/logic"
)
var output string
func showOutput() {
if output != "" {
fmt.Println(output)
}
}
func MainCliLoop(db *sql.DB) {
var command string
var selectedStorageArea database.StorageArea
for {
ShowSplashScreen()
showStorageInfo(os.Stdout, selectedStorageArea)
showSearchCriteria()
showSelectedCard()
showCopiesInserted()
command = GetStringResponse("SEVENKEYS $")
var err error
switch command {
case "q", "quit":
return
case "n", "newstorage":
var storageArea database.StorageArea
storageArea.Name = GetStringResponse("Storage area name:")
storageArea.Type = GetStringResponse("Storage area type (Binder/Box):")
err = logic.CreateStorageArea(db, storageArea)
logic.Check(err)
break
case "l", "location":
cardStorageLocation.StorageBox = GetStringResponse("Storage location:")
break
case "r", "source":
cardStorageLocation.Source = GetStringResponse("Card source:")
break
case "p", "condition":
cardStorageLocation.CardCondition = GetStringResponse("Card condition:")
break
case "c", "criteria":
getSearchCriteria()
break
case "s", "search":
getSearchOptions(db)
var previousCardPrintingId = cardStorageLocation.CardPrintingId
cardStorageLocation.CardPrintingId, selectedCardPrintingSearchLine, err = logic.Search(searchOptions)
var exitError *exec.ExitError
if errors.As(err, &exitError) {
break
}
logic.Check(err)
output = ""
if cardStorageLocation.CardPrintingId != previousCardPrintingId {
copiesInserted = 0
}
break
case "i", "insert":
insertSelectedCard(db)
break
default:
fmt.Println("Unrecognized command:", command)
break
}
}
}