本文整理匯總了Golang中github.com/eris-ltd/mint-client/Godeps/_workspace/src/github.com/codegangsta/cli.Context類的典型用法代碼示例。如果您正苦於以下問題:Golang Context類的具體用法?Golang Context怎麽用?Golang Context使用的例子?那麽, 這裏精選的類代碼示例或許可以為您提供幫助。
在下文中一共展示了Context類的14個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: cliBlocks
func cliBlocks(c *cli.Context) {
args := c.Args()
if len(args) == 0 {
exit(fmt.Errorf("must specify a height to get a single block, or two heights to get all blocks between them"))
} else if len(args) == 1 {
height := args[0]
i, err := strconv.ParseUint(height, 10, 32)
ifExit(err)
r, err := client.GetBlock(int(i))
ifExit(err)
s, err := formatOutput(c, 1, r)
ifExit(err)
fmt.Println(s)
} else {
minHeightS, maxHeightS := args[0], args[1]
minHeight, err := strconv.ParseUint(minHeightS, 10, 32)
ifExit(err)
maxHeight, err := strconv.ParseUint(maxHeightS, 10, 32)
ifExit(err)
if maxHeight <= minHeight {
exit(fmt.Errorf("maxHeight must be greater than minHeight"))
}
r, err := client.BlockchainInfo(int(minHeight), int(maxHeight))
ifExit(err)
s, err := formatOutput(c, 2, r)
ifExit(err)
fmt.Println(s)
}
}
示例2: TestApp_RunAsSubcommandParseFlags
func TestApp_RunAsSubcommandParseFlags(t *testing.T) {
var context *cli.Context
a := cli.NewApp()
a.Commands = []cli.Command{
{
Name: "foo",
Action: func(c *cli.Context) {
context = c
},
Flags: []cli.Flag{
cli.StringFlag{
Name: "lang",
Value: "english",
Usage: "language for the greeting",
},
},
Before: func(_ *cli.Context) error { return nil },
},
}
a.Run([]string{"", "foo", "--lang", "spanish", "abcd"})
expect(t, context.Args().Get(0), "abcd")
expect(t, context.String("lang"), "spanish")
}
示例3: cliStorage
func cliStorage(c *cli.Context) {
args := c.Args()
if len(args) == 0 {
exit(fmt.Errorf("must specify an address to dump all storage, and an optional key to get just that storage"))
} else if len(args) == 1 {
addr := args[0]
addrBytes, err := hex.DecodeString(addr)
ifExit(err)
r, err := client.DumpStorage(addrBytes)
ifExit(err)
s, err := formatOutput(c, 1, r)
ifExit(err)
fmt.Println(s)
} else {
addr, key := args[0], args[1]
addrBytes, err := hex.DecodeString(addr)
ifExit(err)
keyBytes, err := hex.DecodeString(key)
ifExit(err)
r, err := client.GetStorage(addrBytes, keyBytes)
ifExit(err)
s, err := formatOutput(c, 2, r)
ifExit(err)
fmt.Println(s)
}
}
示例4: cliAccounts
func cliAccounts(c *cli.Context) {
args := c.Args()
if len(args) == 0 {
r, err := client.ListAccounts()
ifExit(err)
s, err := formatOutput(c, 0, r)
ifExit(err)
fmt.Println(s)
} else {
addr := args[0]
addrBytes, err := hex.DecodeString(addr)
if err != nil {
exit(fmt.Errorf("Addr %s is improper hex: %v", addr, err))
}
r, err := client.GetAccount(addrBytes)
ifExit(err)
if r == nil {
exit(fmt.Errorf("Account %X does not exist", addrBytes))
}
r2 := r.Account
if r2 == nil {
exit(fmt.Errorf("Account %X does not exist", addrBytes))
}
s, err := formatOutput(c, 1, r2)
ifExit(err)
fmt.Println(s)
}
}
示例5: before
func before(c *cli.Context) error {
var level int
if c.GlobalBool("debug") || c.Bool("debug") {
level = 2
}
log.SetLoggers(level, os.Stdout, os.Stderr)
return nil
}
示例6: formatOutput
func formatOutput(c *cli.Context, i int, o interface{}) (string, error) {
args := c.Args()
if len(args) < i+1 {
return prettyPrint(o)
}
arg0 := args[i]
v := reflect.ValueOf(o).Elem()
name, err := FieldFromTag(v, arg0)
if err != nil {
return "", err
}
f := v.FieldByName(name)
return prettyPrint(f.Interface())
}
示例7: cliCallCode
func cliCallCode(c *cli.Context) {
args := c.Args()
if len(args) < 3 {
exit(fmt.Errorf("must specify code to execute and data to send"))
}
from, code, data := args[0], args[1], args[2]
fromAddrBytes, err := hex.DecodeString(from)
ifExit(err)
codeBytes, err := hex.DecodeString(code)
ifExit(err)
dataBytes, err := hex.DecodeString(data)
ifExit(err)
r, err := client.CallCode(fromAddrBytes, codeBytes, dataBytes)
ifExit(err)
s, err := formatOutput(c, 3, r)
ifExit(err)
fmt.Println(s)
}
示例8: cliCall
func cliCall(c *cli.Context) {
args := c.Args()
if len(args) < 3 {
exit(fmt.Errorf("must specify a from address, to address and data to send"))
}
from, to, data := args[0], args[1], args[2]
fromAddrBytes, err := hex.DecodeString(from)
ifExit(err)
toAddrBytes, err := hex.DecodeString(to)
ifExit(err)
dataBytes, err := hex.DecodeString(data)
ifExit(err)
r, err := client.Call(fromAddrBytes, toAddrBytes, dataBytes)
ifExit(err)
s, err := formatOutput(c, 3, r)
ifExit(err)
fmt.Println(s)
}
示例9: cliBroadcast
func cliBroadcast(c *cli.Context) {
args := c.Args()
if len(args) < 1 {
exit(fmt.Errorf("must specify transaction bytes to broadcast"))
}
txS := args[0]
// TODO: we should switch over a hex vs. json flag
txBytes, err := hex.DecodeString(txS)
ifExit(err)
var tx types.Tx
n := new(int64)
buf := bytes.NewBuffer(txBytes)
wire.ReadBinary(tx, buf, n, &err)
ifExit(err)
r, err := client.BroadcastTx(tx)
ifExit(err)
r2 := r.Receipt
s, err := formatOutput(c, 1, r2)
ifExit(err)
fmt.Println(s)
}
示例10: cliNames
func cliNames(c *cli.Context) {
args := c.Args()
if len(args) == 0 {
r, err := client.ListNames()
ifExit(err)
s, err := formatOutput(c, 1, r)
ifExit(err)
fmt.Println(s)
} else {
name := args[0]
r, err := client.GetName(name)
ifExit(err)
r2 := r.Entry
s, err := formatOutput(c, 1, r2)
ifExit(err)
if len(args) > 1 {
if args[1] == "data" {
s, err = strconv.Unquote(s)
ifExit(err)
}
}
fmt.Println(s)
}
}
示例11: cliBond
func cliBond(c *cli.Context) {
chainID, nodeAddr, signAddr := c.String("chainID"), c.String("node-addr"), c.String("sign-addr")
sign, broadcast, wait := c.Bool("sign"), c.Bool("broadcast"), c.Bool("wait")
pubkey, amtS, nonceS, unbondAddr := c.String("pubkey"), c.String("amt"), c.String("nonce"), c.String("unbond-to")
tx, err := core.Bond(nodeAddr, pubkey, unbondAddr, amtS, nonceS)
common.IfExit(err)
logger.Debugf("%v\n", tx)
unpackSignAndBroadcast(core.SignAndBroadcast(chainID, nodeAddr, signAddr, tx, sign, broadcast, wait))
}
示例12: cliPermissions
func cliPermissions(c *cli.Context) {
chainID, nodeAddr, signAddr := c.String("chainID"), c.String("node-addr"), c.String("sign-addr")
sign, broadcast, wait := c.Bool("sign"), c.Bool("broadcast"), c.Bool("wait")
pubkey, nonceS, addr := c.String("pubkey"), c.String("nonce"), c.String("addr")
// all functions take at least 2 args (+ name)
if len(c.Args()) < 3 {
common.Exit(fmt.Errorf("Please enter the permission function you'd like to call, followed by it's arguments"))
}
permFunc := c.Args()[0]
tx, err := core.Permissions(nodeAddr, pubkey, addr, nonceS, permFunc, c.Args()[1:])
common.IfExit(err)
logger.Debugf("%v\n", tx)
unpackSignAndBroadcast(core.SignAndBroadcast(chainID, nodeAddr, signAddr, tx, sign, broadcast, wait))
}
示例13: cliName
func cliName(c *cli.Context) {
chainID, nodeAddr, signAddr := c.String("chainID"), c.String("node-addr"), c.String("sign-addr")
sign, broadcast, wait := c.Bool("sign"), c.Bool("broadcast"), c.Bool("wait")
pubkey, amtS, nonceS, feeS, addr := c.String("pubkey"), c.String("amt"), c.String("nonce"), c.String("fee"), c.String("addr")
if c.IsSet("data") && c.IsSet("data-file") {
common.Exit(fmt.Errorf("Please specify only one of --data and --data-file"))
}
name, data, dataFile := c.String("name"), c.String("data"), c.String("data-file")
if data == "" && dataFile != "" {
b, err := ioutil.ReadFile(dataFile)
common.IfExit(err)
data = string(b)
}
tx, err := core.Name(nodeAddr, pubkey, addr, amtS, nonceS, feeS, name, data)
common.IfExit(err)
logger.Debugf("%v\n", tx)
unpackSignAndBroadcast(core.SignAndBroadcast(chainID, nodeAddr, signAddr, tx, sign, broadcast, wait))
}
示例14: cliRebond
func cliRebond(c *cli.Context) {
chainID, nodeAddr, signAddr := c.String("chainID"), c.String("node-addr"), c.String("sign-addr")
sign, broadcast, wait := c.Bool("sign"), c.Bool("broadcast"), c.Bool("wait")
addr, height := c.String("addr"), c.String("height")
tx, err := core.Rebond(addr, height)
common.IfExit(err)
logger.Debugf("%v\n", tx)
unpackSignAndBroadcast(core.SignAndBroadcast(chainID, nodeAddr, signAddr, tx, sign, broadcast, wait))
}