mu-go/cmd/cli/main.go
Simon Vieille 7278ab1a28
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
refactor: move the web server in a specific function
2025-09-13 09:27:42 +02:00

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)
}
}