mirror of
https://github.com/spf13/cobra
synced 2025-05-06 13:27:26 +00:00
Some projects do not add copyright headers to the tops of their files. Right now you can specify `license: none` to prevent a license from being generated for the file. But you will still get a line like: `// Copyright © 2017 NAME HERE <EMAIL ADDRESS>` This change allows passing `author: none` to prevent that line from being generated. The change does not alter the defaults. However, it does slightly change the formatting templates to prevent the extraneous addition of newlines when an author or liciece line is not requested.
97 lines
2.8 KiB
Markdown
97 lines
2.8 KiB
Markdown
# Cobra Generator
|
|
|
|
Cobra provides its own program that will create your application and add any
|
|
commands you want. It's the easiest way to incorporate Cobra into your application.
|
|
|
|
In order to use the cobra command, compile it using the following command:
|
|
|
|
go get github.com/spf13/cobra/cobra
|
|
|
|
This will create the cobra executable under your `$GOPATH/bin` directory.
|
|
|
|
### cobra init
|
|
|
|
The `cobra init [app]` command will create your initial application code
|
|
for you. It is a very powerful application that will populate your program with
|
|
the right structure so you can immediately enjoy all the benefits of Cobra. It
|
|
will also automatically apply the license you specify to your application.
|
|
|
|
Cobra init is pretty smart. You can provide it a full path, or simply a path
|
|
similar to what is expected in the import.
|
|
|
|
```
|
|
cobra init github.com/spf13/newApp
|
|
```
|
|
|
|
### cobra add
|
|
|
|
Once an application is initialized, Cobra can create additional commands for you.
|
|
Let's say you created an app and you wanted the following commands for it:
|
|
|
|
* app serve
|
|
* app config
|
|
* app config create
|
|
|
|
In your project directory (where your main.go file is) you would run the following:
|
|
|
|
```
|
|
cobra add serve
|
|
cobra add config
|
|
cobra add create -p 'configCmd'
|
|
```
|
|
|
|
*Note: Use camelCase (not snake_case/snake-case) for command names.
|
|
Otherwise, you will encounter errors.
|
|
For example, `cobra add add-user` is incorrect, but `cobra add addUser` is valid.*
|
|
|
|
Once you have run these three commands you would have an app structure similar to
|
|
the following:
|
|
|
|
```
|
|
▾ app/
|
|
▾ cmd/
|
|
serve.go
|
|
config.go
|
|
create.go
|
|
main.go
|
|
```
|
|
|
|
At this point you can run `go run main.go` and it would run your app. `go run
|
|
main.go serve`, `go run main.go config`, `go run main.go config create` along
|
|
with `go run main.go help serve`, etc. would all work.
|
|
|
|
Obviously you haven't added your own code to these yet. The commands are ready
|
|
for you to give them their tasks. Have fun!
|
|
|
|
### Configuring the cobra generator
|
|
|
|
The Cobra generator will be easier to use if you provide a simple configuration
|
|
file which will help you eliminate providing a bunch of repeated information in
|
|
flags over and over.
|
|
|
|
An example ~/.cobra.yaml file:
|
|
|
|
```yaml
|
|
author: Steve Francia <spf@spf13.com>
|
|
license: MIT
|
|
```
|
|
|
|
You can specify no license by setting `license` to `none` or you can specify
|
|
a custom license:
|
|
|
|
```yaml
|
|
license:
|
|
header: This file is part of {{ .appName }}.
|
|
text: |
|
|
{{ .copyright }}
|
|
|
|
This is my license. There are many like it, but this one is mine.
|
|
My license is my best friend. It is my life. I must master it as I must
|
|
master my life.
|
|
```
|
|
|
|
You can also use built-in licenses. For example, **GPLv2**, **GPLv3**, **LGPL**,
|
|
**AGPL**, **MIT**, **2-Clause BSD** or **3-Clause BSD**.
|
|
|
|
You can prevent the generation of the `// Copyright © 2015 AUTHOR <EMAIL>` line
|
|
at the top of the file by setting `author` to `none`.
|