x-mod / cmd

More convenient command-line builder base on cobra

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

cmd

More convenient commands builder base on Cobra.The key feature of the package:

  • use filesystem path like format to route the subcommands

Installation

$: go get github.com/x-mod/cmd

Dependence

Quick Start

Only Root Command

replace default Root Command settings. cmd.Parent("") means replace the default Root Command with the new command.

import (
	"fmt"

	"github.com/x-mod/cmd"
)

func main() {
	cmd.Add(
		cmd.Name("root"),
		cmd.Main(Main),
	)
	cmd.Execute()
}

func Main(c *cmd.Command, args []string) error {
	fmt.Println("my root command running ...")
	return nil
}

run the code in bash:

$: go run main.go
my root command running ...

Sub Commands

sub commands routing rules:

  • cmd.Path("/") root command
  • cmd.Parent("/foo/bar") 3 level command

subcommand's cmd.Parent("/command/path") must be setting.

import (
	"fmt"

	"github.com/x-mod/cmd"
)

func main() {
	cmd.Add(
		cmd.Path("/foo/bar/v1"),
		cmd.Main(V1),
	).PersistentFlags().StringP("parameter", "p", "test", "flags usage")
	cmd.Version("version string")
	cmd.Execute()
}

func V1(c *cmd.Command, args []string) error {
	fmt.Println("V1 called")
	return nil
}

run the code in bash:

$: go run main.go foo bar v1
V1 called

About

More convenient command-line builder base on cobra

License:MIT License


Languages

Language:Go 100.0%