gocommand

package
v0.0.0-...-478cd7b Latest Latest
Warning

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

Go to latest
Published: Feb 18, 2022 License: BSD-3-Clause Imports: 14 Imported by: 0

Documentation

Overview

Package gocommand is a helper for calling the go command.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GoVersion

func GoVersion(ctx context.Context, inv Invocation, r *Runner) (int, error)

GoVersion checks the go version by running "go list" with modules off. It returns the X in Go 1.X.

Types

type Invocation

type Invocation struct {
	Verb       string
	Args       []string
	BuildFlags []string
	ModFlag    string
	ModFile    string
	Overlay    string
	// If CleanEnv is set, the invocation will run only with the environment
	// in Env, not starting with os.Environ.
	CleanEnv   bool
	Env        []string
	WorkingDir string
	Logf       func(format string, args ...interface{})
}

An Invocation represents a call to the go command.

type ModuleJSON

type ModuleJSON struct {
	Path      string      // module path
	Version   string      // module version
	Versions  []string    // available module versions (with -versions)
	Replace   *ModuleJSON // replaced by this module
	Time      *time.Time  // time version was created
	Update    *ModuleJSON // available update, if any (with -u)
	Main      bool        // is this the main module?
	Indirect  bool        // is this module only an indirect dependency of main module?
	Dir       string      // directory holding files for this module, if any
	GoMod     string      // path to go.mod file used when loading this module, if any
	GoVersion string      // go version used in module
}

ModuleJSON holds information about a module.

func VendorEnabled

func VendorEnabled(ctx context.Context, inv Invocation, r *Runner) (*ModuleJSON, bool, error)

VendorEnabled reports whether vendoring is enabled. It takes a *Runner to execute Go commands with the supplied context.Context and Invocation. The Invocation can contain pre-defined fields, of which only Verb and Args are modified to run the appropriate Go command. Inspired by setDefaultBuildMod in modload/init.go

type Runner

type Runner struct {
	// contains filtered or unexported fields
}

An Runner will run go command invocations and serialize them if it sees a concurrency error.

func (*Runner) Run

func (runner *Runner) Run(ctx context.Context, inv Invocation) (*bytes.Buffer, error)

Run is a convenience wrapper around RunRaw. It returns only stdout and a "friendly" error.

func (*Runner) RunPiped

func (runner *Runner) RunPiped(ctx context.Context, inv Invocation, stdout, stderr io.Writer) error

RunPiped runs the invocation serially, always waiting for any concurrent invocations to complete first.

func (*Runner) RunRaw

func (runner *Runner) RunRaw(ctx context.Context, inv Invocation) (*bytes.Buffer, *bytes.Buffer, error, error)

RunRaw runs the invocation, serializing requests only if they fight over go.mod changes.

Jump to

Keyboard shortcuts

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