Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type APIService ¶
type APIService interface {
// Initialize configures the APIService with a default server and API key.
Initialize(server, APIKey string) error
// These functions are for convenience; for most cases, the server and API
// key don't change over the life of the command.
Get(URL string, body []byte) (res string, statusCode int, err error)
Post(URL string, body []byte) (res string, statusCode int, err error)
GetJSON(URL string, body []byte, v interface{}) (statusCode int, err error)
PostJSON(URL string, body []byte, v interface{}) (statusCode int, err error)
// This is the underlying implementation of the APIService's functionality.
MakeAPIRequest(endpoint *url.URL, method, APIKey string, body []byte) (res []byte, statusCode int, err error)
}
An APIService implements low-level HTTP functionality. The API package implements a high-level interface on top of this.
type ExecService ¶
type ExecService interface {
RunCWD(cmd string, args ...string) (stdout string, stderr string, err error)
Run(dir string, cmd string, args ...string) (stdout string, stderr string, err error)
Which(args []string, candidates ...string) (cmd string, version string, err error)
WhichWithResolver(resolver WhichResolver, candidates ...string) (cmd string, version string, err error)
}
An ExecService implements calls to external commands.
type FileService ¶
type FileService interface {
HasFile(pathElems ...string) bool
HasFolder(pathElems ...string) bool
ReadFile(pathElems ...string) ([]byte, error)
ReadJSON(v interface{}, pathElems ...string) error
ReadUnmarshal(unmarshal UnmarshalFunc, v interface{}, pathElems ...string) error
}
A FileService implements filesystem interaction.
type LogService ¶
type LogService interface {
// Returns the spinner. There should only be at most one spinner active at
// one time.
Spinner() Spinner
// Debug statements are meant for diagnosing and resolving issues. They are
// not shown unless `--debug` is specified. When `--debug` is set, all
// statements are logged with extra debug information.
Debugf(format string, args ...interface{})
// Notices inform the user of a non-error condition that is important.
Noticef(format string, args ...interface{})
// Warnings inform the user of a non-fatal error condition.
Warningf(format string, args ...interface{})
// Fatals cause the program to exit with a non-zero exit code. They inform
// the user of fatal error conditions.
Fatalf(format string, args ...interface{})
// Printing sends output to STDOUT.
Printf(format string, args ...interface{})
}
A LogService implements all logging functionality. All output is printed to STDERR, except for the specific case of `Printf()`, which prints to STDOUT. STDOUT should be reserved only for actual machine-parseable output, and STDERR should be used for all other user-interactive output.
type Services ¶
type Services struct {
Logger LogService
API APIService
Exec ExecService
FileSystem FileService
}
Services is a container for all services. Each service implements side-effecting functions.
type Spinner ¶
type Spinner interface {
Spin(message string)
Stop()
}
A Spinner provides user-interactive progress messages through ANSI codes.
type TimeoutError ¶
type TimeoutError = error
TimeoutError is an error caused by a connection timeout.
type UnmarshalFunc ¶
An UnmarshalFunc unmarshals a particular data format. `json.Unmarshal` is an example of this.
type WhichResolver ¶
A WhichResolver is a function which determines the version and existence of an external binary given a command.