gocmd alternatives and similar packages
Based on the "Standard CLI" category.
Alternatively, view gocmd alternatives based on common mentions on social networks and blogs.
-
urfave/cli
A simple, fast, and fun package for building command line apps in Go -
elvish
Elvish = Expressive Programming Language + Versatile Interactive Shell -
survey
A golang library for building interactive and accessible prompts with full support for windows and posix terminals. -
The Platinum Searcher
A code search tool similar to ack and the_silver_searcher(ag). It supports multi platforms and multi encodings. -
pflag
Drop-in replacement for Go's flag package, implementing POSIX/GNU-style --flags. -
readline
Readline is a pure go(golang) implementation for GNU-Readline kind library -
flaggy
Idiomatic Go input parsing with subcommands, positional values, and flags at any position. No required project or package layout and no external dependencies. -
wmenu
An easy to use menu structure for cli applications that prompts users to make choices. -
commandeer
Automatically sets up command line flags based on struct fields and tags. -
flag
Flag is a simple but powerful command line option parsing library for Go support infinite level subcommand -
cmdr
POSIX-compliant command-line UI (CLI) parser and Hierarchical-configuration operations -
wlog
A simple logging interface that supports cross-platform color and concurrency. -
go-getoptions
Fully featured Go (golang) command line option parser with built-in auto-completion support. -
argv
A Go library to split command line string as arguments array using the bash syntax. -
Go-Console
GoConsole: the golang component that eases the creation of beautiful command line interfaces. -
command-chain
A go library for easy configure and run command chains. Such like pipelining in unix shells.
Clean code begins in your IDE with SonarLint
Do you think we are missing an alternative of gocmd or a related project?
Popular Comparisons
README
gocmd
A Go library for building command line applications.
Features
- Advanced command line arguments handling
- Subcommand handling
- Short and long command line arguments
- Multiple arguments (repeated or delimited)
- Support for environment variables
- Well formatted usage printing
- Auto usage and version printing
- Unknown argument handling
- Output tables in the terminal
- Template support for config files
- No external dependency
Installation
go get github.com/devfacet/gocmd/v3
Usage
A basic app
For the full code [click here](examples/basic/main.go).
func main() {
flags := struct {
Help bool `short:"h" long:"help" description:"Display usage" global:"true"`
Version bool `short:"v" long:"version" description:"Display version"`
VersionEx bool `long:"vv" description:"Display version (extended)"`
Echo struct {
Settings bool `settings:"true" allow-unknown-arg:"true"`
} `command:"echo" description:"Print arguments"`
Math struct {
Sqrt struct {
Number float64 `short:"n" long:"number" required:"true" description:"Number"`
} `command:"sqrt" description:"Calculate square root"`
Pow struct {
Base float64 `short:"b" long:"base" required:"true" description:"Base"`
Exponent float64 `short:"e" long:"exponent" required:"true" description:"Exponent"`
} `command:"pow" description:"Calculate base exponential"`
} `command:"math" description:"Math functions" nonempty:"true"`
}{}
// Echo command
gocmd.HandleFlag("Echo", func(cmd *gocmd.Cmd, args []string) error {
fmt.Printf("%s\n", strings.Join(cmd.FlagArgs("Echo")[1:], " "))
return nil
})
// Math commands
gocmd.HandleFlag("Math.Sqrt", func(cmd *gocmd.Cmd, args []string) error {
fmt.Println(math.Sqrt(flags.Math.Sqrt.Number))
return nil
})
gocmd.HandleFlag("Math.Pow", func(cmd *gocmd.Cmd, args []string) error {
fmt.Println(math.Pow(flags.Math.Pow.Base, flags.Math.Pow.Exponent))
return nil
})
// Init the app
gocmd.New(gocmd.Options{
Name: "basic",
Description: "A basic app",
Version: fmt.Sprintf("%s (%s)", version, gitCommit),
Flags: &flags,
ConfigType: gocmd.ConfigTypeAuto,
})
}
# Build the example app:
make build
# Run it:
gocmdbasic
Usage: basic [options...] COMMAND [options...]
A basic app
Options:
-h, --help Display usage
-v, --version Display version
--vv Display version (extended)
Commands:
echo Print arguments
math Math functions
sqrt Calculate square root
-n, --number Number
pow Calculate base exponential
-b, --base Base
-e, --exponent Exponent
# Try the following commands:
gocmdbasic echo hello world
gocmdbasic math sqrt -n 9
gocmdbasic math pow -b 2 --exponent 2
gocmdbasic -v
gocmdbasic --vv
Test
# Test everything:
make test
# For BDD development:
# It will open a new browser window. Make sure:
# 1. There is no errors on the terminal window.
# 2. There is no other open GoConvey page.
make test-ui
# Benchmarks
make test-benchmarks
Release
# Update and commit CHANGELOG.md first (i.e. git add CHANGELOG.md && git commit -m "v1.0.0").
# Set GIT_TAG using semver (i.e. GIT_TAG=v1.0.0)
make release GIT_TAG=
Contributing
See [CONTRIBUTING.md](CONTRIBUTING.md)
License
Licensed under The MIT License (MIT)
For the full copyright and license information, please view the LICENSE.txt file.
*Note that all licence references and agreements mentioned in the gocmd README section above
are relevant to that project's source code only.