mirror of
https://github.com/superseriousbusiness/gotosocial.git
synced 2025-11-16 07:27:34 -06:00
Implement Cobra CLI tooling, Viper config tooling (#336)
* start pulling out + replacing urfave and config * replace many many instances of config * move more stuff => viper * properly remove urfave * move some flags to root command * add testrig commands to root * alias config file keys * start adding cli parsing tests * reorder viper init * remove config path alias * fmt * change config file keys to non-nested * we're more or less in business now * tidy up the common func * go fmt * get tests passing again * add note about the cliparsing tests * reorganize * update docs with changes * structure cmd dir better * rename + move some files around * fix dangling comma
This commit is contained in:
parent
182b4eea73
commit
0884f89431
487 changed files with 46667 additions and 8831 deletions
|
|
@ -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,
|
||||
}
|
||||
|
||||
if err := app.Run(os.Args); err != nil {
|
||||
logrus.Fatal(err)
|
||||
// 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)
|
||||
}
|
||||
|
||||
// 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)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue