gcli
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.
Usage
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
Generate CLI project from design file
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
Support frameworks
gcli
can generate two types of CLI,
Flag pattern
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
For this flag pattern, gcli
supports below packages,
Command 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
For this flag pattern, gcli
supports below packages,
Installation
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
Contribution
- 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
Author
Taichi Nakashima