1 ![cobra logo](https://cloud.githubusercontent.com/assets/173412/10886352/ad566232-814f-11e5-9cd0-aa101788c117.png) |
1 ![cobra logo](https://cloud.githubusercontent.com/assets/173412/10886352/ad566232-814f-11e5-9cd0-aa101788c117.png) |
2 |
2 |
3 Cobra is both a library for creating powerful modern CLI applications as well as a program to generate applications and command files. |
3 Cobra is a library for creating powerful modern CLI applications. |
4 |
4 |
5 Cobra is used in many Go projects such as [Kubernetes](http://kubernetes.io/), |
5 Cobra is used in many Go projects such as [Kubernetes](https://kubernetes.io/), |
6 [Hugo](https://gohugo.io), and [Github CLI](https://github.com/cli/cli) to |
6 [Hugo](https://gohugo.io), and [Github CLI](https://github.com/cli/cli) to |
7 name a few. [This list](./projects_using_cobra.md) contains a more extensive list of projects using Cobra. |
7 name a few. [This list](./projects_using_cobra.md) contains a more extensive list of projects using Cobra. |
8 |
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) |
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) |
10 [![Go Reference](https://pkg.go.dev/badge/github.com/spf13/cobra.svg)](https://pkg.go.dev/github.com/spf13/cobra) |
11 [![Go Report Card](https://goreportcard.com/badge/github.com/spf13/cobra)](https://goreportcard.com/report/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) |
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 |
13 |
36 # Overview |
14 # Overview |
37 |
15 |
38 Cobra is a library providing a simple interface to create powerful modern CLI |
16 Cobra is a library providing a simple interface to create powerful modern CLI |
39 interfaces similar to git & go tools. |
17 interfaces similar to git & go tools. |
40 |
18 |
41 Cobra is also an application that will generate your application scaffolding to rapidly |
|
42 develop a Cobra-based application. |
|
43 |
|
44 Cobra provides: |
19 Cobra provides: |
45 * Easy subcommand-based CLIs: `app server`, `app fetch`, etc. |
20 * Easy subcommand-based CLIs: `app server`, `app fetch`, etc. |
46 * Fully POSIX-compliant flags (including short & long versions) |
21 * Fully POSIX-compliant flags (including short & long versions) |
47 * Nested subcommands |
22 * Nested subcommands |
48 * Global, local and cascading flags |
23 * 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`?) |
24 * Intelligent suggestions (`app srver`... did you mean `app server`?) |
51 * Automatic help generation for commands and flags |
25 * Automatic help generation for commands and flags |
52 * Automatic help flag recognition of `-h`, `--help`, etc. |
26 * Automatic help flag recognition of `-h`, `--help`, etc. |
53 * Automatically generated shell autocomplete for your application (bash, zsh, fish, powershell) |
27 * Automatically generated shell autocomplete for your application (bash, zsh, fish, powershell) |
54 * Automatically generated man pages for your application |
28 * Automatically generated man pages for your application |
55 * Command aliases so you can change things without breaking them |
29 * Command aliases so you can change things without breaking them |
56 * The flexibility to define your own help, usage, etc. |
30 * The flexibility to define your own help, usage, etc. |
57 * Optional tight integration with [viper](http://github.com/spf13/viper) for 12-factor apps |
31 * Optional seamless integration with [viper](https://github.com/spf13/viper) for 12-factor apps |
58 |
32 |
59 # Concepts |
33 # Concepts |
60 |
34 |
61 Cobra is built on a structure of commands, arguments & flags. |
35 Cobra is built on a structure of commands, arguments & flags. |
62 |
36 |
103 library](https://github.com/spf13/pflag), a fork of the flag standard library |
77 library](https://github.com/spf13/pflag), a fork of the flag standard library |
104 which maintains the same interface while adding POSIX compliance. |
78 which maintains the same interface while adding POSIX compliance. |
105 |
79 |
106 # Installing |
80 # Installing |
107 Using Cobra is easy. First, use `go get` to install the latest version |
81 Using Cobra is easy. First, use `go get` to install the latest version |
108 of the library. This command will install the `cobra` generator executable |
82 of the library. |
109 along with the library and its dependencies: |
|
110 |
83 |
111 go get -u github.com/spf13/cobra |
84 ``` |
|
85 go get -u github.com/spf13/cobra@latest |
|
86 ``` |
112 |
87 |
113 Next, include Cobra in your application: |
88 Next, include Cobra in your application: |
114 |
89 |
115 ```go |
90 ```go |
116 import "github.com/spf13/cobra" |
91 import "github.com/spf13/cobra" |
117 ``` |
92 ``` |
118 |
93 |
119 # Usage |
94 # Usage |
|
95 `cobra-cli` is a command line program to generate cobra applications and command files. |
|
96 It will bootstrap your application scaffolding to rapidly |
|
97 develop a Cobra-based application. It is the easiest way to incorporate Cobra into your application. |
120 |
98 |
121 See [User Guide](user_guide.md). |
99 It can be installed by running: |
|
100 |
|
101 ``` |
|
102 go install github.com/spf13/cobra-cli@latest |
|
103 ``` |
|
104 |
|
105 For complete details on using the Cobra-CLI generator, please read [The Cobra Generator README](https://github.com/spf13/cobra-cli/blob/main/README.md) |
|
106 |
|
107 For complete details on using the Cobra library, please read the [The Cobra User Guide](user_guide.md). |
122 |
108 |
123 # License |
109 # License |
124 |
110 |
125 Cobra is released under the Apache 2.0 license. See [LICENSE.txt](https://github.com/spf13/cobra/blob/master/LICENSE.txt) |
111 Cobra is released under the Apache 2.0 license. See [LICENSE.txt](https://github.com/spf13/cobra/blob/master/LICENSE.txt) |