csv reader
This commit is contained in:
parent
38e0dbb236
commit
6a403df100
@ -1,9 +1,12 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"encoding/csv"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
|
"os"
|
||||||
|
"strconv"
|
||||||
|
|
||||||
"github.com/google/uuid"
|
"github.com/google/uuid"
|
||||||
"github.com/mitchellh/go-homedir"
|
"github.com/mitchellh/go-homedir"
|
||||||
@ -168,6 +171,11 @@ var genesisAddMsigsCmd = &cli.Command{
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
csvf, err := homedir.Expand(cctx.Args().Get(1))
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
var template genesis.Template
|
var template genesis.Template
|
||||||
b, err := ioutil.ReadFile(genf)
|
b, err := ioutil.ReadFile(genf)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -178,8 +186,49 @@ var genesisAddMsigsCmd = &cli.Command{
|
|||||||
return xerrors.Errorf("unmarshal genesis template: %w", err)
|
return xerrors.Errorf("unmarshal genesis template: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fileReader, err := os.Open(csvf)
|
||||||
|
if err != nil {
|
||||||
|
return xerrors.Errorf("read multisig csv: %w", err)
|
||||||
|
}
|
||||||
|
r := csv.NewReader(fileReader)
|
||||||
|
records, err := r.ReadAll()
|
||||||
|
if err != nil {
|
||||||
|
return xerrors.Errorf("read multisig csv: %w", err)
|
||||||
|
}
|
||||||
var entries []GenAccountEntry
|
var entries []GenAccountEntry
|
||||||
// TODO: parse that csv
|
for _, e := range records {
|
||||||
|
var addrs []address.Address
|
||||||
|
for _, a := range e[7:] {
|
||||||
|
addr, err := address.NewFromString(a)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
addrs = append(addrs, addr)
|
||||||
|
}
|
||||||
|
custodianID, err := strconv.Atoi(e[1])
|
||||||
|
if err != nil {
|
||||||
|
return xerrors.Errorf("Custodian ID must be integer")
|
||||||
|
}
|
||||||
|
threshold, err := strconv.Atoi(e[2])
|
||||||
|
if err != nil {
|
||||||
|
return xerrors.Errorf("Threshold must be integer")
|
||||||
|
}
|
||||||
|
num, err := strconv.Atoi(e[3])
|
||||||
|
if err != nil {
|
||||||
|
return xerrors.Errorf("Number of addresses be integer")
|
||||||
|
}
|
||||||
|
entry := GenAccountEntry{
|
||||||
|
ID: e[0],
|
||||||
|
CustodianID: custodianID,
|
||||||
|
M: threshold,
|
||||||
|
N: num,
|
||||||
|
Type: e[4],
|
||||||
|
Sig1: e[5],
|
||||||
|
Sig2: e[6],
|
||||||
|
Addresses: addrs,
|
||||||
|
}
|
||||||
|
entries = append(entries, entry)
|
||||||
|
}
|
||||||
|
|
||||||
for i, e := range entries {
|
for i, e := range entries {
|
||||||
if len(e.Addresses) != e.N {
|
if len(e.Addresses) != e.N {
|
||||||
|
Loading…
Reference in New Issue
Block a user