summaryrefslogtreecommitdiff
path: root/cmd/gotosocial/main.go
diff options
context:
space:
mode:
Diffstat (limited to 'cmd/gotosocial/main.go')
-rw-r--r--cmd/gotosocial/main.go49
1 files changed, 35 insertions, 14 deletions
diff --git a/cmd/gotosocial/main.go b/cmd/gotosocial/main.go
index 87c44487c..a0b8b1046 100644
--- a/cmd/gotosocial/main.go
+++ b/cmd/gotosocial/main.go
@@ -19,38 +19,59 @@
package main
import (
- "os"
-
"github.com/sirupsen/logrus"
+ "github.com/spf13/cobra"
+ "github.com/spf13/viper"
+ "github.com/superseriousbusiness/gotosocial/cmd/gotosocial/flag"
_ "github.com/superseriousbusiness/gotosocial/docs"
- "github.com/urfave/cli/v2"
+ "github.com/superseriousbusiness/gotosocial/internal/config"
)
-// Version is the software version of GtS being used
+// Version is the software version of GtS being used.
var Version string
-// Commit is the git commit of GtS being used
+// Commit is the git commit of GtS being used.
var Commit string
//go:generate swagger generate spec
func main() {
var v string
- if Commit == "" {
+ if len(Commit) < 7 {
v = Version
} else {
v = Version + " " + Commit[:7]
}
- flagsSlice := getFlags()
- app := &cli.App{
- Version: v,
- Usage: "a fediverse social media server",
- Flags: flagsSlice,
- Commands: getCommands(flagsSlice),
+ // override software version in viper store
+ viper.Set(config.Keys.SoftwareVersion, v)
+
+ // instantiate the root command
+ rootCmd := &cobra.Command{
+ Use: "gotosocial",
+ Short: "GoToSocial - a fediverse social media server",
+ Long: "GoToSocial - a fediverse social media server\n\nFor help, see: https://docs.gotosocial.org.\n\nCode: https://github.com/superseriousbusiness/gotosocial",
+ Version: v,
+ SilenceErrors: true,
+ SilenceUsage: true,
+ }
+
+ // attach global flags to the root command so that they can be accessed from any subcommand
+ flag.Global(rootCmd, config.Defaults)
+
+ // bind the config-path flag to viper early so that we can call it in the pre-run of following commands
+ if err := viper.BindPFlag(config.Keys.ConfigPath, rootCmd.PersistentFlags().Lookup(config.Keys.ConfigPath)); err != nil {
+ logrus.Fatalf("error attaching config flag: %s", err)
}
- if err := app.Run(os.Args); err != nil {
- logrus.Fatal(err)
+ // add subcommands
+ rootCmd.AddCommand(serverCommands())
+ rootCmd.AddCommand(testrigCommands())
+ rootCmd.AddCommand(debugCommands())
+ rootCmd.AddCommand(adminCommands())
+
+ // run
+ if err := rootCmd.Execute(); err != nil {
+ logrus.Fatalf("error executing command: %s", err)
}
}