yuuka/main.go
yakumo.izuru ce233a0712 Power levels keep increasing widly -- to be expected
Signed-off-by: Izuru Yakumo <yakumo.izuru@chaotic.ninja>

git-svn-id: file:///srv/svn/repo/yuuka/trunk@2 10373541-e681-4840-9083-43024fea98c9
2023-05-29 22:44:48 +00:00

67 lines
1.5 KiB
Go

// $TheSupernovaDuo: yuuka,v 0.1.1 2023/5/29 18:19:14 yakumo_izuru Exp $
package main
import (
"fmt"
"io"
"log"
"net/http"
"github.com/integrii/flaggy"
)
var (
format string = "AT"
region string
)
func main() {
flaggy.SetDescription("Yuuka is a wttr.in client")
flaggy.SetVersion(FullVersion())
forecastCmd := flaggy.NewSubcommand("forecast")
forecastCmd.String(&format, "f", "format", "View options")
forecastCmd.String(&region, "r", "region", "Where to look at")
forecastCmd.Description = "Check the forecast for a specified location"
flaggy.AttachSubcommand(forecastCmd, 1)
moonCmd := flaggy.NewSubcommand("moon")
moonCmd.String(&format, "f", "format", "View options")
moonCmd.Description = "Check the Moon's phases"
flaggy.AttachSubcommand(moonCmd, 1)
flaggy.ShowHelpOnUnexpectedDisable()
flaggy.Parse()
if forecastCmd.Used {
ShowForecast(region, format)
} else if moonCmd.Used {
ShowMoonPhases(format)
} else {
flaggy.ShowHelpAndExit("A subcommand is required")
}
}
func ShowForecast(region string, format string) {
query := "https://wttr.in/" + region + "?" + format
resp, err := http.Get(query)
sanityCheck(err)
defer resp.Body.Close()
body, err := io.ReadAll(resp.Body)
sanityCheck(err)
fmt.Printf("%s", body)
}
func ShowMoonPhases(format string) {
query := "https://wttr.in/" + "moon" + "?" + format
resp, err := http.Get(query)
sanityCheck(err)
defer resp.Body.Close()
body, err := io.ReadAll(resp.Body)
sanityCheck(err)
fmt.Printf("%s\n", body)
}
func sanityCheck(err error) {
if err != nil {
log.Fatal(err)
}
}