cli

package
v11.0.0+incompatible Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 22, 2017 License: Apache-2.0 Imports: 22 Imported by: 0

Documentation

Overview

Package cli contains helper functions related to flag parsing and logging.

Index

Constants

View Source
const GiByte = humanize.GiByte

GiByte is a re-export for convenience of other things using it.

Variables

View Source
var LogLevel = logging.WARNING

LogLevel is the current verbosity level that is set. N.B. Setting this does *not* alter it. Use InitLogging for that.

View Source
var StdErrIsATerminal = terminal.IsTerminal(int(os.Stderr.Fd()))

StdErrIsATerminal is true if the process' stderr is an interactive TTY.

View Source
var StdOutIsATerminal = terminal.IsTerminal(int(os.Stdout.Fd()))

StdOutIsATerminal is true if the process' stdout is an interactive TTY.

View Source
var StripAnsi = regexp.MustCompile("\x1b[^m]+m")

StripAnsi is a regex to find & replace ANSI console escape sequences.

Functions

func Fprintf

func Fprintf(w io.Writer, msg string, args ...interface{})

Fprintf implements essentially fmt.Fprintf with replacements of some ANSI sequences, e.g. ${BOLD_RED} -> \x1bwhatever.

func InitFileLogging

func InitFileLogging(logFile string, logFileLevel int)

InitFileLogging initialises an optional logging backend to a file.

func InitLogging

func InitLogging(verbosity int)

InitLogging initialises logging backends.

func NewProgressReader

func NewProgressReader(reader io.ReadCloser, total string) io.ReadCloser

NewProgressReader returns a new progress bar reader.

func ParseFlags

func ParseFlags(appname string, data interface{}, args []string, completionHandler CompletionHandler) (*flags.Parser, []string, error)

ParseFlags parses the app's flags and returns the parser, any extra arguments, and any error encountered. It may exit if certain options are encountered (eg. --help).

func ParseFlagsFromArgsOrDie

func ParseFlagsFromArgsOrDie(appname, version string, data interface{}, args []string) *flags.Parser

ParseFlagsFromArgsOrDie is similar to ParseFlagsOrDie but allows control over the flags passed.

func ParseFlagsOrDie

func ParseFlagsOrDie(appname, version string, data interface{}) *flags.Parser

ParseFlagsOrDie parses the app's flags and dies if unsuccessful. Also dies if any unexpected arguments are passed.

func Printf

func Printf(msg string, args ...interface{})

Printf is a convenience wrapper to Fprintf that always writes to stderr.

func WindowSize

func WindowSize() (int, int, error)

WindowSize finds and returns the size of the console window as (rows, columns)

Types

type ByteSize

type ByteSize uint64

A ByteSize is used for flags that represent some quantity of bytes that can be passed as human-readable quantities (eg. "10G").

func (*ByteSize) UnmarshalFlag

func (b *ByteSize) UnmarshalFlag(in string) error

UnmarshalFlag implements the flags.Unmarshaler interface.

func (*ByteSize) UnmarshalText

func (b *ByteSize) UnmarshalText(text []byte) error

UnmarshalText implements the encoding.TextUnmarshaler interface

type CompletionHandler

type CompletionHandler func(parser *flags.Parser, items []flags.Completion)

A CompletionHandler is the type of function that our flags library uses to handle completions.

type Duration

type Duration time.Duration

A Duration is used for flags that represent a time duration; it's just a wrapper around time.Duration that implements the flags.Unmarshaler and encoding.TextUnmarshaler interfaces.

func (*Duration) UnmarshalFlag

func (d *Duration) UnmarshalFlag(in string) error

UnmarshalFlag implements the flags.Unmarshaler interface.

func (*Duration) UnmarshalText

func (d *Duration) UnmarshalText(text []byte) error

UnmarshalText implements the encoding.TextUnmarshaler interface

type Filepath

type Filepath string

A Filepath implements completion for file paths. This is distinct from upstream's in that it knows about completing into directories.

func (*Filepath) Complete

func (f *Filepath) Complete(match string) []flags.Completion

Complete implements the flags.Completer interface.

type LogBackend

type LogBackend struct {
	sync.Mutex                                                  // Protects access to LogMessages
	Rows, Cols, MaxRecords, InteractiveRows, MaxInteractiveRows int
	Output                                                      []string
	LogMessages                                                 *list.List
	Formatter                                                   logging.Formatter // TODO(pebers): seems a bit weird that we have to have this here, but it doesn't
	// contains filtered or unexported fields

} //               seem to be possible to retrieve the formatter from outside the package?

LogBackend is the backend we use for logging during the interactive console display.

func NewLogBackend

func NewLogBackend(interactiveRows int) *LogBackend

NewLogBackend constructs a new logging backend.

func (*LogBackend) Deactivate

func (backend *LogBackend) Deactivate()

Deactivate removes this backend as the currently active log backend.

func (*LogBackend) RecalcLines

func (backend *LogBackend) RecalcLines()

RecalcLines recalculates how many lines we have available, typically in response to the window size changing

func (*LogBackend) SetActive

func (backend *LogBackend) SetActive()

SetActive sets this backend as the currently active log backend.

type URL

type URL string

A URL is used for flags or config fields that represent a URL. It's just a string because it's more convenient that way; we haven't needed them as a net.URL so far.

func (*URL) String

func (u *URL) String() string

String implements the fmt.Stringer interface

func (*URL) UnmarshalFlag

func (u *URL) UnmarshalFlag(in string) error

UnmarshalFlag implements the flags.Unmarshaler interface.

func (*URL) UnmarshalText

func (u *URL) UnmarshalText(text []byte) error

UnmarshalText implements the encoding.TextUnmarshaler interface

type Version

type Version struct {
	semver.Version
	IsGTE bool
	IsSet bool
}

A Version is an extension to semver.Version extending it with the ability to recognise >= prefixes.

func (*Version) Semver

func (v *Version) Semver() semver.Version

Semver converts a Version to a semver.Version

func (Version) String

func (v Version) String() string

String implements the fmt.Stringer interface

func (*Version) UnmarshalFlag

func (v *Version) UnmarshalFlag(in string) error

UnmarshalFlag implements the flags.Unmarshaler interface.

func (*Version) UnmarshalText

func (v *Version) UnmarshalText(text []byte) error

UnmarshalText implements the encoding.TextUnmarshaler interface

func (*Version) Unset

func (v *Version) Unset()

Unset resets this version to the default.

func (*Version) VersionString

func (v *Version) VersionString() string

VersionString returns just the version, without any preceding >=.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL