package main import ( "fmt" "os" "github.com/Sirupsen/logrus" "github.com/docker/containerd" "github.com/urfave/cli" ) func init() { cli.VersionPrinter = func(c *cli.Context) { fmt.Println(c.App.Name, containerd.Package, c.App.Version) } } func main() { app := cli.NewApp() app.Name = "ctr" app.Version = containerd.Version app.Usage = ` __ _____/ /______ / ___/ __/ ___/ / /__/ /_/ / \___/\__/_/ containerd client ` app.Flags = []cli.Flag{ cli.BoolFlag{ Name: "debug", Usage: "enable debug output in logs", }, cli.StringFlag{ Name: "socket, s", Usage: "socket path for containerd's GRPC server", Value: "/run/containerd/containerd.sock", }, cli.StringFlag{ // TODO(stevvooe): for now, we allow circumventing the GRPC. Once // we have clear separation, this will likely go away. Name: "root", Usage: "path to content store root", Value: "/var/lib/containerd", }, } app.Commands = []cli.Command{ runCommand, eventsCommand, deleteCommand, listCommand, infoCommand, shimCommand, pprofCommand, } app.Before = func(context *cli.Context) error { if context.GlobalBool("debug") { logrus.SetLevel(logrus.DebugLevel) } return nil } if err := app.Run(os.Args); err != nil { fmt.Fprintf(os.Stderr, "ctr: %s\n", err) os.Exit(1) } }