esxlib/cmd/vmctl/command.go

63 lines
1.1 KiB
Go
Raw Normal View History

2023-06-24 19:57:08 +00:00
package main
import (
"esxlib/api/cloud"
"github.com/urfave/cli/v2"
)
var (
apiAddressFlag = cli.StringFlag{
Name: "api.address",
Value: "127.0.0.1:1213",
Usage: "The address of the API server",
}
apiTokenFlag = cli.StringFlag{
Name: "api.token",
Value: "",
Usage: "The api token for the api if required",
}
)
var globalFlags = []cli.Flag{
&apiAddressFlag,
&apiTokenFlag,
}
var commands = []*cli.Command{
{
Name: "vm",
Aliases: []string{"vm"},
Usage: "vm commands",
Description: "vm commands",
Subcommands: vmCommands,
},
{
Name: "zones",
Aliases: []string{"zone"},
Usage: "zone commands",
Description: "zone commands",
Subcommands: zoneCommands,
},
{
Name: "networks",
Aliases: []string{"net", "nets"},
Usage: "network commands",
Description: "network commands",
Subcommands: netCommands,
},
}
func mustGetClient(ctx *cli.Context) *cloud.Client {
apiAddress := ctx.String(apiAddressFlag.Name)
apiToken := ctx.String(apiTokenFlag.Name)
client, err := cloud.NewClient(apiAddress, apiToken, true)
if err != nil {
panic(err)
}
return client
}