• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

.github/H02-Jul-2021-136103

cobra/H02-Jul-2021-3,8852,945

doc/H02-Jul-2021-1,8531,433

.gitignoreH A D02-Jul-2021484 4032

.golangci.ymlH A D02-Jul-2021720 4947

.mailmapH A D02-Jul-2021172 43

CHANGELOG.mdH A D02-Jul-20212.1 KiB5238

CONDUCT.mdH A D02-Jul-20213 KiB3825

CONTRIBUTING.mdH A D02-Jul-20212 KiB5138

MakefileH A D02-Jul-20211.1 KiB4129

README.mdH A D02-Jul-20215 KiB12690

args.goH A D02-Jul-20213.1 KiB11078

args_test.goH A D02-Jul-20216.7 KiB288242

bash_completions.goH A D02-Jul-202121.3 KiB686596

bash_completions.mdH A D02-Jul-20213.7 KiB9475

bash_completionsV2.goH A D02-Jul-20219.6 KiB303255

bash_completions_test.goH A D02-Jul-20219.1 KiB264199

cobra.goH A D02-Jul-20216.6 KiB223144

cobra_test.goH A D02-Jul-2021623 2923

command.goH A D02-Jul-202147.1 KiB1,6811,142

command_notwin.goH A D02-Jul-202168 62

command_test.goH A D02-Jul-202153.9 KiB2,0611,680

command_win.goH A D02-Jul-2021433 2720

completions.goH A D02-Jul-202128.6 KiB782490

completions_test.goH A D02-Jul-202170.4 KiB2,5461,971

fish_completions.goH A D02-Jul-20217.9 KiB220176

fish_completions.mdH A D02-Jul-2021127 52

fish_completions_test.goH A D02-Jul-20211.9 KiB7052

go.modH A D02-Jul-2021225 129

go.sumH A D02-Jul-202157.5 KiB593592

powershell_completions.goH A D02-Jul-202110.4 KiB286224

powershell_completions.mdH A D02-Jul-2021158 42

projects_using_cobra.mdH A D02-Jul-20211.7 KiB3937

shell_completions.goH A D02-Jul-20213.7 KiB8537

shell_completions.mdH A D02-Jul-202124.1 KiB547434

user_guide.mdH A D02-Jul-202118.3 KiB638482

zsh_completions.goH A D02-Jul-20218.8 KiB259199

zsh_completions.mdH A D02-Jul-20213.6 KiB4936

README.md

