+ fmt.Println(wordwrap.WrapString(" This quick configuration process will generate the application's config file, "+FileName+".\n\n It validates your input along the way, so you can be sure any future errors aren't caused by a bad configuration. If you'd rather configure your server manually, instead run: writefreely --create-config and edit that file.", 75))
+ fmt.Println()
+
+ title(" Server setup ")
+ fmt.Println()
+
+ prompt := promptui.Prompt{
+ Label: "Local port",
+ Validate: validatePort,
+ Default: fmt.Sprintf("%d", c.Server.Port),
+ }
+ port, err := prompt.Run()
+ if err != nil {
+ return err
+ }
+ c.Server.Port, _ = strconv.Atoi(port) // Ignore error, as we've already validated number
+
+ prompt = promptui.Prompt{
+ Label: "Public-facing host",
+ Validate: validateDomain,
+ Default: c.Server.Host,
+ }
+ c.Server.Host, err = prompt.Run()
+ if err != nil {
+ return err
+ }
+
+ fmt.Println()
+ title(" Database setup ")
+ fmt.Println()
+
+ prompt = promptui.Prompt{
+ Label: "Username",
+ Validate: validateNonEmpty,
+ Default: c.Database.User,
+ }
+ c.Database.User, err = prompt.Run()
+ if err != nil {
+ return err
+ }
+
+ prompt = promptui.Prompt{
+ Label: "Password",
+ Validate: validateNonEmpty,
+ Default: c.Database.Password,
+ Mask: '*',
+ }
+ c.Database.Password, err = prompt.Run()
+ if err != nil {
+ return err
+ }
+
+ prompt = promptui.Prompt{
+ Label: "Database name",
+ Validate: validateNonEmpty,
+ Default: c.Database.Database,
+ }
+ c.Database.Database, err = prompt.Run()
+ if err != nil {
+ return err
+ }
+
+ prompt = promptui.Prompt{
+ Label: "Host",
+ Validate: validateNonEmpty,
+ Default: c.Database.Host,
+ }
+ c.Database.Host, err = prompt.Run()
+ if err != nil {
+ return err
+ }
+
+ prompt = promptui.Prompt{
+ Label: "Port",
+ Validate: validatePort,
+ Default: fmt.Sprintf("%d", c.Database.Port),
+ }
+ dbPort, err := prompt.Run()
+ if err != nil {
+ return err
+ }
+ c.Database.Port, _ = strconv.Atoi(dbPort) // Ignore error, as we've already validated number