Skip to content

Commit b01c25c

Browse files
committed
IBC migrate cmd fixes and cleaning
1 parent 97e95e8 commit b01c25c

File tree

2 files changed

+411
-255
lines changed

2 files changed

+411
-255
lines changed

cmd/fetchd/cmd/helpers.go

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
package cmd
2+
3+
import (
4+
"encoding/json"
5+
"errors"
6+
"fmt"
7+
"math/big"
8+
"os"
9+
"sort"
10+
"strings"
11+
)
12+
13+
func unmarshalState(app map[string]json.RawMessage, key string) (map[string]any, error) {
14+
raw := app[key]
15+
if len(raw) == 0 {
16+
return map[string]any{}, nil
17+
}
18+
var st map[string]any
19+
if err := json.Unmarshal(raw, &st); err != nil {
20+
return nil, err
21+
}
22+
return st, nil
23+
}
24+
25+
func marshalState(app map[string]json.RawMessage, key string, st map[string]any) error {
26+
bz, err := json.Marshal(st)
27+
if err != nil {
28+
return err
29+
}
30+
app[key] = bz
31+
return nil
32+
}
33+
34+
func coinsJSON(totals map[string]*big.Int) []any {
35+
out := make([]any, 0, len(totals))
36+
for den, v := range totals {
37+
out = append(out, map[string]any{"denom": den, "amount": v.String()})
38+
}
39+
sort.Slice(out, func(i, j int) bool {
40+
return out[i].(map[string]any)["denom"].(string) <
41+
out[j].(map[string]any)["denom"].(string)
42+
})
43+
return out
44+
}
45+
46+
func parseCSV(s string) []string {
47+
if strings.TrimSpace(s) == "" {
48+
return nil
49+
}
50+
parts := strings.Split(s, ",")
51+
out := make([]string, 0, len(parts))
52+
for _, p := range parts {
53+
p = strings.TrimSpace(p)
54+
if p != "" {
55+
out = append(out, p)
56+
}
57+
}
58+
sort.Strings(out)
59+
return out
60+
}
61+
62+
func toStringSet(list []string) map[string]struct{} {
63+
if len(list) == 0 {
64+
return nil
65+
}
66+
m := make(map[string]struct{}, len(list))
67+
for _, v := range list {
68+
m[v] = struct{}{}
69+
}
70+
return m
71+
}
72+
func ensureDir(path string) error {
73+
dir := ""
74+
if i := strings.LastIndex(path, "/"); i >= 0 {
75+
dir = path[:i]
76+
}
77+
if dir == "" {
78+
return nil
79+
}
80+
if st, err := os.Stat(dir); err == nil && st.IsDir() {
81+
return nil
82+
}
83+
if err := os.MkdirAll(dir, 0o755); err != nil && !errors.Is(err, os.ErrExist) {
84+
return fmt.Errorf("create dir %q: %w", dir, err)
85+
}
86+
return nil
87+
}
88+
89+
func stringifyJSONNumber(v any) string {
90+
switch x := v.(type) {
91+
case string:
92+
return x
93+
case float64:
94+
return fmt.Sprintf("%.0f", x)
95+
case json.Number:
96+
return x.String()
97+
default:
98+
return "0"
99+
}
100+
}

0 commit comments

Comments
 (0)