github.com/kaisenlinux/docker.io@v0.0.0-20230510090727-ea55db55fac7/swarmkit/cmd/swarmctl/main.go (about) 1 package main 2 3 import ( 4 "os" 5 6 "github.com/docker/swarmkit/cmd/swarmctl/cluster" 7 "github.com/docker/swarmkit/cmd/swarmctl/config" 8 "github.com/docker/swarmkit/cmd/swarmctl/network" 9 "github.com/docker/swarmkit/cmd/swarmctl/node" 10 "github.com/docker/swarmkit/cmd/swarmctl/secret" 11 "github.com/docker/swarmkit/cmd/swarmctl/service" 12 "github.com/docker/swarmkit/cmd/swarmctl/task" 13 "github.com/docker/swarmkit/cmd/swarmd/defaults" 14 "github.com/docker/swarmkit/version" 15 "github.com/spf13/cobra" 16 "google.golang.org/grpc/status" 17 ) 18 19 func main() { 20 if c, err := mainCmd.ExecuteC(); err != nil { 21 s, _ := status.FromError(err) 22 c.Println("Error:", s.Message()) 23 // if it's not a grpc, we assume it's a user error and we display the usage. 24 if _, ok := status.FromError(err); !ok { 25 c.Println(c.UsageString()) 26 } 27 28 os.Exit(-1) 29 } 30 } 31 32 var ( 33 mainCmd = &cobra.Command{ 34 Use: os.Args[0], 35 Short: "Control a swarm cluster", 36 SilenceUsage: true, 37 SilenceErrors: true, 38 } 39 ) 40 41 func defaultSocket() string { 42 swarmSocket := os.Getenv("SWARM_SOCKET") 43 if swarmSocket != "" { 44 return swarmSocket 45 } 46 return defaults.ControlAPISocket 47 } 48 49 func init() { 50 mainCmd.PersistentFlags().StringP("socket", "s", defaultSocket(), "Socket to connect to the Swarm manager") 51 mainCmd.PersistentFlags().BoolP("no-resolve", "n", false, "Do not try to map IDs to Names when displaying them") 52 53 mainCmd.AddCommand( 54 node.Cmd, 55 service.Cmd, 56 task.Cmd, 57 version.Cmd, 58 network.Cmd, 59 cluster.Cmd, 60 secret.Cmd, 61 config.Cmd, 62 ) 63 }