Documentation ¶
Overview ¶
Package usage provides methods and structs for generating usage info for command-line tools
Index ¶
- Constants
- type About
- type Command
- type Example
- type Info
- func (i *Info) AddCommand(a ...string)
- func (i *Info) AddExample(a ...string)
- func (i *Info) AddGroup(group string)
- func (i *Info) AddOption(a ...string)
- func (i *Info) AddRawExample(a ...string)
- func (i *Info) AddSpoiler(spoiler string)
- func (i *Info) BoundOptions(cmd string, options ...string)
- func (i *Info) GetCommand(name string) *Command
- func (i *Info) GetOption(name string) *Option
- func (i *Info) Render()
- type Option
- type UpdateChecker
Examples ¶
Constants ¶
const ( DEFAULT_COMMANDS_COLOR_TAG = "{y}" DEFAULT_OPTIONS_COLOR_TAG = "{g}" DEFAULT_APP_NAME_COLOR_TAG = "{c*}" DEFAULT_APP_VER_COLOR_TAG = "{c}" )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type About ¶
type About struct { App string // App is application name Version string // Version is current application version in semver notation Release string // Release is current application release Build string // Build is current application build Desc string // Desc is short info about application Year int // Year is year when owner company was founded License string // License is name of license Owner string // Owner is name of owner (company/developer) BugTracker string // BugTracker is URL of bug tracker AppNameColorTag string // AppNameColorTag contains default app name color tag VersionColorTag string // VersionColorTag contains default app version color tag // Function for checking application updates UpdateChecker UpdateChecker }
About contains info about application
func (*About) Render ¶
func (a *About) Render()
Render prints version info to console
Example ¶
about := About{ App: "MySupperApp", Desc: "My super golang utility", Version: "1.0.1", Release: "-44", Build: "17746", // Number of build or commit hash Year: 2009, // Year when company was founded License: "MIT", Owner: "John Dow <john@domain.com>", AppNameColorTag: "{r*}", // Use custom color for application name VersionColorTag: "{r}", // Use custom color for application version } about.Render()
Output:
type Command ¶
type Command struct { Name string // Name is command name Desc string // Desc is command description Group string // Group is group name Args []string // Args is slice with arguments BoundOptions []string // BoundOptions is slice with long names of related options ColorTag string // ColorTag contains default color tag // contains filtered or unexported fields }
Command contains info about supported command
type Example ¶
type Example struct { Cmd string // Cmd is command usage example Desc string // Desc is usage description Raw bool // Raw is raw example flag (without automatic binary name appending) // contains filtered or unexported fields }
Example contains usage example
type Info ¶
type Info struct { AppNameColorTag string // AppNameColorTag contains default app name color tag CommandsColorTag string // CommandsColorTag contains default commands color tag OptionsColorTag string // OptionsColorTag contains default options color tag Breadcrumbs bool // Breadcrumbs is flag for using bread crumbs for commands and options output Name string // Name is app name Args []string // Args is slice with app arguments Spoiler string // Spoiler contains additional info Commands []*Command // Commands is list of supported commands Options []*Option // Options is list of supported options Examples []*Example // Examples is list of usage examples // contains filtered or unexported fields }
Info contains info about commands, options, and examples
func NewInfo ¶
NewInfo creates new info struct
Example ¶
// If the first argument (name) is empty, we use the name of the file // for info generation info := NewInfo("") // You can hardcode the name of the app if you want info = NewInfo("myapp") // You can customize some colors info.AppNameColorTag = "{c}" info.CommandsColorTag = "{y}" info.OptionsColorTag = "{m}" // You can define one or more arguments handled by your program info = NewInfo("", "files…") info = NewInfo("", "input", "num-files", "output") info.Render()
Output:
func (*Info) AddCommand ¶
AddCommand adds command (name, description, args)
Example ¶
info := NewInfo("", "items…") // You can define command arguments names info.AddCommand("add", "Add item", "file") // Also, you can mark optional arguments using ? prefix info.AddCommand("remove", "Remove item", "file", "?mode") info.AddCommand("list", "List items") // You can add custom commands groups info.AddGroup("External Commands") info.AddCommand("publish", "Publish items") // render all data info.Render()
Output:
func (*Info) AddExample ¶
AddExample adds example of application usage
Example ¶
info := NewInfo("", "items…") info.AddCommand("add", "Add item", "file") info.AddCommand("remove", "Remove item", "file", "?mode") // First part with application name will be automatically added info.AddExample("add file.dat") // This is example with description info.AddExample("remove file.dat", "Remove file.dat") // render all data info.Render()
Output:
func (*Info) AddGroup ¶
AddGroup adds new command group
Example ¶
info := NewInfo("", "items…") // You can add custom commands groups info.AddGroup("External Commands") // ... and add commands to this group info.AddCommand("publish", "Publish items") // You can define option (output) and payload (file) name info.AddOption("o:output", "Output", "file") // render all data info.Render()
Output:
func (*Info) AddOption ¶
AddOption adds option (name, description, args)
Example ¶
info := NewInfo("", "items…") // AddOption supports options in format used in options package info.AddOption("v:version", "Print version") // You can define option (output) and payload (file) name info.AddOption("o:output", "Output", "file") // render all data info.Render()
Output:
func (*Info) AddRawExample ¶
AddRawExample adds example of application usage without command prefix
Example ¶
info := NewInfo("", "items…") info.AddCommand("add", "Add item", "file") info.AddCommand("remove", "Remove item", "file", "?mode") // Raw example (without application name) without description info.AddRawExample("add file.dat") // Raw example (without application name) with description info.AddRawExample("remove file.dat", "Remove file.dat") // render all data info.Render()
Output:
func (*Info) AddSpoiler ¶
AddSpoiler adds spoiler
Example ¶
info := NewInfo("", "items…") // Spoiler will be shown before all commands and options info.AddSpoiler("This is my supadupa utility") // render all data info.Render()
Output:
func (*Info) BoundOptions ¶
BoundOptions bounds command with options
Example ¶
info := NewInfo("", "items…") info.AddCommand("publish", "Publish items") info.AddOption("o:output", "Output", "file") // Link command and options (will be used for completion generation) info.BoundOptions("publish", "o:output") // render all data info.Render()
Output:
func (*Info) GetCommand ¶
GetCommand tries to find command with given name
Example ¶
info := NewInfo("", "items…") // You can define command arguments names info.AddCommand("add", "Add item", "file") // Also, you can mark optional arguments using ? prefix info.AddCommand("remove", "Remove item", "file", "?mode") info.AddCommand("list", "List items") cmd := info.GetCommand("list") fmt.Println(cmd.Desc)
Output: List items
func (*Info) GetOption ¶
GetOption tries to find option with given name
Example ¶
info := NewInfo("", "items…") // AddOption supports options in format used in options package info.AddOption("v:version", "Print version") // You can define option argument name info.AddOption("o:output", "Output file", "file") opt := info.GetOption("o:output") fmt.Println(opt.Desc)
Output: Output file
func (*Info) Render ¶
func (i *Info) Render()
Render prints usage info to console
Example ¶
info := NewInfo("", "items…") // Spoiler will be shown before all commands and options info.AddSpoiler("This is my supadupa utility") // You can define command arguments names info.AddCommand("add", "Add item", "file") // Also, you can mark optional arguments using ? prefix info.AddCommand("remove", "Remove item", "file", "?mode") info.AddCommand("list", "List items") // You can add custom commands groups info.AddGroup("External Commands") info.AddCommand("publish", "Publish items") info.AddOption("--help", "Print help content") // AddOption supports options in format used in options package info.AddOption("v:version", "Print version") // You can define option argument name info.AddOption("o:output", "Output", "file") // Link command and options (will be used for completion generation) info.BoundOptions("publish", "o:output") // First part with application name will be automatically added info.AddExample("add file.dat") // This is example with description info.AddExample("remove file.dat", "Remove file.dat") // Raw example without description info.AddRawExample("add file.dat") // Raw example with description info.AddRawExample("remove file.dat", "Remove file.dat") // render all data info.Render()
Output:
type Option ¶
type Option struct { Short string // Short is short option name (with one minus prefix) Long string // Long is long option name (with two minuses prefix) Desc string // Desc is option description Arg string // Arg is option argument ColorTag string // ColorTag contains default color tag // contains filtered or unexported fields }
Option contains info about supported option
Directories ¶
Path | Synopsis |
---|---|
completion
|
|
bash
Package bash provides methods for generating bash completion
|
Package bash provides methods for generating bash completion |
fish
Package fish provides methods for generating fish completion
|
Package fish provides methods for generating fish completion |
zsh
Package zsh provides methods for generating zsh completion
|
Package zsh provides methods for generating zsh completion |
Package man contains methods for man pages generation
|
Package man contains methods for man pages generation |
Package update contains update checkers for different services
|
Package update contains update checkers for different services |