small pixel drawing of a pufferfish cascade

main.go

package main

import (
	"fmt"
	"os"

	"git.j3s.sh/cascade/internal/cli"
)

const usage = `  usage: cascade [command] [flags] [-h]

  commands:
    cascade agent              start a cascade agent
    cascade status             overview of the cascade cluster
    cascade nodes              list nodes
    cascade services [name]    list services
      cascade register           register a service to an agent
      cascade deregister <id>    remove a service from an agent
    cascade rtt                estimate latency between nodes
`

// TODO: rename agent to something cooler
func main() {
	if len(os.Args) == 1 {
		fmt.Fprintf(os.Stderr, "%s", usage)
		os.Exit(1)
	}

	command := os.Args[1]
	args := os.Args[2:]
	switch os.Args[1] {
	case "agent":
		cli.RunAgent(args)
	case "nodes":
		cli.RunNodes(args)
	case "status":
		cli.RunStatus(args)
	case "services":
		cli.RunServices(args)
	case "register":
		cli.RunRegister(args)
	case "deregister":
		cli.RunDeregister(args)
	default:
		fmt.Fprintf(os.Stderr, "'%s' is not a valid command\n\n%s", command, usage)
		os.Exit(1)
	}
}