gcli
(formerly cli-init
) 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 below. It generates new cli skeleton project. At least, you must provide executable name. You can run go build
todo application from beginning.
$ gcli new [options] NAME
To see available frameworks,
$ gcli list
See more usage,
$ gcli help
gcli
generates two types of CLI. flag pattern or command 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 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,
- 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
gcli
was re-written from scratch. If you prefer old version of gcli
, checkout,
$ git checkout v0.1.0
- 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