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