OSDN Git Service

add issue program error (#1281)
[bytom/bytom.git] / cmd / bytomcli / commands / asset.go
index d0fab10..16cc2c3 100644 (file)
@@ -7,6 +7,7 @@ import (
        "github.com/spf13/cobra"
        jww "github.com/spf13/jwalterweatherman"
 
+       "encoding/hex"
        "github.com/bytom/crypto/ed25519/chainkd"
        "github.com/bytom/util"
 )
@@ -15,21 +16,23 @@ func init() {
        createAssetCmd.PersistentFlags().IntVarP(&assetQuorum, "quorom", "q", 1, "quorum must be greater than 0 and less than or equal to the number of signers")
        createAssetCmd.PersistentFlags().StringVarP(&assetToken, "access", "a", "", "access token")
        createAssetCmd.PersistentFlags().StringVarP(&assetDefiniton, "definition", "d", "", "definition for the asset")
+       createAssetCmd.PersistentFlags().StringVarP(&issuanceProgram, "issueprogram", "i", "", "issue program for the asset")
 
        listAssetsCmd.PersistentFlags().StringVar(&assetID, "id", "", "ID of asset")
 }
 
 var (
-       assetID        = ""
-       assetQuorum    = 1
-       assetToken     = ""
-       assetDefiniton = ""
+       assetID         = ""
+       assetQuorum     = 1
+       assetToken      = ""
+       assetDefiniton  = ""
+       issuanceProgram = ""
 )
 
 var createAssetCmd = &cobra.Command{
        Use:   "create-asset <alias> <xpub(s)>",
        Short: "Create an asset",
-       Args:  cobra.MinimumNArgs(2),
+       Args:  cobra.RangeArgs(1, 5),
        Run: func(cmd *cobra.Command, args []string) {
 
                var ins assetIns
@@ -56,6 +59,15 @@ var createAssetCmd = &cobra.Command{
                        ins.Definition = map[string]interface{}{definition[0]: definition[1]}
                }
 
+               if issuanceProgram != "" {
+                       issueProg, err := hex.DecodeString(issuanceProgram)
+                       if err != nil {
+                               jww.ERROR.Println(err)
+                               os.Exit(util.ErrLocalExe)
+                       }
+                       ins.IssuanceProgram = issueProg
+               }
+
                data, exitCode := util.ClientCall("/create-asset", &ins)
                if exitCode != util.Success {
                        os.Exit(exitCode)