github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/x/gov/client/cli/parse.go (about)

     1  package cli
     2  
     3  import (
     4  	"encoding/json"
     5  	"fmt"
     6  	"io/ioutil"
     7  
     8  	govutils "github.com/fibonacci-chain/fbc/x/gov/client/utils"
     9  	"github.com/spf13/viper"
    10  )
    11  
    12  func parseSubmitProposalFlags() (*proposal, error) {
    13  	proposal := &proposal{}
    14  	file := viper.GetString(flagProposal)
    15  
    16  	if file == "" {
    17  		proposal.Title = viper.GetString(flagTitle)
    18  		proposal.Description = viper.GetString(flagDescription)
    19  		proposal.Type = govutils.NormalizeProposalType(viper.GetString(flagProposalType))
    20  		proposal.Deposit = viper.GetString(flagDeposit)
    21  		return proposal, nil
    22  	}
    23  
    24  	for _, flag := range proposalFlags {
    25  		if viper.GetString(flag) != "" {
    26  			return nil, fmt.Errorf("--%s flag provided alongside --proposal, which is a noop", flag)
    27  		}
    28  	}
    29  
    30  	contents, err := ioutil.ReadFile(file)
    31  	if err != nil {
    32  		return nil, err
    33  	}
    34  
    35  	err = json.Unmarshal(contents, proposal)
    36  	if err != nil {
    37  		return nil, err
    38  	}
    39  
    40  	return proposal, nil
    41  }