blob: bb4136a5964d86db0edb335c984ca732c47183b2 [file] [log] [blame]
package commands
import (
"github.com/giolekva/pcloud/core/kg/app"
"github.com/giolekva/pcloud/core/kg/log"
"github.com/giolekva/pcloud/core/kg/model"
"github.com/giolekva/pcloud/core/kg/server"
"github.com/giolekva/pcloud/core/kg/store/memory"
"github.com/spf13/cobra"
)
// Command is an abstraction of the cobra Command
type Command = cobra.Command
// Run function starts the application
func Run(args []string) error {
rootCmd.SetArgs(args)
return rootCmd.Execute()
}
// rootCmd is a command to run the server.
var rootCmd = &Command{
Use: "server",
Short: "An example of the basic server",
RunE: serverCmdF,
}
func serverCmdF(command *cobra.Command, args []string) error {
logger := log.NewLogger(&log.LoggerConfiguration{
EnableConsole: true,
ConsoleJSON: true,
ConsoleLevel: "debug",
EnableFile: true,
FileJSON: true,
FileLevel: "debug",
FileLocation: "server.log",
})
config := model.NewConfig()
st := memory.New()
a := app.NewApp(st, config, logger)
grpcServer := server.NewGRPCServer(logger, config, a)
httpServer := server.NewHTTPServer(logger, config, a)
servers := server.New(logger)
servers.AddServers(grpcServer)
servers.AddServers(httpServer)
servers.Run()
return nil
}