From 8b6b2e4fef3ee7c9f3c8f5212c2cde7c94cb928a Mon Sep 17 00:00:00 2001 From: jholdstock Date: Sun, 19 May 2024 08:14:15 +0100 Subject: [PATCH] config: Deprecate --configfile. This removes the --configfile option from vspd. It introduced quite a few weird edge cases (and a fair bit of code to deal with them) but afaik nobody actually used it. Note that the --homedir option stays, so it is still possible to run vspd with config in a non-default location if required. --- cmd/vspd/config.go | 32 ++++++++++---------------------- cmd/vspd/main.go | 12 +++++++++--- harness.sh | 4 ++-- 3 files changed, 21 insertions(+), 27 deletions(-) diff --git a/cmd/vspd/config.go b/cmd/vspd/config.go index c4438a47..cec43e35 100644 --- a/cmd/vspd/config.go +++ b/cmd/vspd/config.go @@ -37,7 +37,6 @@ var ( defaultHomeDir = dcrutil.AppDataDir(appName, false) defaultConfigFilename = fmt.Sprintf("%s.conf", appName) defaultDBFilename = fmt.Sprintf("%s.db", appName) - defaultConfigFile = filepath.Join(defaultHomeDir, defaultConfigFilename) defaultDcrdHost = "127.0.0.1" defaultWalletHost = "127.0.0.1" defaultWebServerDebug = false @@ -74,7 +73,7 @@ type vspdConfig struct { ShowVersion bool `long:"version" no-ini:"true" description:"Display version information and exit."` FeeXPub string `long:"feexpub" no-ini:"true" description:"Cold wallet xpub used for collecting fees. Should be provided once to initialize a vspd database."` HomeDir string `long:"homedir" no-ini:"true" description:"Path to application home directory. Used for storing VSP database and logs."` - ConfigFile string `long:"configfile" no-ini:"true" description:"Path to configuration file."` + ConfigFile string `long:"configfile" no-ini:"true" description:"DEPRECATED: This behavior is no longer available and this option will be removed in a future version of the software."` logBackend *slog.Backend logLevel slog.Level @@ -181,7 +180,6 @@ func loadConfig() (*vspdConfig, error) { NetworkName: defaultNetworkName, VSPFee: defaultVSPFee, HomeDir: defaultHomeDir, - ConfigFile: defaultConfigFile, DcrdHost: defaultDcrdHost, WalletHosts: defaultWalletHost, WebServerDebug: defaultWebServerDebug, @@ -195,8 +193,8 @@ func loadConfig() (*vspdConfig, error) { os.Exit(0) } - // Pre-parse the command line options to see if an alternative config file, - // home dir, or the version flag were specified. + // Pre-parse the command line options to see if an alternative home dir or + // the version flag were specified. preCfg := cfg preParser := flags.NewParser(&preCfg, flags.None) @@ -217,20 +215,9 @@ func loadConfig() (*vspdConfig, error) { appName = strings.TrimSuffix(appName, filepath.Ext(appName)) usageMessage := fmt.Sprintf("Use %s -h to show usage", appName) - // Update the home directory if specified on CLI. Since the home - // directory is updated, other variables need to be updated to - // reflect the new changes. + // Update the home directory if specified on CLI. if preCfg.HomeDir != "" { - cfg.HomeDir = cleanAndExpandPath(cfg.HomeDir) - cfg.HomeDir, _ = filepath.Abs(preCfg.HomeDir) - - if preCfg.ConfigFile == defaultConfigFile { - defaultConfigFile = filepath.Join(cfg.HomeDir, defaultConfigFilename) - preCfg.ConfigFile = defaultConfigFile - cfg.ConfigFile = defaultConfigFile - } else { - cfg.ConfigFile = preCfg.ConfigFile - } + cfg.HomeDir = cleanAndExpandPath(preCfg.HomeDir) } // Create the home directory if it doesn't already exist. @@ -243,15 +230,16 @@ func loadConfig() (*vspdConfig, error) { // Create a default config file when one does not exist and the user did // not specify an override. - if preCfg.ConfigFile == defaultConfigFile && !fileExists(preCfg.ConfigFile) { + configFile := filepath.Join(cfg.HomeDir, defaultConfigFilename) + if !fileExists(configFile) { preIni := flags.NewIniParser(preParser) - err = preIni.WriteFile(preCfg.ConfigFile, + err = preIni.WriteFile(configFile, flags.IniIncludeComments|flags.IniIncludeDefaults) if err != nil { return nil, fmt.Errorf("error creating a default "+ "config file: %w", err) } - fmt.Printf("Config file with default values written to %s\n", defaultConfigFile) + fmt.Printf("Config file with default values written to %s\n", configFile) // File created, user now has to fill in values. Proceeding with the // default file just causes errors. @@ -261,7 +249,7 @@ func loadConfig() (*vspdConfig, error) { // Load additional config from file. parser := flags.NewParser(&cfg, flags.None) - err = flags.NewIniParser(parser).ParseFile(preCfg.ConfigFile) + err = flags.NewIniParser(parser).ParseFile(configFile) if err != nil { return nil, fmt.Errorf("error parsing config file: %w", err) } diff --git a/cmd/vspd/main.go b/cmd/vspd/main.go index 43033e07..68a5d9e1 100644 --- a/cmd/vspd/main.go +++ b/cmd/vspd/main.go @@ -1,4 +1,4 @@ -// Copyright (c) 2020-2023 The Decred developers +// Copyright (c) 2020-2024 The Decred developers // Use of this source code is governed by an ISC // license that can be found in the LICENSE file. @@ -55,13 +55,19 @@ func run() int { if cfg.network == &config.MainNet && version.IsPreRelease() { log.Warnf("") - log.Warnf("\tWARNING: This is a pre-release version of vspd which should not be used on mainnet.") + log.Warnf("\tWARNING: This is a pre-release version of vspd which should not be used on mainnet") log.Warnf("") } if cfg.VspClosed { log.Warnf("") - log.Warnf("\tWARNING: Config --vspclosed is set. This will prevent vspd from accepting new tickets.") + log.Warnf("\tWARNING: Config --vspclosed is set. This will prevent vspd from accepting new tickets") + log.Warnf("") + } + + if cfg.ConfigFile != "" { + log.Warnf("") + log.Warnf("\tWARNING: Config --configfile is set. This is a deprecated option which has no effect and will be removed in a future release") log.Warnf("") } diff --git a/harness.sh b/harness.sh index ce437a03..579e48d9 100755 --- a/harness.sh +++ b/harness.sh @@ -170,10 +170,10 @@ EOF tmux new-window -t $TMUX_SESSION -n "vspd" echo "Creating vspd database" -tmux send-keys "vspd --configfile=${HARNESS_ROOT}/vspd/vspd.conf --homedir=${HARNESS_ROOT}/vspd --feexpub=${VSPD_FEE_XPUB}" C-m +tmux send-keys "vspd --homedir=${HARNESS_ROOT}/vspd --feexpub=${VSPD_FEE_XPUB}" C-m sleep 3 # wait for database creation and ensure dcrwallet rpc listeners are started echo "Starting vspd" -tmux send-keys "vspd --configfile=${HARNESS_ROOT}/vspd/vspd.conf --homedir=${HARNESS_ROOT}/vspd" C-m +tmux send-keys "vspd --homedir=${HARNESS_ROOT}/vspd" C-m ################################################# # All done - attach to tmux session.