vendor/github.com/spf13/cobra/README.md
changeset 260 445e01aede7e
parent 256 6d9efbef00a9
child 265 05c40b36d3b2
equal deleted inserted replaced
259:db4911b0c721 260:445e01aede7e
     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 
    86 the application supports will be contained in a Command. A command can
    60 the application supports will be contained in a Command. A command can
    87 have children commands and optionally run an action.
    61 have children commands and optionally run an action.
    88 
    62 
    89 In the example above, 'server' is the command.
    63 In the example above, 'server' is the command.
    90 
    64 
    91 [More about cobra.Command](https://godoc.org/github.com/spf13/cobra#Command)
    65 [More about cobra.Command](https://pkg.go.dev/github.com/spf13/cobra#Command)
    92 
    66 
    93 ## Flags
    67 ## Flags
    94 
    68 
    95 A flag is a way to modify the behavior of a command. Cobra supports
    69 A flag is a way to modify the behavior of a command. Cobra supports
    96 fully POSIX-compliant flags as well as the Go [flag package](https://golang.org/pkg/flag/).
    70 fully POSIX-compliant flags as well as the Go [flag package](https://golang.org/pkg/flag/).
   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)