portercontext

package
v1.0.0-alpha.19 Latest Latest
Warning

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

Go to latest
Published: Apr 7, 2022 License: Apache-2.0 Imports: 37 Imported by: 14

Documentation

Overview

Package portercontext contains our common application Context structure that we should use to interact with stdin/stdout/stederr, running commands, and interacting with the file system. It is not a replacement for the Go standard library context package.

Index

Constants

View Source
const (
	// MixinOutputsDir represents the directory where mixin output files are written/read
	MixinOutputsDir = "/cnab/app/porter/outputs"
)

Variables

This section is empty.

Functions

This section is empty.

Types

type CensoredWriter

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

CensoredWriter is a writer wrapping the provided io.Writer with logic to censor certain values

func NewCensoredWriter

func NewCensoredWriter(writer io.Writer) *CensoredWriter

NewCensoredWriter returns a new CensoredWriter

func (*CensoredWriter) SetSensitiveValues

func (cw *CensoredWriter) SetSensitiveValues(vals []string)

SetSensitiveValues sets values needing masking for an CensoredWriter

func (*CensoredWriter) Write

func (cw *CensoredWriter) Write(b []byte) (int, error)

Write implements io.Writer's Write method, performing necessary auditing while doing so

type CommandBuilder

type CommandBuilder func(name string, arg ...string) *exec.Cmd

type Context

type Context struct {
	Debug        bool
	DebugPlugins bool

	FileSystem         aferox.Aferox
	In                 io.Reader
	Out                io.Writer
	Err                io.Writer
	NewCommand         CommandBuilder
	PlugInDebugContext *PluginDebugContext
	// contains filtered or unexported fields
}

func FromContext

func FromContext(ctx context.Context) (*Context, bool)

func New

func New() *Context

New creates a new context in the specified directory.

func (*Context) Chdir

func (c *Context) Chdir(dir string)

Chdir changes the current working directory to the named directory.

func (*Context) Clearenv

func (c *Context) Clearenv()

Clearenv deletes all environment variables.

func (*Context) Close

func (c *Context) Close() error

func (*Context) Command

func (c *Context) Command(name string, arg ...string) *exec.Cmd

Command creates a new exec.Cmd using the context's current directory.

func (*Context) ConfigureLogging

func (c *Context) ConfigureLogging(ctx context.Context, cfg LogConfiguration)

ConfigureLogging applies different configuration to our logging and tracing.

func (*Context) CopyDirectory

func (c *Context) CopyDirectory(srcDir, destDir string, includeBaseDir bool) error

func (*Context) CopyFile

func (c *Context) CopyFile(src, dest string) error

func (*Context) Environ

func (c *Context) Environ() []string

Environ returns a copy of strings representing the environment, in the form "key=value".

func (*Context) EnvironMap

func (c *Context) EnvironMap() map[string]string

EnvironMap returns a map of the current environment variables.

func (*Context) ExpandEnv

func (c *Context) ExpandEnv(s string) string

ExpandEnv replaces ${var} or $var in the string according to the values of the current environment variables. References to undefined variables are replaced by the empty string.

func (*Context) Getenv

func (c *Context) Getenv(key string) string

Getenv retrieves the value of the environment variable named by the key. It returns the value, which will be empty if the variable is not present. To distinguish between an empty value and an unset value, use LookupEnv.

func (*Context) Getwd

func (c *Context) Getwd() string

Getwd returns a rooted path name corresponding to the current directory.

func (*Context) IsVerbose

func (c *Context) IsVerbose() bool

func (*Context) LookPath

func (c *Context) LookPath(file string) (string, bool)

This is a simplified exec.LookPath that checks if command is accessible given a PATH environment variable.

func (*Context) LookupEnv

func (c *Context) LookupEnv(key string) (string, bool)

LookupEnv retrieves the value of the environment variable named by the key. If the variable is present in the environment the value (which may be empty) is returned and the boolean is true. Otherwise the returned value will be empty and the boolean will be false.

func (*Context) SetSensitiveValues

func (c *Context) SetSensitiveValues(vals []string)

SetSensitiveValues sets the sensitive values needing masking on output/err streams

func (*Context) SetVerbose

func (c *Context) SetVerbose(value bool)

func (*Context) Setenv

func (c *Context) Setenv(key string, value string)

Setenv sets the value of the environment variable named by the key. It returns an error, if any.

func (*Context) StartRootSpan

