83 lines
2.1 KiB
Go
83 lines
2.1 KiB
Go
package main
|
|
|
|
/*
|
|
This simply parses the command line arguments using the default golang
|
|
package called 'flag'. This can be used as a simple template to parse
|
|
command line arguments in other programs.
|
|
|
|
It puts everything in the 'config' package which I think is a good
|
|
wrapper around the 'flags' package and doesn't need a whole mess of
|
|
global variables
|
|
*/
|
|
|
|
import (
|
|
"flag"
|
|
"fmt"
|
|
"log"
|
|
"os"
|
|
|
|
"github.com/gookit/config"
|
|
)
|
|
|
|
var customUsage = func() {
|
|
fmt.Fprintf(flag.CommandLine.Output(), "Usage of %s:\n", os.Args[0])
|
|
flag.PrintDefaults()
|
|
|
|
fmt.Println("")
|
|
fmt.Println("EXAMPLES:")
|
|
fmt.Println("")
|
|
fmt.Println(os.Args[0] + " --width 1024 --height 768 --drift .1 --filename seascape.glsl")
|
|
fmt.Println(os.Args[0] + " --width 640 --height 480 --filename planetfall.glsl")
|
|
fmt.Println("")
|
|
}
|
|
|
|
func parseFlags() {
|
|
var version string
|
|
var race bool
|
|
var filename string
|
|
var width int
|
|
var height int
|
|
var glDrift float64
|
|
|
|
flag.StringVar(&version, "version", "v0.1", "Set compiled in version string")
|
|
|
|
flag.StringVar(&filename, "filename", "seascape.glsl", "path to GLSL file")
|
|
flag.IntVar(&width, "width", 1024, "Width of the OpenGL Window")
|
|
flag.IntVar(&height, "height", 768, "Height of the OpenGL Window")
|
|
|
|
flag.Float64Var(&glDrift, "drift", 0.01, "Speed of the gradual camera drift")
|
|
flag.BoolVar(&race, "race", race, "Use race detector")
|
|
|
|
// Set the output if something fails to stdout rather than stderr
|
|
flag.CommandLine.SetOutput(os.Stdout)
|
|
|
|
flag.Usage = customUsage
|
|
flag.Parse()
|
|
|
|
if flag.Parsed() {
|
|
log.Println("flag.Parse() worked")
|
|
} else {
|
|
log.Println("flag.Parse() failed")
|
|
}
|
|
|
|
// keys := []string{"filename", "width", "height", "drift"}
|
|
// keys := []string{"width", "height", "drift"}
|
|
|
|
// keys := []string{"height"}
|
|
// config.LoadFlags(keys)
|
|
|
|
config.Set("width", width)
|
|
config.Set("height", height)
|
|
config.Set("glDrift", glDrift)
|
|
config.Set("filename", filename)
|
|
}
|
|
|
|
func parseConfig() {
|
|
config.WithOptions(config.ParseEnv)
|
|
parseFlags()
|
|
|
|
// config.LoadOSEnv([]string{"MAIL"})
|
|
// config.LoadOSEnv([]string{"USER"})
|
|
// config.LoadOSEnv([]string{"BUILDDEBUG"})
|
|
}
|