Compare commits
6 commits
77ff668fb0
...
b38ad33610
| Author | SHA1 | Date | |
|---|---|---|---|
|
b38ad33610 |
|||
|
bfde701922 |
|||
|
e106e1989d |
|||
|
7278ab1a28 |
|||
|
f80fdc6e53 |
|||
|
8f8dfaf514 |
4 changed files with 111 additions and 93 deletions
|
|
@ -1,11 +1,11 @@
|
|||
steps:
|
||||
vendor:
|
||||
image: golang:1.22
|
||||
image: golang:1.24
|
||||
commands:
|
||||
- go mod vendor
|
||||
|
||||
build:
|
||||
image: golang:1.22
|
||||
image: golang:1.24
|
||||
commands:
|
||||
- make
|
||||
|
||||
|
|
|
|||
142
cmd/cli/main.go
142
cmd/cli/main.go
|
|
@ -1,20 +1,15 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log"
|
||||
"os"
|
||||
"strings"
|
||||
|
||||
"github.com/labstack/echo/v4"
|
||||
"github.com/labstack/echo/v4/middleware"
|
||||
"github.com/urfave/cli/v2"
|
||||
"gitnet.fr/deblan/mu-go/internal/shell"
|
||||
"gitnet.fr/deblan/mu-go/internal/web"
|
||||
)
|
||||
|
||||
var (
|
||||
Commands = []*cli.Command{}
|
||||
version = "dev"
|
||||
defaultListen = "127.0.0.1"
|
||||
defaultPort = "4000"
|
||||
|
|
@ -36,59 +31,63 @@ var (
|
|||
)
|
||||
|
||||
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{
|
||||
&cli.StringFlag{
|
||||
Name: flagListen,
|
||||
Aliases: []string{"l"},
|
||||
Value: defaultListen,
|
||||
},
|
||||
&cli.StringFlag{
|
||||
Name: flagPort,
|
||||
Aliases: []string{"p"},
|
||||
Value: defaultPort,
|
||||
},
|
||||
&cli.StringFlag{
|
||||
Name: flagApiUrl,
|
||||
Aliases: []string{"u"},
|
||||
Value: defaultApiUrl,
|
||||
},
|
||||
&cli.StringFlag{
|
||||
Name: flagDirectory,
|
||||
Aliases: []string{"d"},
|
||||
Value: defaultServerDirectory,
|
||||
},
|
||||
&cli.StringFlag{
|
||||
Name: flagDebug,
|
||||
},
|
||||
},
|
||||
Usage: "run http server to serve api and files",
|
||||
Flags: []cli.Flag{cliListen, cliPort, cliApiUrl, cliDirectory, cliDebug},
|
||||
Usage: "run http server to serve api and files",
|
||||
Action: func(ctx *cli.Context) error {
|
||||
listen := ctx.String("listen")
|
||||
port := ctx.Int64("port")
|
||||
directory := strings.TrimSuffix(ctx.String(flagDirectory), "/")
|
||||
url := strings.TrimSuffix(ctx.String(flagApiUrl), "/")
|
||||
s := web.NewWebServer(
|
||||
ctx.String(flagListen),
|
||||
ctx.Int64(flagPort),
|
||||
ctx.String(flagDirectory),
|
||||
ctx.String(flagApiUrl),
|
||||
ctx.Bool(flagDebug),
|
||||
)
|
||||
|
||||
e := echo.New()
|
||||
|
||||
if ctx.Bool(flagDebug) {
|
||||
e.Use(middleware.Logger())
|
||||
e.Use(middleware.Recover())
|
||||
}
|
||||
|
||||
e.GET("/api/list", func(ctx echo.Context) error {
|
||||
return web.List(ctx, directory, url)
|
||||
})
|
||||
|
||||
e.GET("/api/stream", func(ctx echo.Context) error {
|
||||
return web.Stream(ctx, directory, url)
|
||||
})
|
||||
|
||||
e.Logger.Fatal(e.Start(fmt.Sprintf("%s:%d", listen, port)))
|
||||
s.Run()
|
||||
|
||||
return nil
|
||||
},
|
||||
|
|
@ -97,23 +96,7 @@ func main() {
|
|||
Name: "play",
|
||||
Usage: "run player",
|
||||
Aliases: []string{"p"},
|
||||
Flags: []cli.Flag{
|
||||
&cli.StringFlag{
|
||||
Name: flagApiUrl,
|
||||
Aliases: []string{"u"},
|
||||
Value: defaultApiUrl,
|
||||
},
|
||||
&cli.StringFlag{
|
||||
Name: flagName,
|
||||
Aliases: []string{"n"},
|
||||
Value: defaultName,
|
||||
},
|
||||
&cli.StringFlag{
|
||||
Name: flagOrder,
|
||||
Aliases: []string{"o"},
|
||||
Value: defaultOrder,
|
||||
},
|
||||
},
|
||||
Flags: []cli.Flag{cliApiUrl, cliName, cliOrder},
|
||||
Action: func(ctx *cli.Context) error {
|
||||
s := shell.NewShell(
|
||||
ctx.String(flagName),
|
||||
|
|
@ -129,28 +112,7 @@ func main() {
|
|||
Name: "download",
|
||||
Usage: "run downloder",
|
||||
Aliases: []string{"d"},
|
||||
Flags: []cli.Flag{
|
||||
&cli.StringFlag{
|
||||
Name: flagApiUrl,
|
||||
Aliases: []string{"u"},
|
||||
Value: defaultApiUrl,
|
||||
},
|
||||
&cli.StringFlag{
|
||||
Name: flagDirectory,
|
||||
Aliases: []string{"d"},
|
||||
Value: defaultDownloadDirectory,
|
||||
},
|
||||
&cli.StringFlag{
|
||||
Name: flagName,
|
||||
Aliases: []string{"n"},
|
||||
Value: defaultName,
|
||||
},
|
||||
&cli.StringFlag{
|
||||
Name: flagOrder,
|
||||
Aliases: []string{"o"},
|
||||
Value: defaultOrder,
|
||||
},
|
||||
},
|
||||
Flags: []cli.Flag{cliApiUrl, cliDirectory, cliName, cliOrder},
|
||||
Action: func(ctx *cli.Context) error {
|
||||
s := shell.NewShell(
|
||||
ctx.String(flagName),
|
||||
|
|
|
|||
|
|
@ -52,7 +52,17 @@ func (s *Shell) Run(action string, args cli.Args) error {
|
|||
s.Order,
|
||||
)
|
||||
|
||||
input := strings.Trim(args.Get(0), " ")
|
||||
var inputs []string
|
||||
|
||||
for i := 0; i < args.Len(); i++ {
|
||||
arg := strings.Trim(args.Get(i), " \t\t\n")
|
||||
|
||||
if arg != "" {
|
||||
inputs = append(inputs, arg)
|
||||
}
|
||||
}
|
||||
|
||||
input := strings.Join(inputs, " ")
|
||||
|
||||
switch input {
|
||||
case "":
|
||||
|
|
|
|||
46
internal/web/server.go
Normal file
46
internal/web/server.go
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
package web
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"github.com/labstack/echo/v4"
|
||||
"github.com/labstack/echo/v4/middleware"
|
||||
)
|
||||
|
||||
type WebServer struct {
|
||||
Listen string
|
||||
Port int64
|
||||
Directory string
|
||||
Url string
|
||||
Debug bool
|
||||
}
|
||||
|
||||
func NewWebServer(listen string, port int64, directory, url string, debug bool) *WebServer {
|
||||
return &WebServer{
|
||||
Listen: listen,
|
||||
Port: port,
|
||||
Directory: strings.TrimSuffix(directory, "/"),
|
||||
Url: strings.TrimSuffix(url, "/"),
|
||||
Debug: debug,
|
||||
}
|
||||
}
|
||||
|
||||
func (w *WebServer) Run() {
|
||||
e := echo.New()
|
||||
|
||||
if w.Debug {
|
||||
e.Use(middleware.Logger())
|
||||
e.Use(middleware.Recover())
|
||||
}
|
||||
|
||||
e.GET("/api/list", func(ctx echo.Context) error {
|
||||
return List(ctx, w.Directory, w.Url)
|
||||
})
|
||||
|
||||
e.GET("/api/stream", func(ctx echo.Context) error {
|
||||
return Stream(ctx, w.Directory, w.Url)
|
||||
})
|
||||
|
||||
e.Logger.Fatal(e.Start(fmt.Sprintf("%s:%d", w.Listen, w.Port)))
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue