diff options
Diffstat (limited to 'cmd')
-rw-r--r-- | cmd/gotosocial/main.go | 63 | ||||
-rw-r--r-- | cmd/server/server.go (renamed from cmd/server/main.go) | 28 |
2 files changed, 87 insertions, 4 deletions
diff --git a/cmd/gotosocial/main.go b/cmd/gotosocial/main.go new file mode 100644 index 000000000..78c7002a2 --- /dev/null +++ b/cmd/gotosocial/main.go @@ -0,0 +1,63 @@ +/* + GoToSocial + Copyright (C) 2021 GoToSocial Authors admin@gotosocial.org + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +package main + +import ( + "os" + + "github.com/gotosocial/gotosocial/cmd/server" + "github.com/sirupsen/logrus" + + "github.com/urfave/cli/v2" +) + +func main() { + app := &cli.App{ + Flags: []cli.Flag{ + &cli.StringFlag{ + Name: "config", + Aliases: []string{"c"}, + Usage: "Load configuration from `FILE`", + }, + &cli.StringFlag{ + Name: "log-level", + Usage: "Log level to run at: debug, info, warn, fatal", + Value: "info", + }, + }, + Commands: []*cli.Command{ + { + Name: "server", + Usage: "gotosocial server-related tasks", + Subcommands: []*cli.Command{ + { + Name: "start", + Usage: "start the gotosocial server", + Action: server.Run, + }, + }, + }, + }, + } + + err := app.Run(os.Args) + if err != nil { + logrus.Fatal(err) + } +} diff --git a/cmd/server/main.go b/cmd/server/server.go index 7a509e96f..4f2969993 100644 --- a/cmd/server/main.go +++ b/cmd/server/server.go @@ -16,20 +16,39 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. */ -package main +package server import ( "context" + "fmt" "os" "os/signal" "syscall" "github.com/gotosocial/gotosocial/internal/db" "github.com/sirupsen/logrus" + "github.com/urfave/cli/v2" ) -func main() { +// getLog will try to set the logrus log level to the +// desired level specified by the user with the --log-level flag +func getLog(c *cli.Context) (*logrus.Logger, error) { log := logrus.New() + logLevel, err := logrus.ParseLevel(c.String("log-level")) + if err != nil { + return nil, err + } + log.SetLevel(logLevel) + return log, nil +} + +// Run starts the gotosocial server +func Run(c *cli.Context) error { + log, err := getLog(c) + if err != nil { + return fmt.Errorf("error creating logger: %s", err) + } + ctx := context.Background() dbConfig := &db.Config{ Type: "POSTGRES", @@ -42,7 +61,7 @@ func main() { } dbService, err := db.NewService(ctx, dbConfig, log) if err != nil { - panic(err) + return err } // catch shutdown signals from the operating system @@ -53,8 +72,9 @@ func main() { // close down all running services in order if err := dbService.Stop(ctx); err != nil { - log.Errorf("error closing dbservice: %s", err) + return fmt.Errorf("error closing dbservice: %s", err) } log.Info("done! exiting...") + return nil } |