pflag
This commit is contained in:
@@ -4,23 +4,81 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"log"
|
"log"
|
||||||
"os"
|
"os"
|
||||||
"os/signal"
|
"os/signal"
|
||||||
"syscall"
|
"syscall"
|
||||||
|
|
||||||
"github.com/qvest-digital/go-mxl/mxl"
|
"github.com/qvest-digital/go-mxl/mxl"
|
||||||
|
"github.com/spf13/pflag"
|
||||||
|
|
||||||
flowdef "mxl-pattern-generator/internal/flow-def"
|
flowdef "mxl-pattern-generator/internal/flow-def"
|
||||||
"mxl-pattern-generator/internal/generator"
|
"mxl-pattern-generator/internal/generator"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type appArgs struct {
|
||||||
|
showHelp bool
|
||||||
|
|
||||||
|
domain string
|
||||||
|
videoFlowDefFile string
|
||||||
|
audioFlowDefFile string
|
||||||
|
pattern uint8
|
||||||
|
listPatterns bool
|
||||||
|
textOverlay string
|
||||||
|
|
||||||
|
videoWidth uint16
|
||||||
|
videoHeight uint16
|
||||||
|
videoFPS float32
|
||||||
|
|
||||||
|
audioChannels uint8
|
||||||
|
audioSamplingFreq uint32
|
||||||
|
}
|
||||||
|
|
||||||
|
func printUsage() {
|
||||||
|
fmt.Println("CLI USAGE FUNC")
|
||||||
|
fmt.Fprintln(os.Stderr, "Usage: ")
|
||||||
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
var args appArgs
|
||||||
|
flagSet := pflag.NewFlagSet("args", pflag.ContinueOnError)
|
||||||
|
flagSet.SortFlags = false
|
||||||
|
flagSet.Usage = func() { printUsage() }
|
||||||
|
// common flags
|
||||||
|
flagSet.BoolVarP(&args.showHelp, "help", "h", false, "Show help message and exit")
|
||||||
|
// MXL flags
|
||||||
|
flagSet.StringVarP(&args.domain, "domain", "d", "", "MXL domain")
|
||||||
|
flagSet.StringVarP(&args.videoFlowDefFile, "video", "v", "", "Video flow definition JSON file path")
|
||||||
|
flagSet.StringVarP(&args.audioFlowDefFile, "audio", "a", "", "Audio flow definition JSON file path [TODO]")
|
||||||
|
// Video pattern flags
|
||||||
|
flagSet.Uint8VarP(&args.pattern, "pattern", "p", 0, "Video pattern type [TODO]")
|
||||||
|
flagSet.BoolVar(&args.listPatterns, "list-patterns", false, "List video available video patterns and exit [TODO]")
|
||||||
|
flagSet.StringVarP(&args.textOverlay, "overlay", "o", "", "Text overlay above video pattern [TODO]")
|
||||||
|
flagSet.Uint16VarP(&args.videoWidth, "width", "w", 1920, "Video pattern width")
|
||||||
|
// flagSet.Uint16VarP(&args.videoHeight, "height", "h", 1920, "Video pattern height")
|
||||||
|
args.videoFPS = *flagSet.Float32P("fps", "f", 1920, "Video pattern FPS")
|
||||||
|
// Audio pattern flags
|
||||||
|
flagSet.Uint8VarP(&args.audioChannels, "channel", "c", 2, "Amount of audio channels. Each channel: num * 1kHz [TODO]")
|
||||||
|
flagSet.Uint32VarP(&args.audioSamplingFreq, "freq", "f", 0, "Sampling frequency of test audio feed [TODO]")
|
||||||
|
|
||||||
var width, height uint = 1920, 1080
|
var width, height uint = 1920, 1080
|
||||||
var fpsNum, fpsDen uint = 25, 1
|
var fpsNum, fpsDen uint = 25, 1
|
||||||
flowUUID := "8f1d2a4b-6c3e-4f5a-9b2c-1d7e8a3f0b5d"
|
flowUUID := "8f1d2a4b-6c3e-4f5a-9b2c-1d7e8a3f0b5d"
|
||||||
domain := "/dev/shm/mxl"
|
domain := "/dev/shm/mxl"
|
||||||
|
|
||||||
|
// create domain if not exist
|
||||||
|
if _, err := os.Stat(domain); err != nil {
|
||||||
|
err := os.MkdirAll(domain, 0775)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatalf("Could not create domain dir: %v", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// TODO: move to parse args
|
||||||
|
if _, err := mxl.IsTmpFs(domain); err != nil {
|
||||||
|
log.Fatalf("Domain is not tmpfs dir: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
log.Printf("Go Pattern Gen (wgpu)")
|
log.Printf("Go Pattern Gen (wgpu)")
|
||||||
log.Printf("Video: %dx%dp%d/%d", width, height, fpsNum, fpsDen)
|
log.Printf("Video: %dx%dp%d/%d", width, height, fpsNum, fpsDen)
|
||||||
log.Printf("UUID: %s", flowUUID)
|
log.Printf("UUID: %s", flowUUID)
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ require (
|
|||||||
github.com/gogpu/gputypes v0.8.0
|
github.com/gogpu/gputypes v0.8.0
|
||||||
github.com/gogpu/wgpu v0.34.3
|
github.com/gogpu/wgpu v0.34.3
|
||||||
github.com/qvest-digital/go-mxl v1.1.0-rc.4
|
github.com/qvest-digital/go-mxl v1.1.0-rc.4
|
||||||
|
github.com/spf13/pflag v1.0.10
|
||||||
)
|
)
|
||||||
|
|
||||||
require (
|
require (
|
||||||
|
|||||||
@@ -12,5 +12,7 @@ github.com/gogpu/wgpu v0.34.3 h1:oV7K5ueBqxZuvp1w9KpArzj15+eOrm/l9ZnM3jcKbXA=
|
|||||||
github.com/gogpu/wgpu v0.34.3/go.mod h1:erhaIjD9psJKjHqAhn5MWdJETcACR1NGoqLhkTAHkFM=
|
github.com/gogpu/wgpu v0.34.3/go.mod h1:erhaIjD9psJKjHqAhn5MWdJETcACR1NGoqLhkTAHkFM=
|
||||||
github.com/qvest-digital/go-mxl v1.1.0-rc.4 h1:qgOGSIv53HYQLTB06m39c6WE2xqMceObViZy5A3rZlA=
|
github.com/qvest-digital/go-mxl v1.1.0-rc.4 h1:qgOGSIv53HYQLTB06m39c6WE2xqMceObViZy5A3rZlA=
|
||||||
github.com/qvest-digital/go-mxl v1.1.0-rc.4/go.mod h1:cYzyT+S/AONytsKr/DozzFQP2OrNrg/JsQOSjvwn+Rk=
|
github.com/qvest-digital/go-mxl v1.1.0-rc.4/go.mod h1:cYzyT+S/AONytsKr/DozzFQP2OrNrg/JsQOSjvwn+Rk=
|
||||||
|
github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk=
|
||||||
|
github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
|
||||||
golang.org/x/sys v0.47.0 h1:o7XGOvZQCADBQQ4Y7VNq2dRWQR7JmOUW8Kxx4ZsNgWs=
|
golang.org/x/sys v0.47.0 h1:o7XGOvZQCADBQQ4Y7VNq2dRWQR7JmOUW8Kxx4ZsNgWs=
|
||||||
golang.org/x/sys v0.47.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
|
golang.org/x/sys v0.47.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
|
||||||
|
|||||||
Reference in New Issue
Block a user