package main import ( "log" "os" "github.com/urfave/cli/v2" "gitnet.fr/deblan/mu-go/internal/shell" "gitnet.fr/deblan/mu-go/internal/web" ) var ( version = "dev" defaultListen = "127.0.0.1" defaultPort = "4000" defaultApiUrl = "http://127.0.0.1:4000" defaultServerDirectory = "." defaultDownloadDirectory = "." defaultName = "" defaultOrder = "date" ) var ( flagListen = "listen" flagPort = "port" flagApiUrl = "api-url" flagDirectory = "directory" flagDebug = "debug" flagName = "name" flagOrder = "order" ) func main() { cliListen := &cli.StringFlag{ Name: flagListen, Aliases: []string{"l"}, Value: defaultListen, } cliPort := &cli.StringFlag{ Name: flagPort, Aliases: []string{"p"}, Value: defaultPort, } cliApiUrl := &cli.StringFlag{ Name: flagApiUrl, Aliases: []string{"u"}, Value: defaultApiUrl, } cliDirectory := &cli.StringFlag{ Name: flagDirectory, Aliases: []string{"d"}, Value: defaultServerDirectory, } cliDebug := &cli.StringFlag{ Name: flagDebug, } cliName := &cli.StringFlag{ Name: flagName, Aliases: []string{"n"}, Value: defaultName, } cliOrder := &cli.StringFlag{ Name: flagOrder, Aliases: []string{"o"}, Value: defaultOrder, } app := &cli.App{ Commands: []*cli.Command{ { Name: "serve", Aliases: []string{"s"}, Flags: []cli.Flag{cliListen, cliPort, cliApiUrl, cliDirectory, cliDebug}, Usage: "run http server to serve api and files", Action: func(ctx *cli.Context) error { s := web.NewWebServer( ctx.String(flagListen), ctx.Int64(flagPort), ctx.String(flagDirectory), ctx.String(flagApiUrl), ctx.Bool(flagDebug), ) s.Run() return nil }, }, { Name: "play", Usage: "run player", Aliases: []string{"p"}, Flags: []cli.Flag{cliApiUrl, cliName, cliOrder}, Action: func(ctx *cli.Context) error { s := shell.NewShell( ctx.String(flagName), ctx.String(flagOrder), ctx.String(flagDirectory), ctx.String(flagApiUrl), ) return s.Run("play", ctx.Args()) }, }, { Name: "download", Usage: "run downloder", Aliases: []string{"d"}, Flags: []cli.Flag{cliApiUrl, cliDirectory, cliName, cliOrder}, Action: func(ctx *cli.Context) error { s := shell.NewShell( ctx.String(flagName), ctx.String(flagOrder), ctx.String(flagDirectory), ctx.String(flagApiUrl), ) return s.Run("download", ctx.Args()) }, }, }, } if err := app.Run(os.Args); err != nil { log.Fatal(err) } }