refactor: reuse logic for config init and set

This commit is contained in:
Henrique Dias
2025-11-17 09:16:54 +01:00
parent 8c5dc7641e
commit 89be0b1873
3 changed files with 132 additions and 229 deletions

View File

@@ -5,7 +5,6 @@ import (
"github.com/spf13/cobra"
"github.com/filebrowser/filebrowser/v2/auth"
"github.com/filebrowser/filebrowser/v2/settings"
)
@@ -26,140 +25,17 @@ override the options.`,
RunE: python(func(cmd *cobra.Command, _ []string, d *pythonData) error {
flags := cmd.Flags()
// General Settings
s := &settings.Settings{
Key: generateKey(),
}
err := getUserDefaults(flags, &s.Defaults, true)
if err != nil {
return err
}
s.Signup, err = flags.GetBool("signup")
if err != nil {
return err
}
s.HideLoginButton, err = flags.GetBool("hideLoginButton")
if err != nil {
return err
}
s.CreateUserDir, err = flags.GetBool("createUserDir")
if err != nil {
return err
}
s.MinimumPasswordLength, err = flags.GetUint("minimumPasswordLength")
if err != nil {
return err
}
shell, err := flags.GetString("shell")
if err != nil {
return err
}
s.Shell = convertCmdStrToCmdArray(shell)
s.FileMode, err = getAndParseFileMode(flags, "fileMode")
if err != nil {
return err
}
s.DirMode, err = getAndParseFileMode(flags, "dirMode")
if err != nil {
return err
}
s.Branding.Name, err = flags.GetString("branding.name")
if err != nil {
return err
}
s.Branding.DisableExternal, err = flags.GetBool("branding.disableExternal")
if err != nil {
return err
}
s.Branding.DisableUsedPercentage, err = flags.GetBool("branding.disableUsedPercentage")
if err != nil {
return err
}
s.Branding.Theme, err = flags.GetString("branding.themes")
if err != nil {
return err
}
s.Branding.Files, err = flags.GetString("branding.files")
if err != nil {
return err
}
s.Tus.ChunkSize, err = flags.GetUint64("tus.chunkSize")
if err != nil {
return err
}
s.Tus.RetryCount, err = flags.GetUint16("tus.retryCount")
if err != nil {
return err
}
var auther auth.Auther
s.AuthMethod, auther, err = getAuthentication(flags)
if err != nil {
return err
}
// Server Settings
// Initialize config
s := &settings.Settings{Key: generateKey()}
ser := &settings.Server{}
ser.Address, err = flags.GetString("address")
if err != nil {
return err
}
ser.Socket, err = flags.GetString("socket")
if err != nil {
return err
}
ser.Root, err = flags.GetString("root")
if err != nil {
return err
}
ser.BaseURL, err = flags.GetString("baseURL")
if err != nil {
return err
}
ser.TLSKey, err = flags.GetString("key")
if err != nil {
return err
}
ser.TLSCert, err = flags.GetString("cert")
if err != nil {
return err
}
ser.Port, err = flags.GetString("port")
if err != nil {
return err
}
ser.Log, err = flags.GetString("log")
if err != nil {
return err
}
ser.TokenExpirationTime, err = flags.GetString("tokenExpirationTime")
// Fill config with options
auther, err := getSettings(flags, s, ser, nil, true)
if err != nil {
return err
}
// Save updated config
err = d.store.Settings.Save(s)
if err != nil {
return err