133 lines
2.7 KiB
Go
133 lines
2.7 KiB
Go
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)
|
|
}
|
|
}
|