func (c *Context) StartRootSpan(ctx context.Context, op string, attrs ...attribute.KeyValue) (context.Context, tracing.TraceLogger)

StartRootSpan creates the root tracing span for the porter application. This should only be done once.

func (*Context) Unsetenv

func (c *Context) Unsetenv(key string)

Unsetenv unsets a single environment variable.

func (*Context) WriteMixinOutputToFile

func (c *Context) WriteMixinOutputToFile(filename string, bytes []byte) error

WriteMixinOutputToFile writes the provided bytes (representing a mixin output) to a file named by the provided filename in Porter's mixin outputs directory

type LogConfiguration

type LogConfiguration struct {
	LogToFile            bool
	LogDirectory         string
	LogLevel             zapcore.Level
	LogCorrelationID     string
	StructuredLogs       bool
	TelemetryEnabled     bool
	TelemetryEndpoint    string
	TelemetryProtocol    string
	TelemetryInsecure    bool
	TelemetryCertificate string
	TelemetryCompression string
	TelemetryTimeout     string
	TelemetryHeaders     map[string]string
}

type PluginDebugContext

type PluginDebugContext struct {
	RunPlugInInDebugger    string
	PlugInWorkingDirectory string
	DebuggerPort           string
}

func NewPluginDebugContext

func NewPluginDebugContext(c *Context) *PluginDebugContext

type TestContext

type TestContext struct {
	*Context

	T *testing.T
	// contains filtered or unexported fields
}

func NewTestContext

func NewTestContext(t *testing.T) *TestContext

NewTestContext initializes a configuration suitable for testing, with the output buffered, and an in-memory file system, using the specified environment variables.

func (*TestContext) AddCleanupDir

func (c *TestContext) AddCleanupDir(dir string)

func (*TestContext) AddTestDirectory

func (c *TestContext) AddTestDirectory(srcDir, destDir string, mode ...os.FileMode)

AddTestDirectory adds a test directory where the filepath is relative to the test directory. mode is optional and should only be specified once

func (*TestContext) AddTestDirectoryFromRoot

func (c *TestContext) AddTestDirectoryFromRoot(srcDir, destDir string)

Use this when the directory you are referencing is in a different directory than the test.

func (*TestContext) AddTestDriver

func (c *TestContext) AddTestDriver(src, name string) string

func (*TestContext) AddTestFile

func (c *TestContext) AddTestFile(src, dest string, mode ...os.FileMode) []byte

AddTestFile adds a test file where the filepath is relative to the test directory. mode is optional and only the first one passed is used.

func (*TestContext) AddTestFileContents

func (c *TestContext) AddTestFileContents(file []byte, dest string) error

func (*TestContext) AddTestFileFromRoot

func (c *TestContext) AddTestFileFromRoot(src, dest string) []byte

AddTestFileFromRoot should be used when the testfile you are referencing is in a different directory than the test.

func (*TestContext) ClearOutputs

func (c *TestContext) ClearOutputs()

func (*TestContext) CompareGoldenFile

func (c *TestContext) CompareGoldenFile(goldenFile string, got string)

CompareGoldenFile checks if the specified string matches the content of a golden test file. When they are different and PORTER_UPDATE_TEST_FILES is true, the file is updated to match the new test output.

func (*TestContext) FindBinDir

func (c *TestContext) FindBinDir() string

FindBinDir returns the path to the bin directory of the repository where the test is currently running

func (*TestContext) FindRepoRoot

func (c *TestContext) FindRepoRoot() string

FindRepoRoot returns the path to the porter repository where the test is currently running

func (*TestContext) GetError

func (c *TestContext) GetError() string

GetError returns all text printed to stderr.

func (*TestContext) GetOutput

func (c *TestContext) GetOutput() string

GetOutput returns all text printed to stdout.

func (*TestContext) GetTestDefinitionDirectory

func (c *TestContext) GetTestDefinitionDirectory() string

func (*TestContext) NewTestCommand

func (c *TestContext) NewTestCommand(name string, args ...string) *exec.Cmd

func (*TestContext) Teardown

func (c *TestContext) Teardown()

func (*TestContext) UseFilesystem

func (c *TestContext) UseFilesystem() (testDir string, homeDir string)

UseFilesystem has porter's context use the OS filesystem instead of an in-memory filesystem Returns the test directory, and the temp porter home directory.

Jump to

Keyboard shortcuts

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