64 lines
2.0 KiB
Go
64 lines
2.0 KiB
Go
package main
|
|
|
|
import (
|
|
"flag"
|
|
"time"
|
|
)
|
|
|
|
func flags() {
|
|
// Report generation
|
|
hostAddress := flag.String("address", "", "Address of Jellyfin server to extract intro information from.")
|
|
apiKey := flag.String("key", "", "Administrator API key to authenticate with.")
|
|
keepTimestamps := flag.Bool("keep", false, "Keep the current timestamps instead of erasing and reanalyzing.")
|
|
pollInterval := flag.Duration("poll", 10*time.Second, "Interval to poll task completion at.")
|
|
reportDestination := flag.String("o", "", "Report destination filename. Defaults to intros-ADDRESS-TIMESTAMP.json.")
|
|
|
|
// Report comparison
|
|
report1 := flag.String("r1", "", "First report.")
|
|
report2 := flag.String("r2", "", "Second report.")
|
|
|
|
// API schema validator
|
|
ids := flag.String("validate", "", "Comma separated item ids to validate the API schema for.")
|
|
|
|
// Print usage examples
|
|
flag.CommandLine.Usage = func() {
|
|
flag.CommandLine.Output().Write([]byte("Flags:\n"))
|
|
flag.PrintDefaults()
|
|
|
|
usage := "\nUsage:\n" +
|
|
"Generate intro timestamp report from a local server:\n" +
|
|
"./verifier -address http://127.0.0.1:8096 -key api_key\n\n" +
|
|
|
|
"Generate intro timestamp report from a remote server, polling for task completion every 20 seconds:\n" +
|
|
"./verifier -address https://example.com -key api_key -poll 20s -o example.json\n\n" +
|
|
|
|
"Compare two previously generated reports:\n" +
|
|
"./verifier -r1 v0.1.5.json -r2 v0.1.6.json\n\n" +
|
|
|
|
"Validate the API schema for some item ids:\n" +
|
|
"./verifier -address http://127.0.0.1:8096 -key api_key -validate id1,id2,id3\n"
|
|
|
|
flag.CommandLine.Output().Write([]byte(usage))
|
|
}
|
|
|
|
flag.Parse()
|
|
|
|
if *hostAddress != "" && *apiKey != "" {
|
|
if *ids == "" {
|
|
generateReport(*hostAddress, *apiKey, *reportDestination, *keepTimestamps, *pollInterval)
|
|
} else {
|
|
validateApiSchema(*hostAddress, *apiKey, *ids)
|
|
}
|
|
|
|
} else if *report1 != "" && *report2 != "" {
|
|
compareReports(*report1, *report2, *reportDestination)
|
|
|
|
} else {
|
|
panic("Either (-address and -key) or (-r1 and -r2) are required.")
|
|
}
|
|
}
|
|
|
|
func main() {
|
|
flags()
|
|
}
|