From 5dd913e1ec3c861cfcbe0f01dd4d631676ff66aa Mon Sep 17 00:00:00 2001 From: Andrew Scott Date: Tue, 2 Aug 2022 22:15:35 -0400 Subject: [PATCH] Move main menu to separate file --- cmd/menu.go | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 cmd/menu.go diff --git a/cmd/menu.go b/cmd/menu.go new file mode 100644 index 0000000..37de86c --- /dev/null +++ b/cmd/menu.go @@ -0,0 +1,55 @@ +package main + +import ( + "bufio" + "fmt" + "log" + "os" + "strings" +) + +func mainMenu(app *application) { + + // Display main menu + fmt.Println("\n=====================================================") + fmt.Printf("| Welcome to the OpenWeatherMap-gRPC Client! v%s |\n", app.Version) + fmt.Println("=====================================================") + + fmt.Printf("New in version %s:\n", app.Version) + fmt.Println(" - Advanced option: Get historical data back to 1972") + fmt.Println("New in version 0.1.0") + fmt.Println(" - Default option: Automatically determine location") + fmt.Println(" - Advanced option: Enter exact location for anywhere in the world") + fmt.Println(" - Advanced option: Change back and forth between imperial and metric units of measurement") + + var option string + // Menu loop + for option != "0" { + fmt.Print("\nMain Menu\n---------\n\n") + fmt.Println("1. Today's forecast (use current location, default)") + fmt.Println("2. Advanced options (Change units, precise location, etc.)") + fmt.Print("0. Exit\n\n") + + // Read user input + reader := bufio.NewReader(os.Stdin) + input, err := reader.ReadString('\n') + if err != nil { + log.Println(err) + } + option = strings.TrimSuffix(input, "\n") + + // Check user input + if option == "1" || option == "" { + getLocation(app) + getCurrent(app) + printWeather(app) + } else if option == "2" { + advancedMenu(app) + } else if option == "0" { + return + } else { + fmt.Print("\nOops! An error occurred, please choose a valid option.\n\n") + } + } + +}