52 lines
1.3 KiB
Go
52 lines
1.3 KiB
Go
package main
|
|
|
|
import (
|
|
"flag"
|
|
"fmt"
|
|
"os"
|
|
)
|
|
|
|
// Flags supplied to cli.
|
|
type Flags struct {
|
|
ConfigPath string
|
|
HTTPBind string
|
|
HTTPPort uint
|
|
ListMidiDevices bool
|
|
}
|
|
|
|
// Parse the supplied flags.
|
|
func (a *App) ParseFlags() {
|
|
app.flags = new(Flags)
|
|
flag.Usage = func() {
|
|
fmt.Printf(serviceName + ": " + serviceDescription + ".\n\nUsage:\n")
|
|
flag.PrintDefaults()
|
|
}
|
|
|
|
// If version is requested.
|
|
var printVersion bool
|
|
flag.BoolVar(&printVersion, "v", false, "Print version")
|
|
|
|
// Override configuration path.
|
|
usage := "Load configuration from `FILE`"
|
|
flag.StringVar(&app.flags.ConfigPath, "config", "", usage)
|
|
flag.StringVar(&app.flags.ConfigPath, "c", "", usage+" (shorthand)")
|
|
|
|
// Config overrides for http configurations.
|
|
flag.StringVar(&app.flags.HTTPBind, "http-bind", "", "Bind address for http server")
|
|
flag.UintVar(&app.flags.HTTPPort, "http-port", 0, "Bind port for http server")
|
|
|
|
// Lists available devices.
|
|
usage = "List available midi devices for use in configurations"
|
|
flag.BoolVar(&app.flags.ListMidiDevices, "list", false, usage)
|
|
flag.BoolVar(&app.flags.ListMidiDevices, "l", false, usage+" (shorthand)")
|
|
|
|
// Parse the flags.
|
|
flag.Parse()
|
|
|
|
// Print version and exit if requested.
|
|
if printVersion {
|
|
fmt.Println(serviceName + ": " + serviceVersion)
|
|
os.Exit(0)
|
|
}
|
|
}
|