Skip to content

Commit 0427659

Browse files
authored
feat: download hermes binary instead use ignite-files repo (#199)
* feat: downalod hermes binary instead use `ignite-files` repo * parse semantic version
1 parent 68e58ac commit 0427659

File tree

12 files changed

+621
-264
lines changed

12 files changed

+621
-264
lines changed

.github/workflows/test-integration.yml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,12 @@ jobs:
6666
env:
6767
GOTOOLCHAIN: local+path
6868
GOSUMDB: off
69-
run: go test -race -failfast -v -timeout 120m ./integration/... -branch ${{ github.event.pull_request.head.ref }}
69+
run: |
70+
if [[ "${{ matrix.test-path }}" == "appregistry" ]]; then
71+
go test -race -failfast -v -timeout 120m ./integration/... -branch ${{ github.event.pull_request.head.ref }}
72+
else
73+
go test -race -failfast -v -timeout 120m ./integration/...
74+
fi
7075
working-directory: ${{ matrix.test-path }}
7176

7277
status:

hermes/cmd/cmd.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ package cmd
22

33
import (
44
"github.com/ignite/cli/v28/ignite/services/plugin"
5+
6+
"github.com/ignite/apps/hermes/pkg/hermes"
57
)
68

79
// GetCommands returns the list of app commands.
@@ -24,6 +26,14 @@ func GetCommands() []*plugin.Command {
2426
Persistent: true,
2527
Type: plugin.FlagTypeString,
2628
},
29+
{
30+
Name: flagHermesVersion,
31+
Usage: "set the version of the Hermes binary to use",
32+
Shorthand: "v",
33+
DefaultValue: hermes.DefaultVersion,
34+
Persistent: true,
35+
Type: plugin.FlagTypeString,
36+
},
2737
},
2838
Commands: []*plugin.Command{
2939
{

hermes/cmd/configure.go

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,12 @@ func ConfigureHandler(ctx context.Context, cmd *plugin.ExecutedCommand) error {
4242
customCfg = getConfig(flags)
4343
)
4444

45-
var (
46-
hermesCfg *hermes.Config
47-
err error
48-
)
45+
hermesVersion, err := getVersion(flags)
46+
if err != nil {
47+
return err
48+
}
49+
50+
var hermesCfg *hermes.Config
4951
if customCfg != "" {
5052
hermesCfg, err = hermes.LoadConfig(customCfg)
5153
if err != nil {
@@ -86,11 +88,11 @@ func ConfigureHandler(ctx context.Context, cmd *plugin.ExecutedCommand) error {
8688
session.StopSpinner()
8789
_ = session.Println(color.Green.Sprintf("Hermes config created at %s", cfgPath))
8890

89-
h, err := hermes.New()
91+
session.StartSpinner(fmt.Sprintf("Fetching hermes binary %s", hermesVersion))
92+
h, err := hermes.New(hermesVersion)
9093
if err != nil {
9194
return err
9295
}
93-
defer h.Cleanup()
9496

9597
session.StartSpinner(fmt.Sprintf("Verifying chain A (%s) keys", chainAID))
9698

hermes/cmd/exec.go

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,34 @@ package cmd
22

33
import (
44
"context"
5+
"fmt"
56
"os"
67

8+
"github.com/ignite/cli/v28/ignite/pkg/cliui"
79
"github.com/ignite/cli/v28/ignite/services/plugin"
810

911
"github.com/ignite/apps/hermes/pkg/hermes"
1012
)
1113

1214
func ExecuteHandler(ctx context.Context, cmd *plugin.ExecutedCommand) error {
13-
h, err := hermes.New()
15+
var (
16+
flags = plugin.Flags(cmd.Flags)
17+
session = cliui.New()
18+
)
19+
20+
hermesVersion, err := getVersion(flags)
21+
if err != nil {
22+
return err
23+
}
24+
25+
defer session.End()
26+
27+
session.StartSpinner(fmt.Sprintf("Fetching hermes binary %s", hermesVersion))
28+
h, err := hermes.New(hermesVersion)
1429
if err != nil {
1530
return err
1631
}
17-
defer h.Cleanup()
32+
session.StopSpinner()
1833

1934
return h.Run(
2035
ctx,

hermes/cmd/flag.go

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,13 @@
11
package cmd
22

33
import (
4+
"strings"
5+
6+
"github.com/blang/semver/v4"
7+
"github.com/ignite/cli/v28/ignite/pkg/errors"
48
"github.com/ignite/cli/v28/ignite/services/plugin"
9+
10+
"github.com/ignite/apps/hermes/pkg/hermes"
511
)
612

713
const (
@@ -79,7 +85,8 @@ const (
7985
flagOverwriteConfig = "overwrite-config"
8086
flagChannelVersion = "channel-version"
8187

82-
flagConfig = "config"
88+
flagConfig = "config"
89+
flagHermesVersion = "hermes-version"
8390

8491
mnemonicEntropySize = 256
8592
)
@@ -88,3 +95,15 @@ func getConfig(flags plugin.Flags) string {
8895
config, _ := flags.GetString(flagConfig)
8996
return config
9097
}
98+
99+
func getVersion(flags plugin.Flags) (string, error) {
100+
version, _ := flags.GetString(flagHermesVersion)
101+
if version == "" {
102+
version = hermes.DefaultVersion
103+
}
104+
sv, err := semver.Parse(strings.TrimPrefix(version, "v"))
105+
if err != nil {
106+
return version, errors.Wrapf(err, "invalid version format %s", version)
107+
}
108+
return "v" + sv.String(), nil
109+
}

hermes/cmd/keys.go

Lines changed: 61 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,34 @@ package cmd
22

33
import (
44
"context"
5+
"fmt"
56
"os"
67

8+
"github.com/ignite/cli/v28/ignite/pkg/cliui"
79
"github.com/ignite/cli/v28/ignite/services/plugin"
810

911
"github.com/ignite/apps/hermes/pkg/hermes"
1012
)
1113

1214
func KeysAddMnemonicHandler(ctx context.Context, cmd *plugin.ExecutedCommand) error {
13-
args := cmd.Args
14-
h, err := hermes.New()
15+
var (
16+
args = cmd.Args
17+
flags = plugin.Flags(cmd.Flags)
18+
session = cliui.New()
19+
)
20+
defer session.End()
21+
22+
hermesVersion, err := getVersion(flags)
23+
if err != nil {
24+
return err
25+
}
26+
27+
session.StartSpinner(fmt.Sprintf("Fetching hermes binary %s", hermesVersion))
28+
h, err := hermes.New(hermesVersion)
1529
if err != nil {
1630
return err
1731
}
18-
defer h.Cleanup()
32+
session.StopSpinner()
1933

2034
return h.AddMnemonic(
2135
ctx,
@@ -28,12 +42,24 @@ func KeysAddMnemonicHandler(ctx context.Context, cmd *plugin.ExecutedCommand) er
2842
}
2943

3044
func KeysAddFileHandler(ctx context.Context, cmd *plugin.ExecutedCommand) error {
31-
args := cmd.Args
32-
h, err := hermes.New()
45+
var (
46+
args = cmd.Args
47+
flags = plugin.Flags(cmd.Flags)
48+
session = cliui.New()
49+
)
50+
defer session.End()
51+
52+
hermesVersion, err := getVersion(flags)
53+
if err != nil {
54+
return err
55+
}
56+
57+
session.StartSpinner(fmt.Sprintf("Fetching hermes binary %s", hermesVersion))
58+
h, err := hermes.New(hermesVersion)
3359
if err != nil {
3460
return err
3561
}
36-
defer h.Cleanup()
62+
session.StopSpinner()
3763

3864
return h.AddKey(
3965
ctx,
@@ -46,12 +72,24 @@ func KeysAddFileHandler(ctx context.Context, cmd *plugin.ExecutedCommand) error
4672
}
4773

4874
func KeysListHandler(ctx context.Context, cmd *plugin.ExecutedCommand) error {
49-
args := cmd.Args
50-
h, err := hermes.New()
75+
var (
76+
args = cmd.Args
77+
flags = plugin.Flags(cmd.Flags)
78+
session = cliui.New()
79+
)
80+
defer session.End()
81+
82+
hermesVersion, err := getVersion(flags)
83+
if err != nil {
84+
return err
85+
}
86+
87+
session.StartSpinner(fmt.Sprintf("Fetching hermes binary %s", hermesVersion))
88+
h, err := hermes.New(hermesVersion)
5189
if err != nil {
5290
return err
5391
}
54-
defer h.Cleanup()
92+
session.StopSpinner()
5593

5694
return h.KeysList(
5795
ctx,
@@ -63,11 +101,23 @@ func KeysListHandler(ctx context.Context, cmd *plugin.ExecutedCommand) error {
63101
}
64102

65103
func KeysDeleteHandler(ctx context.Context, cmd *plugin.ExecutedCommand) error {
66-
h, err := hermes.New()
104+
var (
105+
flags = plugin.Flags(cmd.Flags)
106+
session = cliui.New()
107+
)
108+
defer session.End()
109+
110+
hermesVersion, err := getVersion(flags)
111+
if err != nil {
112+
return err
113+
}
114+
115+
session.StartSpinner(fmt.Sprintf("Fetching hermes binary %s", hermesVersion))
116+
h, err := hermes.New(hermesVersion)
67117
if err != nil {
68118
return err
69119
}
70-
defer h.Cleanup()
120+
session.StopSpinner()
71121

72122
args := cmd.Args
73123
return h.DeleteKey(

hermes/cmd/start.go

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,11 @@ package cmd
22

33
import (
44
"context"
5+
"fmt"
56
"os"
67
"strings"
78

9+
"github.com/ignite/cli/v28/ignite/pkg/cliui"
810
"github.com/ignite/cli/v28/ignite/pkg/errors"
911
"github.com/ignite/cli/v28/ignite/services/plugin"
1012

@@ -17,8 +19,16 @@ func StartHandler(ctx context.Context, cmd *plugin.ExecutedCommand) (err error)
1719
args = cmd.Args
1820
customCfg = getConfig(flags)
1921
cfgName = strings.Join(args, hermes.ConfigNameSeparator)
22+
session = cliui.New()
2023
)
24+
defer session.End()
2125

26+
hermesVersion, err := getVersion(flags)
27+
if err != nil {
28+
return err
29+
}
30+
31+
session.StartSpinner("Fetching hermes config")
2232
cfgPath := customCfg
2333
if cfgPath == "" {
2434
cfgPath, err = hermes.ConfigPath(cfgName)
@@ -31,11 +41,12 @@ func StartHandler(ctx context.Context, cmd *plugin.ExecutedCommand) (err error)
3141
return errors.Errorf("config file (%s) not exist, try to configure you relayer first", cfgPath)
3242
}
3343

34-
h, err := hermes.New()
44+
session.StartSpinner(fmt.Sprintf("Fetching hermes binary %s", hermesVersion))
45+
h, err := hermes.New(hermesVersion)
3546
if err != nil {
3647
return err
3748
}
38-
defer h.Cleanup()
49+
session.StopSpinner()
3950

4051
return h.Start(
4152
ctx,

0 commit comments

Comments
 (0)