code: func NewCli(version string) *cli.App {
  	app := cli.NewApp()
  	app.Name = "Convoy"
  	app.Version = version
  	app.Author = "Sheng Yang <sheng.yang@rancher.com>"
  	app.Usage = "A volume manager capable of snapshot and delta backup"
  	app.Flags = []cli.Flag{
  		cli.StringFlag{
  			Name:  "socket, s",
  			Value: "/var/run/convoy/convoy.sock",
  			Usage: "Specify unix domain socket for communication between server and client",
  		},
  		cli.BoolFlag{
  			Name:  "debug, d",
  			Usage: "Enable debug level log with client or not",
  		},
  		cli.BoolFlag{
  			Name:  "verbose",
  			Usage: "Verbose level output for client, for create volume/snapshot etc",
  		},
  	}
  	app.CommandNotFound = cmdNotFound
  	app.Before = initClient
  	app.Commands = []cli.Command{
  		daemonCmd,
  		infoCmd,
  		volumeCreateCmd,
  		volumeDeleteCmd,
  		volumeMountCmd,
  		volumeUmountCmd,
  		volumeListCmd,
  		volumeInspectCmd,
  		snapshotCmd,
  		backupCmd,
  	}
  	return app
  }
docs: // NewCli would generate Convoy CLI