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  } | 
