From d32e4a9fe0adecd90cfbdc372891bb210814d329 Mon Sep 17 00:00:00 2001 From: Alessio Treglia Date: Tue, 4 Dec 2018 13:17:45 +0000 Subject: [PATCH] Merge PR #2972: Fix gaiacli config and make it non-interactive only * Fix gaiacli config and make it non-interactive only Closes: #2734 * Update cli tests * Remove --list, by default and with no args print config * Small improvements * Warn user when file doesn't exist * Fix integration tests --- Gopkg.lock | 9 -- Gopkg.toml | 4 - PENDING.md | 1 + client/config.go | 212 +++++++++++++++++++--------------- cmd/gaia/cli_test/cli_test.go | 88 ++++++-------- 5 files changed, 154 insertions(+), 160 deletions(-) diff --git a/Gopkg.lock b/Gopkg.lock index acb0864826..56bfded386 100644 --- a/Gopkg.lock +++ b/Gopkg.lock @@ -239,14 +239,6 @@ revision = "c12348ce28de40eed0136aa2b644d0ee0650e56c" version = "v1.0.1" -[[projects]] - digest = "1:78bbb1ba5b7c3f2ed0ea1eab57bdd3859aec7e177811563edc41198a760b06af" - name = "github.com/mitchellh/go-homedir" - packages = ["."] - pruneopts = "UT" - revision = "ae18d6b8b3205b561c79e8e5f69bff09736185f4" - version = "v1.0.0" - [[projects]] digest = "1:53bc4cd4914cd7cd52139990d5170d6dc99067ae31c56530621b18b35fc30318" name = "github.com/mitchellh/mapstructure" @@ -665,7 +657,6 @@ "github.com/golang/protobuf/proto", "github.com/gorilla/mux", "github.com/mattn/go-isatty", - "github.com/mitchellh/go-homedir", "github.com/pelletier/go-toml", "github.com/pkg/errors", "github.com/rakyll/statik/fs", diff --git a/Gopkg.toml b/Gopkg.toml index 1593e72986..f51d9d5435 100644 --- a/Gopkg.toml +++ b/Gopkg.toml @@ -63,10 +63,6 @@ name = "github.com/rakyll/statik" version = "=v0.1.4" -[[constraint]] - name = "github.com/mitchellh/go-homedir" - version = "1.0.0" - ## transitive deps, without releases: [[override]] diff --git a/PENDING.md b/PENDING.md index c38baa625e..6891c075da 100644 --- a/PENDING.md +++ b/PENDING.md @@ -7,6 +7,7 @@ BREAKING CHANGES * Gaia CLI (`gaiacli`) * [cli] [\#2595](https://github.com/cosmos/cosmos-sdk/issues/2595) Remove `keys new` in favor of `keys add` incorporating existing functionality with addition of key recovery functionality. * [cli] [\#2971](https://github.com/cosmos/cosmos-sdk/pull/2971) Additional verification when running `gaiad gentx` + * [cli] [\#2734](https://github.com/cosmos/cosmos-sdk/issues/2734) Rewrite `gaiacli config`. It is now a non-interactive config utility. * Gaia - [#128](https://github.com/tendermint/devops/issues/128) Updated CircleCI job to trigger website build on every push to master/develop. diff --git a/client/config.go b/client/config.go index b766106387..51d6da7009 100644 --- a/client/config.go +++ b/client/config.go @@ -1,131 +1,157 @@ package client import ( - "bufio" "fmt" "io/ioutil" "os" "path" + "strconv" + + "github.com/cosmos/cosmos-sdk/cmd/gaia/app" + "github.com/tendermint/tendermint/libs/cli" - "github.com/cosmos/cosmos-sdk/types" - "github.com/mitchellh/go-homedir" "github.com/pelletier/go-toml" "github.com/spf13/cobra" + "github.com/spf13/viper" ) -type cliConfig struct { - Home string `toml:"home"` - ChainID string `toml:"chain_id"` - TrustNode bool `toml:"trust_node"` - Output string `toml:"output"` - Node string `toml:"node"` - Trace bool `toml:"trace"` +const ( + flagGet = "get" +) + +var configDefaults map[string]string + +func init() { + configDefaults = map[string]string{ + "chain_id": "", + "output": "text", + "node": "tcp://localhost:26657", + } } // ConfigCmd returns a CLI command to interactively create a // Gaia CLI config file. func ConfigCmd() *cobra.Command { - cfg := &cobra.Command{ - Use: "config", - Short: "Interactively creates a Gaia CLI config file", + cmd := &cobra.Command{ + Use: "config [value]", + Short: "Create or query a Gaia CLI configuration file", RunE: runConfigCmd, + Args: cobra.RangeArgs(0, 2), } - return cfg + cmd.Flags().String(cli.HomeFlag, app.DefaultCLIHome, + "set client's home directory for configuration") + cmd.Flags().Bool(flagGet, false, + "print configuration value or its default if unset") + return cmd } func runConfigCmd(cmd *cobra.Command, args []string) error { - home, err := homedir.Dir() + cfgFile, err := ensureConfFile(viper.GetString(cli.HomeFlag)) if err != nil { return err } - stdin := BufferStdin() + getAction := viper.GetBool(flagGet) + if getAction && len(args) != 1 { + return fmt.Errorf("wrong number of arguments") + } - gaiaCLIHome, err := handleGaiaCLIHome(home, stdin) + // Load configuration + tree, err := loadConfigFile(cfgFile) if err != nil { return err } - node, err := handleNode(stdin) - if err != nil { - return err - } - - trustNode, err := handleTrustNode(stdin) - if err != nil { - return err - } - - chainID, err := types.DefaultChainID() - - if err != nil { - fmt.Println("Couldn't populate ChainID, so using an empty one.") - } - - cfg := &cliConfig{ - Home: gaiaCLIHome, - ChainID: chainID, - TrustNode: trustNode, - Output: "text", - Node: node, - Trace: false, - } - - return createGaiaCLIConfig(cfg) -} - -func handleGaiaCLIHome(dir string, stdin *bufio.Reader) (string, error) { - dirName := ".gaiacli" - home, err := GetString(fmt.Sprintf("Where is your gaiacli home directory? (Default: ~/%s)", dirName), stdin) - if err != nil { - return "", err - } - - if home == "" { - home = path.Join(dir, dirName) - } - - return home, nil -} - -func handleNode(stdin *bufio.Reader) (string, error) { - defaultNode := "tcp://localhost:26657" - node, err := GetString(fmt.Sprintf("Where is your validator node running? (Default: %s)", defaultNode), stdin) - if err != nil { - return "", err - } - - if node == "" { - node = defaultNode - } - - return node, nil -} - -func handleTrustNode(stdin *bufio.Reader) (bool, error) { - return GetConfirmation("Do you trust this node?", stdin) -} - -func createGaiaCLIConfig(cfg *cliConfig) error { - cfgPath := path.Join(cfg.Home, "config") - err := os.MkdirAll(cfgPath, os.ModePerm) - if err != nil { - return err - } - - data, err := toml.Marshal(*cfg) - if err != nil { - return err - } - - cfgFile := path.Join(cfgPath, "config.toml") - if info, err := os.Stat(cfgFile); err == nil && !info.IsDir() { - err = os.Rename(cfgFile, path.Join(cfgPath, "config.toml-old")) + // Print the config and exit + if len(args) == 0 { + s, err := tree.ToTomlString() if err != nil { return err } + fmt.Print(s) + return nil } - return ioutil.WriteFile(cfgFile, data, os.ModePerm) + key := args[0] + // Get value action + if getAction { + switch key { + case "trace", "trust_node": + fmt.Println(tree.GetDefault(key, false).(bool)) + default: + if defaultValue, ok := configDefaults[key]; ok { + fmt.Println(tree.GetDefault(key, defaultValue).(string)) + return nil + } + return errUnknownConfigKey(key) + } + return nil + } + + // Set value action + value := args[1] + switch key { + case "chain_id", "output", "node": + tree.Set(key, value) + case "trace", "trust_node": + boolVal, err := strconv.ParseBool(value) + if err != nil { + return err + } + tree.Set(key, boolVal) + default: + return errUnknownConfigKey(key) + } + + // Save configuration to disk + if err := saveConfigFile(cfgFile, tree); err != nil { + return err + } + fmt.Fprintf(os.Stderr, "configuration saved to %s\n", cfgFile) + + return nil +} + +func ensureConfFile(rootDir string) (string, error) { + cfgPath := path.Join(rootDir, "config") + if err := os.MkdirAll(cfgPath, os.ModePerm); err != nil { + return "", err + } + + return path.Join(cfgPath, "config.toml"), nil +} + +func loadConfigFile(cfgFile string) (*toml.Tree, error) { + if _, err := os.Stat(cfgFile); os.IsNotExist(err) { + fmt.Fprintf(os.Stderr, "%s does not exist\n", cfgFile) + return toml.Load(``) + } + + bz, err := ioutil.ReadFile(cfgFile) + if err != nil { + return nil, err + } + + tree, err := toml.LoadBytes(bz) + if err != nil { + return nil, err + } + + return tree, nil +} + +func saveConfigFile(cfgFile string, tree *toml.Tree) error { + fp, err := os.OpenFile(cfgFile, os.O_WRONLY|os.O_CREATE, 0644) + if err != nil { + return err + } + defer fp.Close() + + _, err = tree.WriteTo(fp) + return err +} + +func errUnknownConfigKey(key string) error { + return fmt.Errorf("unknown configuration key: %q", key) } diff --git a/cmd/gaia/cli_test/cli_test.go b/cmd/gaia/cli_test/cli_test.go index 3ddaa144d8..6fc60e1bab 100644 --- a/cmd/gaia/cli_test/cli_test.go +++ b/cmd/gaia/cli_test/cli_test.go @@ -44,8 +44,8 @@ func TestGaiaCLIMinimumFees(t *testing.T) { tests.WaitForTMStart(port) tests.WaitForNextNBlocksTM(1, port) - fooAddr, _ := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show foo --output=json --home=%s", gaiacliHome)) - barAddr, _ := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show bar --output=json --home=%s", gaiacliHome)) + fooAddr, _ := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show foo --home=%s", gaiacliHome)) + barAddr, _ := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show bar --home=%s", gaiacliHome)) fooAcc := executeGetAccount(t, fmt.Sprintf("gaiacli query account %s %v", fooAddr, flags)) require.Equal(t, int64(50), fooAcc.GetCoins().AmountOf(stakeTypes.DefaultBondDenom).Int64()) @@ -68,8 +68,8 @@ func TestGaiaCLIFeesDeduction(t *testing.T) { tests.WaitForTMStart(port) tests.WaitForNextNBlocksTM(1, port) - fooAddr, _ := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show foo --output=json --home=%s", gaiacliHome)) - barAddr, _ := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show bar --output=json --home=%s", gaiacliHome)) + fooAddr, _ := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show foo --home=%s", gaiacliHome)) + barAddr, _ := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show bar --home=%s", gaiacliHome)) fooAcc := executeGetAccount(t, fmt.Sprintf("gaiacli query account %s %v", fooAddr, flags)) require.Equal(t, int64(1000), fooAcc.GetCoins().AmountOf("fooToken").Int64()) @@ -110,8 +110,8 @@ func TestGaiaCLISend(t *testing.T) { tests.WaitForTMStart(port) tests.WaitForNextNBlocksTM(1, port) - fooAddr, _ := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show foo --output=json --home=%s", gaiacliHome)) - barAddr, _ := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show bar --output=json --home=%s", gaiacliHome)) + fooAddr, _ := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show foo --home=%s", gaiacliHome)) + barAddr, _ := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show bar --home=%s", gaiacliHome)) fooAcc := executeGetAccount(t, fmt.Sprintf("gaiacli query account %s %v", fooAddr, flags)) require.Equal(t, int64(50), fooAcc.GetCoins().AmountOf(stakeTypes.DefaultBondDenom).Int64()) @@ -163,8 +163,8 @@ func TestGaiaCLIGasAuto(t *testing.T) { tests.WaitForTMStart(port) tests.WaitForNextNBlocksTM(1, port) - fooAddr, _ := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show foo --output=json --home=%s", gaiacliHome)) - barAddr, _ := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show bar --output=json --home=%s", gaiacliHome)) + fooAddr, _ := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show foo --home=%s", gaiacliHome)) + barAddr, _ := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show bar --home=%s", gaiacliHome)) fooAcc := executeGetAccount(t, fmt.Sprintf("gaiacli query account %s %v", fooAddr, flags)) require.Equal(t, int64(50), fooAcc.GetCoins().AmountOf(stakeTypes.DefaultBondDenom).Int64()) @@ -216,8 +216,8 @@ func TestGaiaCLICreateValidator(t *testing.T) { tests.WaitForTMStart(port) tests.WaitForNextNBlocksTM(1, port) - fooAddr, _ := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show foo --output=json --home=%s", gaiacliHome)) - barAddr, _ := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show bar --output=json --home=%s", gaiacliHome)) + fooAddr, _ := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show foo --home=%s", gaiacliHome)) + barAddr, _ := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show bar --home=%s", gaiacliHome)) consPubKey := sdk.MustBech32ifyConsPub(ed25519.GenPrivKey().PubKey()) executeWrite(t, fmt.Sprintf("gaiacli tx send %v --amount=10%s --to=%s --from=foo", flags, stakeTypes.DefaultBondDenom, barAddr), app.DefaultKeyPass) @@ -264,11 +264,11 @@ func TestGaiaCLICreateValidator(t *testing.T) { barAcc = executeGetAccount(t, fmt.Sprintf("gaiacli query account %s %v", barAddr, flags)) require.Equal(t, int64(8), barAcc.GetCoins().AmountOf(stakeTypes.DefaultBondDenom).Int64(), "%v", barAcc) - validator := executeGetValidator(t, fmt.Sprintf("gaiacli query stake validator %s --output=json %v", sdk.ValAddress(barAddr), flags)) + validator := executeGetValidator(t, fmt.Sprintf("gaiacli query stake validator %s %v", sdk.ValAddress(barAddr), flags)) require.Equal(t, validator.OperatorAddr, sdk.ValAddress(barAddr)) require.True(sdk.DecEq(t, sdk.NewDec(2), validator.Tokens)) - validatorDelegations := executeGetValidatorDelegations(t, fmt.Sprintf("gaiacli query stake delegations-to %s --output=json %v", sdk.ValAddress(barAddr), flags)) + validatorDelegations := executeGetValidatorDelegations(t, fmt.Sprintf("gaiacli query stake delegations-to %s %v", sdk.ValAddress(barAddr), flags)) require.Len(t, validatorDelegations, 1) require.NotZero(t, validatorDelegations[0].Shares) @@ -286,19 +286,18 @@ func TestGaiaCLICreateValidator(t *testing.T) { barAcc = executeGetAccount(t, fmt.Sprintf("gaiacli query account %v %v", barCech, flags)) require.Equal(t, int64(9), barAcc.GetCoins().AmountOf(stakeTypes.DefaultBondDenom).Int64(), "%v", barAcc) */ - validator = executeGetValidator(t, fmt.Sprintf("gaiacli query stake validator %s --output=json %v", sdk.ValAddress(barAddr), flags)) + validator = executeGetValidator(t, fmt.Sprintf("gaiacli query stake validator %s %v", sdk.ValAddress(barAddr), flags)) require.Equal(t, "1.0000000000", validator.Tokens.String()) validatorUbds := executeGetValidatorUnbondingDelegations(t, - fmt.Sprintf("gaiacli query stake unbonding-delegations-from %s --output=json %v", - sdk.ValAddress(barAddr), flags)) + fmt.Sprintf("gaiacli query stake unbonding-delegations-from %s %v", sdk.ValAddress(barAddr), flags)) require.Len(t, validatorUbds, 1) require.Equal(t, "1", validatorUbds[0].Balance.Amount.String()) - params := executeGetParams(t, fmt.Sprintf("gaiacli query stake parameters --output=json %v", flags)) + params := executeGetParams(t, fmt.Sprintf("gaiacli query stake parameters %v", flags)) require.True(t, defaultParams.Equal(params)) - pool := executeGetPool(t, fmt.Sprintf("gaiacli query stake pool --output=json %v", flags)) + pool := executeGetPool(t, fmt.Sprintf("gaiacli query stake pool %v", flags)) require.Equal(t, initialPool.BondedTokens, pool.BondedTokens) cleanupDirs(gaiadHome, gaiacliHome) } @@ -319,7 +318,7 @@ func TestGaiaCLISubmitProposal(t *testing.T) { executeGetVotingParam(t, fmt.Sprintf("gaiacli query gov param voting %v", flags)) executeGetTallyingParam(t, fmt.Sprintf("gaiacli query gov param tallying %v", flags)) - fooAddr, _ := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show foo --output=json --home=%s", gaiacliHome)) + fooAddr, _ := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show foo --home=%s", gaiacliHome)) fooAcc := executeGetAccount(t, fmt.Sprintf("gaiacli query account %s %v", fooAddr, flags)) require.Equal(t, int64(50), fooAcc.GetCoins().AmountOf(stakeTypes.DefaultBondDenom).Int64()) @@ -358,7 +357,7 @@ func TestGaiaCLISubmitProposal(t *testing.T) { fooAcc = executeGetAccount(t, fmt.Sprintf("gaiacli query account %s %v", fooAddr, flags)) require.Equal(t, int64(45), fooAcc.GetCoins().AmountOf(stakeTypes.DefaultBondDenom).Int64()) - proposal1 := executeGetProposal(t, fmt.Sprintf("gaiacli query gov proposal 1 --output=json %v", flags)) + proposal1 := executeGetProposal(t, fmt.Sprintf("gaiacli query gov proposal 1 %v", flags)) require.Equal(t, uint64(1), proposal1.GetProposalID()) require.Equal(t, gov.StatusDepositPeriod, proposal1.GetStatus()) @@ -366,8 +365,7 @@ func TestGaiaCLISubmitProposal(t *testing.T) { require.Equal(t, " 1 - Test", proposalsQuery) deposit := executeGetDeposit(t, - fmt.Sprintf("gaiacli query gov deposit 1 %s --output=json %v", - fooAddr, flags)) + fmt.Sprintf("gaiacli query gov deposit 1 %s %v", fooAddr, flags)) require.Equal(t, int64(5), deposit.Amount.AmountOf(stakeTypes.DefaultBondDenom).Int64()) depositStr := fmt.Sprintf("gaiacli tx gov deposit 1 %s %v", fmt.Sprintf("10%s", stakeTypes.DefaultBondDenom), flags) @@ -387,14 +385,12 @@ func TestGaiaCLISubmitProposal(t *testing.T) { tests.WaitForNextNBlocksTM(1, port) // test query deposit - deposits := executeGetDeposits(t, - fmt.Sprintf("gaiacli query gov deposits 1 --output=json %v", flags)) + deposits := executeGetDeposits(t, fmt.Sprintf("gaiacli query gov deposits 1 %v", flags)) require.Len(t, deposits, 1) require.Equal(t, int64(15), deposits[0].Amount.AmountOf(stakeTypes.DefaultBondDenom).Int64()) deposit = executeGetDeposit(t, - fmt.Sprintf("gaiacli query gov deposit 1 %s --output=json %v", - fooAddr, flags)) + fmt.Sprintf("gaiacli query gov deposit 1 %s %v", fooAddr, flags)) require.Equal(t, int64(15), deposit.Amount.AmountOf(stakeTypes.DefaultBondDenom).Int64()) txs = executeGetTxs(t, fmt.Sprintf("gaiacli query txs --tags=action:deposit&depositor:%s %v", fooAddr, flags)) @@ -403,7 +399,7 @@ func TestGaiaCLISubmitProposal(t *testing.T) { fooAcc = executeGetAccount(t, fmt.Sprintf("gaiacli query account %s %v", fooAddr, flags)) require.Equal(t, int64(35), fooAcc.GetCoins().AmountOf(stakeTypes.DefaultBondDenom).Int64()) - proposal1 = executeGetProposal(t, fmt.Sprintf("gaiacli query gov proposal 1 --output=json %v", flags)) + proposal1 = executeGetProposal(t, fmt.Sprintf("gaiacli query gov proposal 1 %v", flags)) require.Equal(t, uint64(1), proposal1.GetProposalID()) require.Equal(t, gov.StatusVotingPeriod, proposal1.GetStatus()) @@ -423,11 +419,11 @@ func TestGaiaCLISubmitProposal(t *testing.T) { executeWrite(t, voteStr, app.DefaultKeyPass) tests.WaitForNextNBlocksTM(1, port) - vote := executeGetVote(t, fmt.Sprintf("gaiacli query gov vote 1 %s --output=json %v", fooAddr, flags)) + vote := executeGetVote(t, fmt.Sprintf("gaiacli query gov vote 1 %s %v", fooAddr, flags)) require.Equal(t, uint64(1), vote.ProposalID) require.Equal(t, gov.OptionYes, vote.Option) - votes := executeGetVotes(t, fmt.Sprintf("gaiacli query gov votes 1 --output=json %v", flags)) + votes := executeGetVotes(t, fmt.Sprintf("gaiacli query gov votes 1 %v", flags)) require.Len(t, votes, 1) require.Equal(t, uint64(1), votes[0].ProposalID) require.Equal(t, gov.OptionYes, votes[0].Option) @@ -469,8 +465,8 @@ func TestGaiaCLISendGenerateSignAndBroadcast(t *testing.T) { tests.WaitForTMStart(port) tests.WaitForNextNBlocksTM(1, port) - fooAddr, _ := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show foo --output=json --home=%s", gaiacliHome)) - barAddr, _ := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show bar --output=json --home=%s", gaiacliHome)) + fooAddr, _ := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show foo --home=%s", gaiacliHome)) + barAddr, _ := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show bar --home=%s", gaiacliHome)) // Test generate sendTx with default gas success, stdout, stderr := executeWriteRetStdStreams(t, fmt.Sprintf( @@ -563,36 +559,19 @@ func TestGaiaCLIConfig(t *testing.T) { t.Parallel() chainID, servAddr, port, gaiadHome, gaiacliHome, _ := initializeFixtures(t) node := fmt.Sprintf("%s:%s", servAddr, port) - executeWrite(t, fmt.Sprintf("gaiacli --home=%s config", gaiadHome), gaiacliHome, node, "y") + executeWrite(t, fmt.Sprintf(`gaiacli --home=%s config node %s`, gaiacliHome, node)) + executeWrite(t, fmt.Sprintf(`gaiacli --home=%s config output text`, gaiacliHome)) + executeWrite(t, fmt.Sprintf(`gaiacli --home=%s config trust_node true`, gaiacliHome)) + executeWrite(t, fmt.Sprintf(`gaiacli --home=%s config chain_id %s`, gaiacliHome, chainID)) + executeWrite(t, fmt.Sprintf(`gaiacli --home=%s config trace false`, gaiacliHome)) config, err := ioutil.ReadFile(path.Join(gaiacliHome, "config", "config.toml")) require.NoError(t, err) expectedConfig := fmt.Sprintf(`chain_id = "%s" -home = "%s" node = "%s" output = "text" trace = false trust_node = true -`, chainID, gaiacliHome, node) - require.Equal(t, expectedConfig, string(config)) - // ensure a backup gets created - executeWrite(t, "gaiacli config", gaiacliHome, node, "y", "y") - configBackup, err := ioutil.ReadFile(path.Join(gaiacliHome, "config", "config.toml-old")) - require.NoError(t, err) - require.Equal(t, expectedConfig, string(configBackup)) - - require.NoError(t, os.RemoveAll(gaiadHome)) - executeWrite(t, "gaiacli config", gaiacliHome, node, "y") - - // ensure it works without an initialized gaiad state - expectedConfig = fmt.Sprintf(`chain_id = "" -home = "%s" -node = "%s" -output = "text" -trace = false -trust_node = true -`, gaiacliHome, node) - config, err = ioutil.ReadFile(path.Join(gaiacliHome, "config", "config.toml")) - require.NoError(t, err) +`, chainID, node) require.Equal(t, expectedConfig, string(config)) cleanupDirs(gaiadHome, gaiacliHome) } @@ -615,7 +594,8 @@ func initializeFixtures(t *testing.T) (chainID, servAddr, port, gaiadHome, gaiac executeWrite(t, fmt.Sprintf("gaiacli keys delete --home=%s bar", gaiacliHome), app.DefaultKeyPass) executeWriteCheckErr(t, fmt.Sprintf("gaiacli keys add --home=%s foo", gaiacliHome), app.DefaultKeyPass) executeWriteCheckErr(t, fmt.Sprintf("gaiacli keys add --home=%s bar", gaiacliHome), app.DefaultKeyPass) - fooAddr, _ := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show foo --output=json --home=%s", gaiacliHome)) + executeWriteCheckErr(t, fmt.Sprintf("gaiacli config --home=%s output json", gaiacliHome)) + fooAddr, _ := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show foo --home=%s", gaiacliHome)) chainID = executeInit(t, fmt.Sprintf("gaiad init -o --moniker=foo --home=%s", gaiadHome)) executeWriteCheckErr(t, fmt.Sprintf(