Files
filebrowser/cmd/config_set.go
T

121 lines
3.0 KiB
Go
Raw Normal View History

2019-01-05 22:44:33 +00:00
package cmd
import (
"github.com/spf13/cobra"
"github.com/spf13/pflag"
)
func init() {
configCmd.AddCommand(configSetCmd)
2019-01-08 10:50:37 +00:00
addConfigFlags(configSetCmd.Flags())
2019-01-05 22:44:33 +00:00
}
var configSetCmd = &cobra.Command{
Use: "set",
Short: "Updates the configuration",
Long: `Updates the configuration. Set the flags for the options
2019-01-08 16:37:02 +00:00
you want to change. Other options will remain unchanged.`,
2019-01-05 22:44:33 +00:00
Args: cobra.NoArgs,
RunE: python(func(cmd *cobra.Command, _ []string, d *pythonData) error {
2019-01-08 14:07:55 +00:00
flags := cmd.Flags()
set, err := d.store.Settings.Get()
if err != nil {
return err
}
2019-01-08 14:07:55 +00:00
ser, err := d.store.Settings.GetServer()
if err != nil {
return err
}
2019-01-05 22:44:33 +00:00
hasAuth := false
2019-01-08 14:07:55 +00:00
flags.Visit(func(flag *pflag.Flag) {
if err != nil {
return
}
2019-01-05 22:44:33 +00:00
switch flag.Name {
2019-01-08 14:07:55 +00:00
case "baseurl":
ser.BaseURL, err = getString(flags, flag.Name)
2019-01-08 14:07:55 +00:00
case "root":
ser.Root, err = getString(flags, flag.Name)
2019-05-17 11:48:06 +01:00
case "socket":
ser.Socket, err = getString(flags, flag.Name)
2019-01-08 14:07:55 +00:00
case "cert":
ser.TLSCert, err = getString(flags, flag.Name)
2019-01-08 14:07:55 +00:00
case "key":
ser.TLSKey, err = getString(flags, flag.Name)
2019-01-08 14:07:55 +00:00
case "address":
ser.Address, err = getString(flags, flag.Name)
2019-01-08 14:07:55 +00:00
case "port":
ser.Port, err = getString(flags, flag.Name)
2019-01-08 14:07:55 +00:00
case "log":
ser.Log, err = getString(flags, flag.Name)
2019-01-05 22:44:33 +00:00
case "signup":
set.Signup, err = getBool(flags, flag.Name)
2019-01-05 22:44:33 +00:00
case "auth.method":
hasAuth = true
case "shell":
var shell string
shell, err = getString(flags, flag.Name)
set.Shell = convertCmdStrToCmdArray(shell)
case "create-user-dir":
set.CreateUserDir, err = getBool(flags, flag.Name)
case "minimum-password-length":
set.MinimumPasswordLength, err = getUint(flags, flag.Name)
2019-01-05 22:44:33 +00:00
case "branding.name":
set.Branding.Name, err = getString(flags, flag.Name)
case "branding.color":
set.Branding.Color, err = getString(flags, flag.Name)
2023-12-28 10:52:40 +02:00
case "branding.theme":
set.Branding.Theme, err = getString(flags, flag.Name)
2019-01-05 22:44:33 +00:00
case "branding.disableExternal":
set.Branding.DisableExternal, err = getBool(flags, flag.Name)
case "branding.disableUsedPercentage":
set.Branding.DisableUsedPercentage, err = getBool(flags, flag.Name)
2019-01-05 22:44:33 +00:00
case "branding.files":
set.Branding.Files, err = getString(flags, flag.Name)
case "file-mode":
set.FileMode, err = getMode(flags, flag.Name)
case "dir-mode":
set.DirMode, err = getMode(flags, flag.Name)
2019-01-05 22:44:33 +00:00
}
})
if err != nil {
return err
}
err = getUserDefaults(flags, &set.Defaults, false)
if err != nil {
return err
}
2019-01-05 22:44:33 +00:00
2019-05-20 04:55:36 +03:00
// read the defaults
auther, err := d.store.Auth.Get(set.AuthMethod)
if err != nil {
return err
}
2019-05-20 04:55:36 +03:00
// check if there are new flags for existing auth method
set.AuthMethod, auther, err = getAuthentication(flags, hasAuth, set, auther)
if err != nil {
return err
}
2019-01-05 22:44:33 +00:00
2019-05-20 04:55:36 +03:00
err = d.store.Auth.Save(auther)
if err != nil {
return err
}
2019-01-08 14:07:55 +00:00
err = d.store.Settings.Save(set)
if err != nil {
return err
}
2019-01-08 14:07:55 +00:00
err = d.store.Settings.SaveServer(ser)
if err != nil {
return err
}
return printSettings(ser, set, auther)
2019-01-07 20:24:23 +00:00
}, pythonConfig{}),
2019-01-05 22:44:33 +00:00
}