package main import ( "bytes" _ "embed" "io" "log" "net/url" "os" "github.com/arelate/southern_light/vangogh_integration" "github.com/arelate/vangogh/cli" "github.com/arelate/vangogh/clo_delegates" "github.com/boggydigital/camino" "github.com/boggydigital/clo" "github.com/boggydigital/nod" ) var ( //go:embed "cli-commands.txt" cliCommands []byte //go:embed "cli-help.txt" cliHelp []byte ) const debugParam = "debug" func main() { nod.EnableStdOutPresenter() vsa := nod.Begin("vangogh is serving your DRM-free needs") defer vsa.Done() if err := vangogh_integration.InitVangoghCamino(); err != nil { log.Fatalln(nod.Error(err)) } defs, err := clo.Load( bytes.NewBuffer(cliCommands), bytes.NewBuffer(cliHelp), clo_delegates.FuncMap) if err != nil { log.Fatalln(nod.Error(err)) } clo.HandleFuncs(map[string]clo.Handler{ "backup": cli.BackupHandler, "cleanup": cli.CleanupHandler, "generate-missing-checksums": cli.GenerateMissingChecksumsHandler, "get-data": cli.GetDataHandler, "get-description-images": cli.GetDescriptionImagesHandler, "get-downloads": cli.GetDownloadsHandler, "get-images": cli.GetImagesHandler, "get-binaries": cli.GetBinariesHandler, "get-video-metadata": cli.GetVideoMetadataHandler, "import-cookies": cli.ImportCookiesHandler, "migrate-data": cli.MigrateDataHandler, "reduce": cli.ReduceHandler, "relayout-downloads": cli.RelayoutDownloadsHandler, "serve": cli.ServeHandler, "size": cli.SizeHandler, "sync": cli.SyncHandler, "update-downloads": cli.UpdateDownloadsHandler, "users": cli.UsersHandler, "validate": cli.ValidateHandler, "version": cli.VersionHandler, }) if err = defs.AssertCommandsHaveHandlers(); err != nil { log.Fatalln(nod.Error(err)) } var u *url.URL u, err = defs.Parse(os.Args[1:]) if err != nil { log.Fatalln(err) } if q := u.Query(); q.Has(debugParam) { var logger io.Closer logger, err = nod.EnableFileLogger(u.Path, camino.GetAbs(vangogh_integration.Logs)) if err != nil { log.Fatalln(err) } defer logger.Close() } if err = defs.Serve(u); err != nil { log.Fatalln(nod.Error(err)) } }