func main()

in go/grpshuffle_client/main.go [16:100]


func main() {
	var divide int

	app := &cli.App{
		Name:  "grpshuffle-client",
		Usage: "Client of groshuffle",
		Commands: []*cli.Command{
			{
				Name:  "shuffle",
				Usage: "shuffle",
				Flags: append([]cli.Flag{
					&cli.IntFlag{
						Name:        "divide",
						Aliases:     []string{"d"},
						Usage:       "Number to divide",
						EnvVars:     []string{"GRPSHUFFLE_SHUFFLE_DIVIDE"},
						Required:    true,
						Destination: &divide,
					},
				}, newGlobalFlags()...),
				ArgsUsage: "DIVIDE TARGET1 TARGET2 ...",
				Action: func(c *cli.Context) error {
					conn, err := grpshuffleClient.Connect(grpshuffleClient.Host, grpshuffleClient.Port, grpshuffleClient.NoTLS)
					if err != nil {
						return err
					}
					defer grpshuffleClient.CloseConnect(conn)

					cc := grpshuffle.NewComputeClient(conn)
					rawResult, err := grpshuffleClient.Shuffle(&cc, uint64(divide), c.Args().Slice())
					if err != nil {
						return err
					}

					result, err := json.MarshalIndent(rawResult, "", "  ")
					if err != nil {
						return err
					}

					fmt.Println(string(result))
					return nil
				},
			},
			{
				Name:  "health",
				Usage: "health check server",
				Action: func(c *cli.Context) error {
					conn, err := grpshuffleClient.Connect(grpshuffleClient.Host, grpshuffleClient.Port, grpshuffleClient.NoTLS)
					if err != nil {
						return err
					}
					defer grpshuffleClient.CloseConnect(conn)

					hc := grpc_health_v1.NewHealthClient(conn)
					rawResult, err := grpshuffleClient.HealthCheck(&hc)
					if err != nil {
						return err
					}
					result, err := json.MarshalIndent(rawResult, "", "  ")
					if err != nil {
						return err
					}

					fmt.Println(string(result))
					return nil
				},
				Flags: append([]cli.Flag{}, newGlobalFlags()...),
			},
			{
				Name:  "http-serve",
				Usage: "HTTP client server",
				Action: func(c *cli.Context) error {
					grpshuffleClient.HttpServe(8080)
					return nil
				},
				Flags: append([]cli.Flag{}, newGlobalFlags()...),
			},
		},
	}

	err := app.Run(os.Args)
	if err != nil {
		log.Fatal(err)
	}
}