versiondispatch

package
v0.14.0 Latest Latest
Warning

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

Go to latest
Published: Jul 22, 2026 License: MIT Imports: 20 Imported by: 0

Documentation

Index

Constants

View Source
const (
	EnvCacheDir                         = "AL_CACHE_DIR"
	EnvNoNetwork                        = "AL_NO_NETWORK"
	EnvVersionOverride                  = "AL_VERSION"
	EnvShimActive                       = "AL_SHIM_ACTIVE"
	EnvDevelopmentBypassVersionDispatch = "AL_DEV_BYPASS_VERSION_DISPATCH" //nolint:gosec // Environment key, not a credential.

)

EnvCacheDir, EnvNoNetwork, EnvVersionOverride, EnvShimActive, and EnvDevelopmentBypassVersionDispatch define dispatch environment keys.

Variables

ErrDispatched signals that execution has been handed off to another binary.

Functions

func MaybeExec

func MaybeExec(args []string, currentVersion string, cwd string, stderr io.Writer, exit func(int)) error

MaybeExec checks for a pinned version and dispatches to it when needed. It returns ErrDispatched if execution was handed off.

func MaybeExecWithSystem

func MaybeExecWithSystem(sys System, args []string, currentVersion string, cwd string, exit func(int)) error

MaybeExecWithSystem checks for a pinned version and dispatches to it when needed. It returns ErrDispatched if execution was handed off.

func PrefetchVersion

func PrefetchVersion(versionInput string, progressOut io.Writer) error

PrefetchVersion ensures the requested release binary is cached locally. It validates the version, resolves the cache root, downloads the binary when missing, and writes download progress to progressOut.

Types

type RealSystem

type RealSystem struct {
	StderrWriter io.Writer
}

RealSystem implements System using the OS and root finder.

func (RealSystem) Chmod

func (RealSystem) Chmod(name string, mode os.FileMode) error

Chmod changes the mode of the named file.

func (RealSystem) CreateTemp

func (RealSystem) CreateTemp(dir, pattern string) (*os.File, error)

CreateTemp creates a new temporary file in the directory dir.

func (RealSystem) Environ

func (RealSystem) Environ() []string

Environ returns a copy of strings representing the environment.

func (RealSystem) ExecBinary

func (RealSystem) ExecBinary(path string, args []string, env []string, exit func(int)) error

ExecBinary replaces the current process with the provided binary.

func (RealSystem) FileSync

func (RealSystem) FileSync(f *os.File) error

FileSync commits the current contents of the file to stable storage.

func (RealSystem) FindAgentLayerRoot

func (RealSystem) FindAgentLayerRoot(start string) (string, bool, error)

FindAgentLayerRoot searches upwards from start for an .agent-layer directory.

func (RealSystem) Flock

func (RealSystem) Flock(fd int, how int) error

Flock applies or removes an advisory lock on the file represented by fd.

func (RealSystem) Getenv

func (RealSystem) Getenv(key string) string

Getenv returns the value of the environment variable named by key.

func (RealSystem) HTTPClient

func (RealSystem) HTTPClient() *http.Client

HTTPClient returns the shared HTTP client for download operations.

func (RealSystem) PlatformStrings

func (RealSystem) PlatformStrings() (string, string, error)

PlatformStrings returns the supported OS and architecture strings for release assets.

func (RealSystem) ReadFile

func (RealSystem) ReadFile(name string) ([]byte, error)

ReadFile reads the named file and returns the contents.

func (RealSystem) Rename

func (RealSystem) Rename(oldpath, newpath string) error

Rename renames (moves) oldpath to newpath.

func (RealSystem) Sleep

func (RealSystem) Sleep(d time.Duration)

Sleep pauses the current goroutine for at least the duration d.

func (RealSystem) Stat

func (RealSystem) Stat(name string) (os.FileInfo, error)

Stat returns a FileInfo describing the named file.

func (RealSystem) Stderr

func (r RealSystem) Stderr() io.Writer

Stderr returns the standard error writer.

func (RealSystem) UserCacheDir

func (RealSystem) UserCacheDir() (string, error)

UserCacheDir returns the default user cache directory.

type System

type System interface {
	UserCacheDir() (string, error)
	ReadFile(name string) ([]byte, error)
	Getenv(key string) string
	Environ() []string
	ExecBinary(path string, args []string, env []string, exit func(int)) error
	FindAgentLayerRoot(start string) (string, bool, error)
	Stderr() io.Writer
	Stat(name string) (os.FileInfo, error)
	Chmod(name string, mode os.FileMode) error
	Rename(oldpath, newpath string) error
	CreateTemp(dir, pattern string) (*os.File, error)
	FileSync(f *os.File) error
	PlatformStrings() (string, string, error)
	Sleep(d time.Duration)
	HTTPClient() *http.Client
	Flock(fd int, how int) error
}

System abstracts OS operations needed by version dispatch. This interface is intentionally package-local per Decision edefea6 to enable parallel-safe unit tests without shared global state. Other packages (install, sync) define their own System interfaces with operations specific to their needs.

Jump to

Keyboard shortcuts

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