Skip to content

Latest commit

 

History

History
71 lines (51 loc) · 1.66 KB

README.md

File metadata and controls

71 lines (51 loc) · 1.66 KB

GitHub GitHub Workflow Status (event) Go Reference

broccoli

Broccoli: CLI Package for Go

Usage

package main

import (
	"fmt"

	"gopkg.eu.org/broccoli"
)

type Config struct {
	_    struct{} `version:"0.0.1" command:"hello" about:"Test App"`
	Name string   `flag:"name" alias:"n" required:"true" about:"Your name"`

	Sub *SubCommand `subcommand:"sub"`
}

type SubCommand struct {
	_    struct{} `command:"sub" longabout:"Test Sub Command"`
	Name string   `flag:"name" alias:"n" required:"true" about:"Your name"`
}

func main() {
	var cfg Config
	_ = broccoli.BindOSArgs(&cfg)

	if cfg.Sub != nil {
		fmt.Printf("Hello %s from sub command\n", cfg.Sub.Name)
		return
	}

	fmt.Printf("Hello %s from main command\n", cfg.Name)
}
$ hello --help
hello 0.0.1
Test App

Usage:
        hello <COMMAND> [OPTIONS] --name <NAME> [ARGUEMENTS]

Options:
        -n, --name     Your name  (required)
        -h, --help     Print this help message and exit

Commands:
        sub    Test Sub Command

$ hello --name World
Hello World from main command

$ hello sub --name World
Hello World from sub command

Installation

go get -u gopkg.eu.org/broccoli