cyanocorax/cli/cli.go

62 lines
1.2 KiB
Go

package cli
import (
"fmt"
"flag"
"os"
"git.rdelaage.ovh/rdelaage/cyanocorax/version"
"git.rdelaage.ovh/rdelaage/cyanocorax/manage"
"git.rdelaage.ovh/rdelaage/cyanocorax/render/gemini"
)
const (
flagInfoHelp = "Show application information"
flagVersionHelp = "Show application version"
flagSiteHelp = "Set site file path"
)
func Parse() {
var (
flagInfo bool
flagVersion bool
flagSite string
)
flag.BoolVar(&flagInfo, "info", false, flagInfoHelp)
flag.BoolVar(&flagInfo, "i", false, flagInfoHelp)
flag.BoolVar(&flagVersion, "version", false, flagVersionHelp)
flag.BoolVar(&flagVersion, "v", false, flagVersionHelp)
flag.StringVar(&flagSite, "site", "", flagSiteHelp)
flag.StringVar(&flagSite, "s", "", flagSiteHelp)
flag.Parse()
if flagInfo {
info()
return
}
if flagVersion {
fmt.Println(version.Version)
return
}
if flagSite == "" {
fmt.Println("Flag site must be set")
os.Exit(1)
}
site, err := manage.SiteFromFile(flagSite)
if err != nil {
fmt.Println("Failed to parse site file", err)
os.Exit(1)
}
err = gemini.Render(site)
if err != nil {
fmt.Println("Failed to render this site", err)
os.Exit(1)
}
}