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  }