Add --sections flag to app.go and pass it to setup.go

Add --sections flag to app.go according to T657, parse them
into a string array (check for invalid arguments and abort)
and pass them to Configure(). For now Configure() doesn't do
anything with them yet.
This commit is contained in:
Michael Demetriou 2019-06-20 23:14:36 +03:00
parent 9570388d1d
commit 1d5c396327
2 changed files with 16 additions and 2 deletions

16
app.go
View file

@ -198,6 +198,9 @@ func Serve() {
// Setup actions // Setup actions
createConfig := flag.Bool("create-config", false, "Creates a basic configuration and exits") createConfig := flag.Bool("create-config", false, "Creates a basic configuration and exits")
doConfig := flag.Bool("config", false, "Run the configuration process") doConfig := flag.Bool("config", false, "Run the configuration process")
configSections := flag.String("sections", "server db app", "Which sections of the configuration to go through (requires --config), " +
"valid values are any combination of 'server', 'db' and 'app' " +
"example: writefreely --config --sections \"db app\"")
genKeys := flag.Bool("gen-keys", false, "Generate encryption and authentication keys") genKeys := flag.Bool("gen-keys", false, "Generate encryption and authentication keys")
createSchema := flag.Bool("init-db", false, "Initialize app database") createSchema := flag.Bool("init-db", false, "Initialize app database")
migrate := flag.Bool("migrate", false, "Migrate the database") migrate := flag.Bool("migrate", false, "Migrate the database")
@ -229,7 +232,18 @@ func Serve() {
} }
os.Exit(0) os.Exit(0)
} else if *doConfig { } else if *doConfig {
d, err := config.Configure(app.cfgFile) if *configSections == "" {
*configSections = "server db app"
}
configSectionsArray := strings.Split(*configSections, " ")
// let's check there aren't any garbage in the list
for _, element := range configSectionsArray {
if element != "server" && element != "db" && element != "app" {
log.Error("Invalid argument to --sections. Valid arguments are only \"server\", \"db\" and \"app\"")
}
}
d, err := config.Configure(app.cfgFile, configSectionsArray)
if err != nil { if err != nil {
log.Error("Unable to configure: %v", err) log.Error("Unable to configure: %v", err)
os.Exit(1) os.Exit(1)

View file

@ -24,7 +24,7 @@ type SetupData struct {
Config *Config Config *Config
} }
func Configure(fname string) (*SetupData, error) { func Configure(fname string, configSections []string) (*SetupData, error) {
data := &SetupData{} data := &SetupData{}
var err error var err error
if fname == "" { if fname == "" {