cmd is ok

This commit is contained in:
Sense T 2024-04-10 13:24:01 +08:00
parent 9465bb885d
commit 29f75938bb
6 changed files with 87 additions and 100 deletions

View File

@ -2,10 +2,7 @@ package config
import "github.com/urfave/cli/v2" import "github.com/urfave/cli/v2"
var Command *cli.Command var Command = &cli.Command{
func init() {
Command = &cli.Command{
Name: "config", Name: "config",
Usage: "config some settings", Usage: "config some settings",
Subcommands: []*cli.Command{ Subcommands: []*cli.Command{
@ -14,4 +11,3 @@ func init() {
DNSCommand, DNSCommand,
}, },
} }
}

View File

@ -7,16 +7,13 @@ import (
"github.com/urfave/cli/v2" "github.com/urfave/cli/v2"
) )
var DatabaseCommand *cli.Command var migrationCommand = &cli.Command{
func init() {
migrationCommand := &cli.Command{
Name: "migrate", Name: "migrate",
Usage: "migrate database", Usage: "migrate database",
Action: migrateDatabase, Action: migrateDatabase,
} }
DatabaseCommand = &cli.Command{ var DatabaseCommand = &cli.Command{
Name: "database", Name: "database",
Usage: "database administration", Usage: "database administration",
Aliases: []string{"db"}, Aliases: []string{"db"},
@ -24,7 +21,6 @@ func init() {
migrationCommand, migrationCommand,
}, },
} }
}
func migrateDatabase(c *cli.Context) error { func migrateDatabase(c *cli.Context) error {
if err := database.Connect(c.String("mysql-dsn")); err != nil { if err := database.Connect(c.String("mysql-dsn")); err != nil {

View File

@ -5,25 +5,22 @@ import (
"reCoreD-UI/database" "reCoreD-UI/database"
"github.com/urfave/cli/v2" "github.com/urfave/cli/v2"
"github.com/urfave/cli/v2/altsrc"
) )
var DNSCommand *cli.Command var DNSCommand = &cli.Command{
func init() {
DNSCommand = &cli.Command{
Name: "dns", Name: "dns",
Usage: "Config DNS Settings", Usage: "Config DNS Settings",
Flags: []cli.Flag{ Flags: []cli.Flag{
&cli.StringSliceFlag{ altsrc.NewStringSliceFlag(&cli.StringSliceFlag{
Name: "servers", Name: "servers",
Usage: "dns servers", Usage: "dns servers",
Aliases: []string{"s"}, Aliases: []string{"s"},
Required: true, Required: true,
}, }),
}, },
Action: setDNS, Action: setDNS,
} }
}
func setDNS(c *cli.Context) error { func setDNS(c *cli.Context) error {
if err := database.Connect(c.String("mysql-dsn")); err != nil { if err := database.Connect(c.String("mysql-dsn")); err != nil {

View File

@ -5,33 +5,30 @@ import (
"reCoreD-UI/database" "reCoreD-UI/database"
"github.com/urfave/cli/v2" "github.com/urfave/cli/v2"
"github.com/urfave/cli/v2/altsrc"
) )
var UserCommand *cli.Command var UserCommand = &cli.Command{
func init() {
UserCommand = &cli.Command{
Name: "user", Name: "user",
Usage: "set admin username and password", Usage: "set admin username and password",
Flags: []cli.Flag{ Flags: []cli.Flag{
&cli.StringFlag{ altsrc.NewStringFlag(&cli.StringFlag{
Name: "username", Name: "username",
Aliases: []string{"u"}, Aliases: []string{"u"},
Value: "amdin", Value: "amdin",
Usage: "admin username", Usage: "admin username",
EnvVars: []string{"RECORED_ADMIN_USERNAME"}, EnvVars: []string{"RECORED_ADMIN_USERNAME"},
}, }),
&cli.StringFlag{ altsrc.NewStringFlag(&cli.StringFlag{
Name: "passowrd", Name: "passowrd",
Aliases: []string{"p"}, Aliases: []string{"p"},
Required: true, Required: true,
Usage: "admin password", Usage: "admin password",
EnvVars: []string{"RECORED_ADMIN_PASSWORD"}, EnvVars: []string{"RECORED_ADMIN_PASSWORD"},
}, }),
}, },
Action: setUser, Action: setUser,
} }
}
func setUser(c *cli.Context) error { func setUser(c *cli.Context) error {
if err := database.Connect(c.String("mysql-dsn")); err != nil { if err := database.Connect(c.String("mysql-dsn")); err != nil {

View File

@ -4,34 +4,31 @@ import (
webserver "reCoreD-UI/server" webserver "reCoreD-UI/server"
"github.com/urfave/cli/v2" "github.com/urfave/cli/v2"
"github.com/urfave/cli/v2/altsrc"
) )
var Command *cli.Command var Command = &cli.Command{
func init() {
Command = &cli.Command{
Name: "server", Name: "server",
Usage: "run server", Usage: "run server",
Flags: []cli.Flag{ Flags: []cli.Flag{
&cli.StringFlag{ altsrc.NewStringFlag(&cli.StringFlag{
Name: "prefix", Name: "prefix",
Value: "/", Value: "/",
Usage: "web prefix", Usage: "web prefix",
}, }),
&cli.StringFlag{ altsrc.NewStringFlag(&cli.StringFlag{
Name: "listen", Name: "listen",
Value: "[::]", Value: "[::]",
Usage: "IP for listen at", Usage: "IP for listen at",
}, }),
&cli.IntFlag{ altsrc.NewIntFlag(&cli.IntFlag{
Name: "port", Name: "port",
Value: 8080, Value: 8080,
Usage: "Port for listen at", Usage: "Port for listen at",
}, }),
}, },
Action: runServer, Action: runServer,
} }
}
func runServer(c *cli.Context) error { func runServer(c *cli.Context) error {
server, err := webserver.NewServer(c) server, err := webserver.NewServer(c)

18
main.go
View File

@ -2,6 +2,8 @@ package main
import ( import (
"os" "os"
"reCoreD-UI/cmd/config"
"reCoreD-UI/cmd/server"
"github.com/sirupsen/logrus" "github.com/sirupsen/logrus"
"github.com/urfave/cli/v2" "github.com/urfave/cli/v2"
@ -18,17 +20,14 @@ func main() {
Name: "config", Name: "config",
Usage: "config yaml file", Usage: "config yaml file",
Aliases: []string{"c"}, Aliases: []string{"c"},
Value: "config.yaml",
EnvVars: []string{"RECORED_CONFIG_FILE"}, EnvVars: []string{"RECORED_CONFIG_FILE"},
}, },
altsrc.NewStringSliceFlag(&cli.StringSliceFlag{}), altsrc.NewStringFlag(&cli.StringFlag{
&cli.StringFlag{
Name: "mysql-dsn", Name: "mysql-dsn",
Usage: "mysql dsn", Usage: "mysql dsn",
Required: true,
EnvVars: []string{"RECORED_MYSQL_DSN"}, EnvVars: []string{"RECORED_MYSQL_DSN"},
}, }),
&cli.BoolFlag{ altsrc.NewBoolFlag(&cli.BoolFlag{
Name: "debug", Name: "debug",
Usage: "enable debug mode", Usage: "enable debug mode",
Value: false, Value: false,
@ -38,16 +37,21 @@ func main() {
} }
return nil return nil
}, },
}, }),
} }
app := &cli.App{ app := &cli.App{
Name: "reCoreD-UI", Name: "reCoreD-UI",
Usage: "Web UI for CoreDNS", Usage: "Web UI for CoreDNS",
UseShortOptionHandling: true,
Before: altsrc.InitInputSourceWithContext( Before: altsrc.InitInputSourceWithContext(
flags, altsrc.NewYamlSourceFromFlagFunc("config"), flags, altsrc.NewYamlSourceFromFlagFunc("config"),
), ),
Flags: flags, Flags: flags,
Commands: []*cli.Command{
server.Command,
config.Command,
},
} }
if err := app.Run(os.Args); err != nil { if err := app.Run(os.Args); err != nil {