Build command line interfaced applications fast and easy.
Ideally suited for novice Developers.
import "github.com/kataras/cli"
func main() {
cli.NewApp("httpserver", "converts current directory into http server", "0.0.1").
Flag("directory", "C:/users/myfiles", "specify a directory to convert").
Run(func(cli.Flags) error {
return nil
})
}
- Simple to use, create a working app in one line
- Easy API, no need to read any docs, just type
cli.
via your favorite editor and your hand will select the correct function to do the job - Auto command naming alias
- App has commands, each command can have subcommands, the same commands and their flags can be registered and used over multiple Apps
- Understands the go types automatically, no more
*string
- Monitor, optionally, each command through App's action listener
- Help command automation
- Share app's screen and output with any type of
io.Writer
The only requirement is the Go Programming Language.
$ go get -u github.com/kataras/cli
// NewApp creates and returns a new cli App instance
//
// example:
// app := cli.NewApp("iris", "Command line tool for Iris web framework", "0.0.1")
NewApp(name string, description string, version string) *App
package main
import (
"fmt"
"github.com/kataras/cli"
)
func main() {
app := cli.NewApp("httpserver", "converts current directory into http server", "0.0.1")
// $executable -d, $executable --directory $the_dir
app.Flag("directory", "C:/users/myfiles", "specify a current working directory")
// $executable listen
listenCommand := cli.Command("listen", "starts the server")
// $executable listen -h, $executable listen --host $the_host
listenCommand.Flag("host", "127.0.0.1", "specify an address listener")
// $executable listen -p, $executable listen --port $the_port
listenCommand.Flag("port", 8080, "specify a port to listen")
// $executable listen -d, $executable listen --dir $the_dir
listenCommand.Flag("dir", "", "current working directory")
// $executable listen -r , $executable listen --req $the_req
listenCommand.Flag("req", nil, "a required flag because nil default given")
listenCommand.Action(listen)
app.Command(listenCommand) //register the listenCommand to the app.
app.Run(run)
}
// httpserver -d C:/web/site
func run(args cli.Flags) error {
// if the app has flags then 'run' will do its job as action, not as monitor
fmt.Printf("Executing from global app's flag -d/-directory = %s\n ", args.String("directory"))
// you can also run a command by code, listenCommand.Execute()
return nil
}
// httpserver listen -h mydomain.com
func listen(args cli.Flags) error {
fmt.Printf("Executing from command listen with Host: %s and Port: %d \n",
args.String("host"), args.Int("port"))
return nil
}
Note that: --help (or -help, help, -h) global flag is automatically used and displays help message.
If you'd like to discuss this package, or ask questions about it, feel free to
- Explore these questions.
- Post an issue or idea here.
- Navigate to the Chat.
Current: 0.0.4
Read more about Semantic Versioning 2.0.0
- http://semver.org/
- https://en.wikipedia.org/wiki/Software_versioning
- https://wiki.debian.org/UpstreamGuide#Releases_and_Versions
The author of cli is @kataras.
If you are interested in contributing to the cli project, please make a PR.
This project is licensed under the MIT License.
License can be found here.