cobra README

The project's README from github.com/spf13/cobra. As one markdown file: README.md.

cobra-logo

Cobra is a library for creating powerful modern CLI applications.

Visit Cobra.dev for extensive documentation

Cobra is used in many Go projects such as Kubernetes, Hugo, and GitHub CLI to name a few. This list contains a more extensive list of projects using Cobra.

Go Reference Go Report Card Slack


Supported by:

Warp sponsorship

Warp, the AI terminal for devs

Try Cobra in Warp today


Overview

Cobra is a library providing a simple interface to create powerful modern CLI interfaces similar to git & go tools.

Cobra provides:

Concepts

Cobra is built on a structure of commands, arguments & flags.

Commands represent actions, Args are things and Flags are modifiers for those actions.

The best applications read like sentences when used, and as a result, users intuitively know how to interact with them.

The pattern to follow is APPNAME VERB NOUN --ADJECTIVE or APPNAME COMMAND ARG --FLAG.

A few good real world examples may better illustrate this point.

In the following example, 'server' is a command, and 'port' is a flag:

hugo server --port=1313

In this command we are telling Git to clone the url bare.

git clone URL --bare

Commands

Command is the central point of the application. Each interaction that the application supports will be contained in a Command. A command can have children commands and optionally run an action.

In the example above, 'server' is the command.

More about cobra.Command

Flags

A flag is a way to modify the behavior of a command. Cobra supports fully POSIX-compliant flags as well as the Go flag package. A Cobra command can define flags that persist through to children commands and flags that are only available to that command.

In the example above, 'port' is the flag.

Flag functionality is provided by the pflag library, a fork of the flag standard library which maintains the same interface while adding POSIX compliance.

Installing

Using Cobra is easy. First, use go get to install the latest version of the library.

go get -u github.com/spf13/cobra@latest

Next, include Cobra in your application:

import "github.com/spf13/cobra"

Usage

cobra-cli is a command line program to generate cobra applications and command files. It will bootstrap your application scaffolding to rapidly develop a Cobra-based application. It is the easiest way to incorporate Cobra into your application.

It can be installed by running:

go install github.com/spf13/cobra-cli@latest

For complete details on using the Cobra-CLI generator, please read The Cobra Generator README

For complete details on using the Cobra library, please read The Cobra User Guide.

License

Cobra is released under the Apache 2.0 license. See LICENSE.txt

cobra (spf13/cobra)

posix
Searching Database…

44.7K ·GitHub
What is this?Cobra is a Go library for building modern CLI applications with subcommands, like git or go tools. It powers CLIs in Kubernetes, Hugo, and GitHub CLI.
Is it a library or a standalone app?It is a Go library you import into your own application; there is also a separate 'cobra-cli' generator tool that scaffolds boilerplate for you.
How do I add it to a project?Use go get to install the library, import it into your Go application, and optionally install the cobra-cli generator to bootstrap command scaffolding.
Do I need anything besides Go to use it?Just a Go toolchain; flag parsing is handled internally via the bundled pflag library (a POSIX-compliant fork of Go's flag package), and Viper integration is optional for 12-factor config.
Does it require following a strict command structure?Cobra expects apps to follow the APPNAME VERB NOUN --ADJECTIVE pattern (commands, args, flags), so you design your CLI around that convention rather than free-form argument parsing.
Does it work the same across Linux, macOS, and Windows?Yes, it generates autocomplete scripts and works cross-platform since it supports bash, zsh, fish, and PowerShell shells.
What features come out of the box?Nested subcommands, global/local/cascading flags, intelligent command suggestions, automatic help generation, man page generation, command aliases, and shell autocomplete generation.
Can commands suggest fixes for typos?Yes, Cobra offers intelligent suggestions, so typing a wrong command like 'app srver' prompts a 'did you mean app server?' hint.
Can I generate man pages and shell completions automatically?Yes, Cobra automatically generates man pages for your application and shell autocomplete scripts for bash, zsh, fish, and PowerShell.
Does Cobra integrate with configuration libraries?Yes, it offers optional seamless integration with Viper for building 12-factor style applications with layered configuration.
What are similar projects?hexyl, ipatool, oh-my-posh, gh-dash, kitty, posting, coreutils, neofetch
Creator
spf13
Size
2.1 MB
Stars
44.7K
Age
13y
Commits · 90 Days