Skip to content

wallyqs/gcli

 
 

Repository files navigation

gcli

GitHub release Wercker MIT License Go Documentation

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

gcli supports the following packages for the flag pattern:

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

gcli supports the following packages for the command pattern:

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

  1. Fork (https://github.com/tcnksm/gcli/fork)
  2. Create a feature branch
  3. Commit your changes
  4. Rebase your local changes against the master branch
  5. Run test suite with the make test command and confirm that it passes
  6. Run gofmt -s
  7. Create a new Pull Request

Author

Taichi Nakashima

About

The easy way to build Golang command-line application.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 95.6%
  • Shell 3.2%
  • Makefile 1.2%