1![cobra logo](https://cloud.githubusercontent.com/assets/173412/10886352/ad566232-814f-11e5-9cd0-aa101788c117.png)
2
3Cobra is both a library for creating powerful modern CLI applications as well as a program to generate applications and command files.
4
5Cobra is used in many Go projects such as [Kubernetes](http://kubernetes.io/),
6[Hugo](https://gohugo.io), and [Github CLI](https://github.com/cli/cli) to
7name a few. [This list](./projects_using_cobra.md) contains a more extensive list of projects using Cobra.
8
9[![](https://img.shields.io/github/workflow/status/spf13/cobra/Test?longCache=tru&label=Test&logo=github%20actions&logoColor=fff)](https://github.com/spf13/cobra/actions?query=workflow%3ATest)
10[![GoDoc](https://godoc.org/github.com/spf13/cobra?status.svg)](https://godoc.org/github.com/spf13/cobra)
11[![Go Report Card](https://goreportcard.com/badge/github.com/spf13/cobra)](https://goreportcard.com/report/github.com/spf13/cobra)
12[![Slack](https://img.shields.io/badge/Slack-cobra-brightgreen)](https://gophers.slack.com/archives/CD3LP1199)
13
14# Table of Contents
15
16- [Overview](#overview)
17- [Concepts](#concepts)
18  * [Commands](#commands)
19  * [Flags](#flags)
20- [Installing](#installing)
21- [Usage](#usage)
22  * [Using the Cobra Generator](user_guide.md#using-the-cobra-generator)
23  * [Using the Cobra Library](user_guide.md#using-the-cobra-library)
24  * [Working with Flags](user_guide.md#working-with-flags)
25  * [Positional and Custom Arguments](user_guide.md#positional-and-custom-arguments)
26  * [Example](user_guide.md#example)
27  * [Help Command](user_guide.md#help-command)
28  * [Usage Message](user_guide.md#usage-message)
29  * [PreRun and PostRun Hooks](user_guide.md#prerun-and-postrun-hooks)
30  * [Suggestions when "unknown command" happens](user_guide.md#suggestions-when-unknown-command-happens)
31  * [Generating documentation for your command](user_guide.md#generating-documentation-for-your-command)
32  * [Generating shell completions](user_guide.md#generating-shell-completions)
33- [Contributing](CONTRIBUTING.md)
34- [License](#license)
35
36# Overview
37
38Cobra is a library providing a simple interface to create powerful modern CLI
39interfaces similar to git & go tools.
40
41Cobra is also an application that will generate your application scaffolding to rapidly
42develop a Cobra-based application.
43
44Cobra provides:
45* Easy subcommand-based CLIs: `app server`, `app fetch`, etc.
46* Fully POSIX-compliant flags (including short & long versions)
47* Nested subcommands
48* Global, local and cascading flags
49* Easy generation of applications & commands with `cobra init appname` & `cobra add cmdname`
50* Intelligent suggestions (`app srver`... did you mean `app server`?)
51* Automatic help generation for commands and flags
52* Automatic help flag recognition of `-h`, `--help`, etc.
53* Automatically generated shell autocomplete for your application (bash, zsh, fish, powershell)
54* Automatically generated man pages for your application
55* Command aliases so you can change things without breaking them
56* The flexibility to define your own help, usage, etc.
57* Optional tight integration with [viper](http://github.com/spf13/viper) for 12-factor apps
58
59# Concepts
60
61Cobra is built on a structure of commands, arguments & flags.
62
63**Commands** represent actions, **Args** are things and **Flags** are modifiers for those actions.
64
65The best applications read like sentences when used, and as a result, users
66intuitively know how to interact with them.
67
68The pattern to follow is
69`APPNAME VERB NOUN --ADJECTIVE.`
70    or
71`APPNAME COMMAND ARG --FLAG`
72
73A few good real world examples may better illustrate this point.
74
75In the following example, 'server' is a command, and 'port' is a flag:
76
77    hugo server --port=1313
78
79In this command we are telling Git to clone the url bare.
80
81    git clone URL --bare
82
83## Commands
84
85Command is the central point of the application. Each interaction that
86the application supports will be contained in a Command. A command can
87have children commands and optionally run an action.
88
89In the example above, 'server' is the command.
90
91[More about cobra.Command](https://godoc.org/github.com/spf13/cobra#Command)
92
93## Flags
94
95A flag is a way to modify the behavior of a command. Cobra supports
96fully POSIX-compliant flags as well as the Go [flag package](https://golang.org/pkg/flag/).
97A Cobra command can define flags that persist through to children commands
98and flags that are only available to that command.
99
100In the example above, 'port' is the flag.
101
102Flag functionality is provided by the [pflag
103library](https://github.com/spf13/pflag), a fork of the flag standard library
104which maintains the same interface while adding POSIX compliance.
105
106# Installing
107Using Cobra is easy. First, use `go get` to install the latest version
108of the library. This command will install the `cobra` generator executable
109along with the library and its dependencies:
110
111    go get -u github.com/spf13/cobra
112
113Next, include Cobra in your application:
114
115```go
116import "github.com/spf13/cobra"
117```
118
119# Usage
120
121See [User Guide](user_guide.md).
122
123# License
124
125Cobra is released under the Apache 2.0 license. See [LICENSE.txt](https://github.com/spf13/cobra/blob/master/LICENSE.txt)
126