From 543a8cb1a03d2ece6833d4041aaa877e9795e05b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=B0lker=20G=C3=B6ktu=C4=9F=20=C3=96ZT=C3=9CRK?= Date: Tue, 10 Aug 2021 15:20:45 +0300 Subject: [PATCH 1/5] fix(services/chain): detecting keyring when client.toml > keyring-backend used. --- starport/cmd/chain_serve.go | 2 - starport/services/chain/chain.go | 70 ++++++++++++++++++++++++-------- 2 files changed, 53 insertions(+), 19 deletions(-) diff --git a/starport/cmd/chain_serve.go b/starport/cmd/chain_serve.go index 45f464e76c..384dbf1ad7 100644 --- a/starport/cmd/chain_serve.go +++ b/starport/cmd/chain_serve.go @@ -2,7 +2,6 @@ package starportcmd import ( "github.com/spf13/cobra" - "github.com/tendermint/starport/starport/pkg/chaincmd" "github.com/tendermint/starport/starport/services/chain" ) @@ -40,7 +39,6 @@ func chainServeHandler(cmd *cobra.Command, args []string) error { chainOption := []chain.Option{ chain.LogLevel(logLevel(cmd)), - chain.KeyringBackend(chaincmd.KeyringBackendTest), } if isRebuildProtoOnce { diff --git a/starport/services/chain/chain.go b/starport/services/chain/chain.go index 4bfa32742c..b8b6da2f05 100644 --- a/starport/services/chain/chain.go +++ b/starport/services/chain/chain.go @@ -14,6 +14,7 @@ import ( sperrors "github.com/tendermint/starport/starport/errors" "github.com/tendermint/starport/starport/pkg/chaincmd" chaincmdrunner "github.com/tendermint/starport/starport/pkg/chaincmd/runner" + "github.com/tendermint/starport/starport/pkg/confile" "github.com/tendermint/starport/starport/pkg/cosmosver" "github.com/tendermint/starport/starport/pkg/xurl" ) @@ -335,6 +336,52 @@ func (c *Chain) ClientTOMLPath() (string, error) { return filepath.Join(home, "config/client.toml"), nil } +// KeyringBackend returns the keyring backend chosen for the chain. +func (c *Chain) KeyringBackend() (chaincmd.KeyringBackend, error) { + // 1st. + if c.options.keyringBackend != "" { + return c.options.keyringBackend, nil + } + + config, err := c.Config() + if err != nil { + return "", err + } + + // 2nd. + if config.Init.KeyringBackend != "" { + return chaincmd.KeyringBackendFromString(config.Init.KeyringBackend) + } + + // 3rd. + if config.Init.Client != nil { + if backend, ok := config.Init.Client["keyring-backend"]; ok { + if backendStr, ok := backend.(string); ok { + return chaincmd.KeyringBackendFromString(backendStr) + } + } + } + + // 4th. + configTOMLPath, err := c.ClientTOMLPath() + if err != nil { + return "", err + } + cf := confile.New(confile.DefaultTOMLEncodingCreator, configTOMLPath) + var conf struct { + KeyringBackend string `toml:"keyring-backend"` + } + if err := cf.Load(&conf); err != nil { + return "", err + } + if conf.KeyringBackend != "" { + return chaincmd.KeyringBackendFromString(conf.KeyringBackend) + } + + // 5th. + return chaincmd.KeyringBackendOS, nil +} + // Commands returns the runner execute commands on the chain's binary func (c *Chain) Commands(ctx context.Context) (chaincmdrunner.Runner, error) { id, err := c.ID() @@ -352,6 +399,11 @@ func (c *Chain) Commands(ctx context.Context) (chaincmdrunner.Runner, error) { return chaincmdrunner.Runner{}, err } + backend, err := c.KeyringBackend() + if err != nil { + return chaincmdrunner.Runner{}, err + } + config, err := c.Config() if err != nil { return chaincmdrunner.Runner{}, err @@ -362,23 +414,7 @@ func (c *Chain) Commands(ctx context.Context) (chaincmdrunner.Runner, error) { chaincmd.WithHome(home), chaincmd.WithVersion(c.Version), chaincmd.WithNodeAddress(xurl.TCP(config.Host.RPC)), - } - - // use keyring backend if specified - if c.options.keyringBackend != chaincmd.KeyringBackendUnspecified { - chainCommandOptions = append(chainCommandOptions, chaincmd.WithKeyringBackend(c.options.keyringBackend)) - } else { - // check if keyring backend is specified in config - if config.Init.KeyringBackend != "" { - configKeyringBackend, err := chaincmd.KeyringBackendFromString(config.Init.KeyringBackend) - if err != nil { - return chaincmdrunner.Runner{}, err - } - chainCommandOptions = append(chainCommandOptions, chaincmd.WithKeyringBackend(configKeyringBackend)) - } else { - // default keyring backend used is OS - chainCommandOptions = append(chainCommandOptions, chaincmd.WithKeyringBackend(chaincmd.KeyringBackendOS)) - } + chaincmd.WithKeyringBackend(backend), } cc := chaincmd.New(binary, chainCommandOptions...) From d708fb3730087afb14fe8ee5813defeea7b30f62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=B0lker=20G=C3=B6ktu=C4=9F=20=C3=96ZT=C3=9CRK?= Date: Wed, 11 Aug 2021 13:57:22 +0300 Subject: [PATCH 2/5] fix --- integration/env_test.go | 1 + 1 file changed, 1 insertion(+) diff --git a/integration/env_test.go b/integration/env_test.go index 4d88ffef00..8bbfc596d2 100644 --- a/integration/env_test.go +++ b/integration/env_test.go @@ -288,6 +288,7 @@ func (e env) SetRandomHomeConfig(path string, configFile string) { require.NoError(e.t, yaml.NewDecoder(configyml).Decode(&conf)) conf.Init.Home = e.TmpDir() + conf.Init.KeyringBackend = "test" require.NoError(e.t, configyml.Truncate(0)) _, err = configyml.Seek(0, 0) require.NoError(e.t, err) From 20d23dc42e46751abc51a37b530fc24d9ae935be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=B0lker=20G=C3=B6ktu=C4=9F=20=C3=96ZT=C3=9CRK?= Date: Wed, 11 Aug 2021 14:57:49 +0300 Subject: [PATCH 3/5] fix --- integration/env_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/integration/env_test.go b/integration/env_test.go index 8bbfc596d2..ad07a5e3b6 100644 --- a/integration/env_test.go +++ b/integration/env_test.go @@ -180,6 +180,7 @@ func (e env) Serve(msg, path, home, configPath string, options ...execOption) (o "chain", "serve", "-v", + "--keyring-backend", "test", } if home != "" { @@ -288,7 +289,6 @@ func (e env) SetRandomHomeConfig(path string, configFile string) { require.NoError(e.t, yaml.NewDecoder(configyml).Decode(&conf)) conf.Init.Home = e.TmpDir() - conf.Init.KeyringBackend = "test" require.NoError(e.t, configyml.Truncate(0)) _, err = configyml.Seek(0, 0) require.NoError(e.t, err) From 9eecc60bab9481e6c5570f825280f44700870f61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=B0lker=20G=C3=B6ktu=C4=9F=20=C3=96ZT=C3=9CRK?= Date: Thu, 12 Aug 2021 10:30:43 +0300 Subject: [PATCH 4/5] default to test kb --- starport/services/chain/chain.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/starport/services/chain/chain.go b/starport/services/chain/chain.go index b8b6da2f05..d77a7adac8 100644 --- a/starport/services/chain/chain.go +++ b/starport/services/chain/chain.go @@ -379,7 +379,7 @@ func (c *Chain) KeyringBackend() (chaincmd.KeyringBackend, error) { } // 5th. - return chaincmd.KeyringBackendOS, nil + return chaincmd.KeyringBackendTest, nil } // Commands returns the runner execute commands on the chain's binary From 7fd58e3cf32c623222cea2482052bb25e0f7895e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=B0lker=20G=C3=B6ktu=C4=9F=20=C3=96ZT=C3=9CRK?= Date: Thu, 12 Aug 2021 14:25:24 +0300 Subject: [PATCH 5/5] fix --- integration/env_test.go | 1 - 1 file changed, 1 deletion(-) diff --git a/integration/env_test.go b/integration/env_test.go index ad07a5e3b6..4d88ffef00 100644 --- a/integration/env_test.go +++ b/integration/env_test.go @@ -180,7 +180,6 @@ func (e env) Serve(msg, path, home, configPath string, options ...execOption) (o "chain", "serve", "-v", - "--keyring-backend", "test", } if home != "" {