Add CLI structure
This commit is contained in:
parent
7f3c5f7c1b
commit
40ae6b666f
80 changed files with 13313 additions and 35 deletions
20
server/cmd/craban/commands/root.go
Normal file
20
server/cmd/craban/commands/root.go
Normal file
|
@ -0,0 +1,20 @@
|
|||
package commands
|
||||
|
||||
import (
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
func RootCmd() *cobra.Command {
|
||||
cmd := &cobra.Command{
|
||||
Use: "craban",
|
||||
Short: "Webapp to play RPG games and manage their assets",
|
||||
}
|
||||
|
||||
cmd.PersistentFlags().StringP("config", "c", "craban.yml", "path to the configuration file")
|
||||
|
||||
cmd.AddCommand(
|
||||
ServeCmd(),
|
||||
)
|
||||
|
||||
return cmd
|
||||
}
|
50
server/cmd/craban/commands/serve.go
Normal file
50
server/cmd/craban/commands/serve.go
Normal file
|
@ -0,0 +1,50 @@
|
|||
package commands
|
||||
|
||||
import (
|
||||
"os"
|
||||
"os/signal"
|
||||
|
||||
"git.ctrlz.es/mgdelacroix/craban/server"
|
||||
|
||||
"github.com/rs/zerolog/log"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
func ServeCmd() *cobra.Command {
|
||||
return &cobra.Command{
|
||||
Use: "serve",
|
||||
Short: "Starts the craban server",
|
||||
Run: serveCmdF,
|
||||
}
|
||||
}
|
||||
|
||||
func serveCmdF(cmd *cobra.Command, _ []string) {
|
||||
configPath, _ := cmd.Flags().GetString("config")
|
||||
|
||||
srv, err := server.NewServerWithConfigPath(configPath)
|
||||
if err != nil {
|
||||
log.Error().Err(err).Msg("cannot create server")
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
c := make(chan os.Signal, 1)
|
||||
signal.Notify(c, os.Interrupt)
|
||||
closed := make(chan bool, 1)
|
||||
|
||||
go func() {
|
||||
log.Info().Msg("Starting craban server")
|
||||
if err := srv.Start(); err != nil {
|
||||
log.Error().Err(err).Msg("error running server")
|
||||
os.Exit(1)
|
||||
}
|
||||
closed <- true
|
||||
}()
|
||||
|
||||
s := <-c
|
||||
log.Info().Str("signal", s.String()).Msg("got signal, exiting")
|
||||
if err := srv.Close(); err != nil {
|
||||
log.Error().Err(err).Msg("error closing server")
|
||||
os.Exit(1)
|
||||
}
|
||||
<-closed
|
||||
}
|
|
@ -1,43 +1,13 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"os"
|
||||
"os/signal"
|
||||
|
||||
"git.ctrlz.es/mgdelacroix/craban/server"
|
||||
"git.ctrlz.es/mgdelacroix/craban/cmd/craban/commands"
|
||||
|
||||
"github.com/rs/zerolog/log"
|
||||
)
|
||||
|
||||
func main() {
|
||||
configFlag := flag.String("config", "craban.yml", "the configuration path")
|
||||
flag.Parse()
|
||||
|
||||
srv, err := server.NewServerWithConfigPath(*configFlag)
|
||||
if err != nil {
|
||||
log.Error().Err(err).Msg("cannot create server")
|
||||
os.Exit(1)
|
||||
if err := commands.RootCmd().Execute(); err != nil {
|
||||
log.Error().Err(err).Msg("command failed to execute")
|
||||
}
|
||||
|
||||
c := make(chan os.Signal, 1)
|
||||
signal.Notify(c, os.Interrupt)
|
||||
closed := make(chan bool, 1)
|
||||
|
||||
go func() {
|
||||
log.Info().Msg("Starting craban server")
|
||||
if err := srv.Start(); err != nil {
|
||||
log.Error().Err(err).Msg("error running server")
|
||||
os.Exit(1)
|
||||
}
|
||||
closed <- true
|
||||
}()
|
||||
|
||||
s := <-c
|
||||
log.Info().Str("signal", s.String()).Msg("got signal, exiting")
|
||||
if err := srv.Close(); err != nil {
|
||||
log.Error().Err(err).Msg("error closing server")
|
||||
os.Exit(1)
|
||||
}
|
||||
<-closed
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue