cmd/lncli: add new package, implements cli for plasma
This commit is contained in:
parent
47801bd927
commit
f2d3c2455b
58
cmd/lncli/commands.go
Normal file
58
cmd/lncli/commands.go
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"github.com/codegangsta/cli"
|
||||||
|
"golang.org/x/net/context"
|
||||||
|
"li.lan/labs/plasma/rpcprotos"
|
||||||
|
)
|
||||||
|
|
||||||
|
var NewAddressCommand = cli.Command{
|
||||||
|
Name: "newaddress",
|
||||||
|
Usage: "gets the next address in the HD chain",
|
||||||
|
Action: newAddress,
|
||||||
|
}
|
||||||
|
|
||||||
|
func newAddress(ctx *cli.Context) {
|
||||||
|
client := getClient(ctx)
|
||||||
|
|
||||||
|
ctxb := context.Background()
|
||||||
|
addr, err := client.NewAddress(ctxb, &lnrpc.NewAddressRequest{})
|
||||||
|
if err != nil {
|
||||||
|
fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Println(json.Marshal(addr))
|
||||||
|
}
|
||||||
|
|
||||||
|
var SendManyCommand = cli.Command{
|
||||||
|
Name: "sendmany",
|
||||||
|
Usage: "create and broadcast a transaction paying the specified " +
|
||||||
|
"amount(s) to the passed address(es)",
|
||||||
|
Action: sendMany,
|
||||||
|
}
|
||||||
|
|
||||||
|
func sendMany(ctx *cli.Context) {
|
||||||
|
var amountToAddr map[string]int64
|
||||||
|
|
||||||
|
fmt.Println(ctx.Args())
|
||||||
|
|
||||||
|
jsonMap := ctx.Args().Get(0)
|
||||||
|
if err := json.Unmarshal([]byte(jsonMap), &amountToAddr); err != nil {
|
||||||
|
fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Println("map: %v", amountToAddr)
|
||||||
|
|
||||||
|
ctxb := context.Background()
|
||||||
|
client := getClient(ctx)
|
||||||
|
|
||||||
|
txid, err := client.SendMany(ctxb, &lnrpc.SendManyRequest{amountToAddr})
|
||||||
|
if err != nil {
|
||||||
|
fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Println(json.Marshal(txid))
|
||||||
|
}
|
61
cmd/lncli/main.go
Normal file
61
cmd/lncli/main.go
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"flag"
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
|
||||||
|
"github.com/codegangsta/cli"
|
||||||
|
"li.lan/labs/plasma/rpcprotos"
|
||||||
|
|
||||||
|
"google.golang.org/grpc"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
serverAddr = flag.String("rpcserver", "127.0.0.1:10000", "The server address in the format of host:port")
|
||||||
|
)
|
||||||
|
|
||||||
|
func fatal(err error) {
|
||||||
|
fmt.Fprintf(os.Stderr, "[lncli] %v\n", err)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
func getClient(ctx *cli.Context) lnrpc.LightningClient {
|
||||||
|
conn := getClientConn(ctx)
|
||||||
|
return lnrpc.NewLightningClient(conn)
|
||||||
|
}
|
||||||
|
|
||||||
|
func getClientConn(ctx *cli.Context) *grpc.ClientConn {
|
||||||
|
// TODO(roasbeef): macaroon based auth
|
||||||
|
opts := []grpc.DialOption{grpc.WithInsecure()}
|
||||||
|
|
||||||
|
conn, err := grpc.Dial(ctx.GlobalString("rpcserver"), opts...)
|
||||||
|
if err != nil {
|
||||||
|
fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return conn
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
app := cli.NewApp()
|
||||||
|
app.Name = "lncli"
|
||||||
|
app.Version = "0.1"
|
||||||
|
app.Usage = "control plane for your LN daemon"
|
||||||
|
app.Flags = []cli.Flag{
|
||||||
|
cli.StringFlag{
|
||||||
|
Name: "rpcserver",
|
||||||
|
Value: "localhost:10000",
|
||||||
|
Usage: "host:port of plasma daemon",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
app.Commands = []cli.Command{
|
||||||
|
NewAddressCommand,
|
||||||
|
SendManyCommand,
|
||||||
|
}
|
||||||
|
if err := app.Run(os.Args); err != nil {
|
||||||
|
fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ctx := context.Background()
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user