cli: move combining signers and accounts to a separate package
This code will be reused in other packages.
This commit is contained in:
parent
94316fa36d
commit
16fa191ccb
2 changed files with 23 additions and 9 deletions
|
@ -7,7 +7,10 @@ import (
|
||||||
|
|
||||||
"github.com/nspcc-dev/neo-go/cli/flags"
|
"github.com/nspcc-dev/neo-go/cli/flags"
|
||||||
"github.com/nspcc-dev/neo-go/pkg/core/transaction"
|
"github.com/nspcc-dev/neo-go/pkg/core/transaction"
|
||||||
|
"github.com/nspcc-dev/neo-go/pkg/encoding/address"
|
||||||
|
"github.com/nspcc-dev/neo-go/pkg/rpc/client"
|
||||||
"github.com/nspcc-dev/neo-go/pkg/smartcontract"
|
"github.com/nspcc-dev/neo-go/pkg/smartcontract"
|
||||||
|
"github.com/nspcc-dev/neo-go/pkg/wallet"
|
||||||
"github.com/urfave/cli"
|
"github.com/urfave/cli"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -128,3 +131,20 @@ func ParseParams(args []string, calledFromMain bool) (int, []smartcontract.Param
|
||||||
}
|
}
|
||||||
return 0, []smartcontract.Parameter{}, errors.New("invalid array syntax: missing closing bracket")
|
return 0, []smartcontract.Parameter{}, errors.New("invalid array syntax: missing closing bracket")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetSignersAccounts returns the list of signers combined with the corresponding
|
||||||
|
// accounts from the provided wallet.
|
||||||
|
func GetSignersAccounts(wall *wallet.Wallet, signers []transaction.Signer) ([]client.SignerAccount, error) {
|
||||||
|
signersAccounts := make([]client.SignerAccount, len(signers))
|
||||||
|
for i := range signers {
|
||||||
|
signerAcc := wall.GetAccount(signers[i].Account)
|
||||||
|
if signerAcc == nil {
|
||||||
|
return nil, fmt.Errorf("no account was found in the wallet for signer #%d (%s)", i, address.Uint160ToString(signers[i].Account))
|
||||||
|
}
|
||||||
|
signersAccounts[i] = client.SignerAccount{
|
||||||
|
Signer: signers[i],
|
||||||
|
Account: signerAcc,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return signersAccounts, nil
|
||||||
|
}
|
||||||
|
|
|
@ -555,15 +555,9 @@ func invokeInternal(ctx *cli.Context, signAndPush bool) error {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
for i := range cosigners {
|
cosignersAccounts, err = cmdargs.GetSignersAccounts(wall, cosigners)
|
||||||
cosignerAcc := wall.GetAccount(cosigners[i].Account)
|
if err != nil {
|
||||||
if cosignerAcc == nil {
|
return cli.NewExitError(fmt.Errorf("failed to calculate network fee: %w", err), 1)
|
||||||
return cli.NewExitError(fmt.Errorf("can't calculate network fee: no account was found in the wallet for cosigner #%d", i), 1)
|
|
||||||
}
|
|
||||||
cosignersAccounts = append(cosignersAccounts, client.SignerAccount{
|
|
||||||
Signer: cosigners[i],
|
|
||||||
Account: cosignerAcc,
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
gctx, cancel := options.GetTimeoutContext(ctx)
|
gctx, cancel := options.GetTimeoutContext(ctx)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue