package service
import (
"context"
"fmt"
"github.com/pkg/errors"
"github.com/urfave/cli"
)
func pullCommands(client *Client) []cli.Command {
return []cli.Command{
cli.Command{
Name: "pull",
Usage: "Pull from the key server",
ArgsUsage: "kid or user@service",
Action: func(c *cli.Context) error {
key := c.Args().First()
req := &PullRequest{
Key: key,
}
resp, err := client.RPCClient().Pull(context.TODO(), req)
if err != nil {
return err
}
for _, kid := range resp.KIDs {
fmt.Printf("%s\n", kid)
}
return nil
},
},
cli.Command{
Name: "push",
Usage: "Publish to the key server",
ArgsUsage: "kid or user@service",
Aliases: []string{"publish"},
Flags: []cli.Flag{
cli.BoolFlag{Name: "check", Usage: "check remote", Hidden: true},
},
Action: func(c *cli.Context) error {
key := c.Args().First()
if key == "" {
return errors.Errorf("specify kid or user@service")
}
req := &PushRequest{
Key: key,
RemoteCheck: c.Bool("check"),
}
resp, err := client.RPCClient().Push(context.TODO(), req)
if err != nil {
return err
}
for _, url := range resp.URLs {
fmt.Println(url)
}
return nil
},
},
}
}