gcli
generates the codes and its directory structure you need to start building CLI tool by Golang right out of the box. You can use your favorite framework.
To start new command line tool, run the following command. It generates new cli skeleton project. At least, you must provide executable name. You can go build
&& go test
it from beginning.
$ gcli new [options] NAME
To see available frameworks,
$ gcli list
See more usage,
$ gcli help
You can generate CLI project from design template file (.toml
). You can define command name, its description, commands there.
First, you can create default toml
file via design
command,
$ gcli design <NAME>
Then, edit design file by your favorite $EDITOR
. You can see sample template file sample.toml
,
$ $EDITOR <NAME>-design.toml
You can validate design by validate
command to check it has required fields,
$ gcli validate <NAME>-design.toml
To generate CLI project, use apply
command,
$ gcli apply <NAME>-desigon.toml
gcli
can generate two types of CLI,
Flag pattern is the pattern which executable has only flag options like below (e.g., grep
),
$ grep —i -C 4 "some string" /tmp
│ │ │
│ │ `--------- Arguments
│ │
│ `------------------------ Option flags
│
`------------------------------ Executable
To generate above CLI application with flag fraemwork,
$ cd $GOPATH/src/github.com/YOUR_NAME
$ gcli new -F flag -flag=i:Bool -flag=C:Int grep
Created grep/main.go
Created grep/CHANGELOG.md
Created grep/cli_test.go
Created grep/README.md
Created grep/version.go
Created grep/cli.go
====> Successfully generated grep
gcli
supports the following packages for the flag pattern:
Command pattern is the pattern which executable has command for change its behavior. For example, todo
CLI application which has add
(Add new task), list
(List all tasks) and delete
(Delete a task) command.
$ todo add 'Buy a milk'
│ │ │
│ │ `---------- Arguments
│ │
│ `----------------- Command
│
`---------------------- Executable
To generate above CLI application with mitchellh/cli framework,
$ cd $GOPATH/src/github.com/YOUR_NAME
$ gcli new -F mitchellh_cli -c add -c list -c delete todo
Created todo/main.go
Created todo/command/meta.go
Created todo/cli.go
Created todo/CHANGELOG.md
Created todo/version.go
Created todo/commands.go
Created todo/command/add.go
Created todo/command/list.go
Created todo/command/delete.go
Created todo/README.md
Created todo/command/add_test.go
Created todo/command/list_test.go
Created todo/command/delete_test.go
====> Successfully generated todo
gcli
supports the following packages for the command pattern:
- codegangsta_cli
- mitchellh_cli
- go_cmd (without 3rd party framework, same as
go
command)
To install, use go get
and make install
. We tag versions so feel free to checkout that tag and compile.
$ go get -d github.com/tcnksm/gcli
$ cd $GOPATH/src/github.com/tcnksm/gcli
$ make install
- Fork (https://github.com/tcnksm/gcli/fork)
- Create a feature branch
- Commit your changes
- Rebase your local changes against the master branch
- Run test suite with the
make test
command and confirm that it passes - Run
gofmt -s
- Create a new Pull Request