package cli import ( "database/sql" "errors" "fmt" "os/exec" "sevenkeys/database" "sevenkeys/logic" ) var output string func showOutput() { if output != "" { fmt.Println(output) } } func MainCliLoop(db *sql.DB) { var command string for { ShowSplashScreen() showStorageInfo() 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 } } }