Skip to content

Commit

Permalink
clean up api usage and error handling
Browse files Browse the repository at this point in the history
  • Loading branch information
gjermundgaraba committed Oct 20, 2022
1 parent 88c668f commit 771aad6
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 11 deletions.
7 changes: 6 additions & 1 deletion cmd/root.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,12 @@ func RunE(f func(cmd *cobra.Command, args []string) error) func(cmd *cobra.Comma
return func(cmd *cobra.Command, args []string) (err error) {
err = f(cmd, args)
if verbose && err != nil {
fmt.Println(err.(*errors.Error).ErrorStack())
stackedErr, ok := err.(*errors.Error)
if ok {
fmt.Println(stackedErr.ErrorStack())
return err
}
fmt.Println(err)
}

return err
Expand Down
20 changes: 11 additions & 9 deletions cmd/utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,13 +40,16 @@ func selectNetwork() (network.Network, error) {
if err := survey.AskOne(networkPrompt, &networkChoiceIndex); err != nil {
return network.Network{}, errors.Wrap(err, 0)
}
network := networks[networkChoiceIndex]

return network, nil
return networks[networkChoiceIndex], nil
}

func selectValidator(n network.Network, delegations ...stakingtypes.Delegation) (validator.ValidatorForNetwork, error) {
supportedValidators, err := validator.GetSupportedValidators(n.Identifier)
if err != nil {
return validator.ValidatorForNetwork{}, errors.Wrap(err, 0)
}

var validators []validator.ValidatorForNetwork
if len(delegations) == 0 {
validators = supportedValidators
Expand All @@ -60,23 +63,22 @@ func selectValidator(n network.Network, delegations ...stakingtypes.Delegation)
}
}

if len(validators) == 0 {
return validator.ValidatorForNetwork{}, errors.New("no relevant validators found (is the address staking with a REStake-enabled validator on this network?)")
}

validatorNameList := make([]string, len(validators))
for i, v := range validators {
validatorNameList[i] = v.Name
}
if err != nil {
return validator.ValidatorForNetwork{}, err
}
var validatorChoiceIndex int
validatorPrompt := &survey.Select{
Message: "Choose validator",
Options: validatorNameList,
}
err = survey.AskOne(validatorPrompt, &validatorChoiceIndex)
if err != nil {
return validator.ValidatorForNetwork{}, err
return validator.ValidatorForNetwork{}, errors.Wrap(err, 0)
}
validator := validators[validatorChoiceIndex]

return validator, nil
return validators[validatorChoiceIndex], nil
}
10 changes: 9 additions & 1 deletion pkg/validator/validator.go
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,15 @@ func GetSupportedValidators(network string) (supportedValidators []ValidatorForN
if c.Name == network {
restakeAddr, ok := c.Restake.(string)
if !ok {
continue
restakeObj, ok := c.Restake.(map[string]interface{})
if !ok {
continue
}

restakeAddr, ok = restakeObj["address"].(string)
if !ok {
continue
}
}
supportedValidators = append(supportedValidators, ValidatorForNetwork{
Path: v.Path,
Expand Down

0 comments on commit 771aad6

Please sign in to comment.