builder

package
v0.12.1-beta.1 Latest Latest
Warning

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

Go to latest
Published: Aug 28, 2019 License: MIT Imports: 10 Imported by: 29

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ExecuteSingleStepAction

func ExecuteSingleStepAction(cxt *context.Context, action ExecutableAction) (*bytes.Buffer, error)

ExecuteSingleStepAction runs the command represented by an ExecutableAction, where only a single step is allowed to be defined in the Action (which is what happens when Porter executes steps one at a time).

func ExecuteStep

func ExecuteStep(cxt *context.Context, step ExecutableStep) (*bytes.Buffer, error)

ExecuteStep runs the command represented by an ExecutableStep, piping stdout/stderr back to the context and returns the buffered output for subsequent processing.

func LoadAction

func LoadAction(cxt *context.Context, commandFile string, unmarshal func([]byte) (interface{}, error)) error

LoadAction reads input from stdin or a command file and uses the specified unmarshal function to unmarshal it into a typed Action. The unmarshal function is responsible for calling yaml.Unmarshal and passing in a reference to an appropriate Action instance.

Example:

  var action Action
	 err := builder.LoadAction(m.Context, opts.File, func(contents []byte) (interface{}, error) {
		 err := yaml.Unmarshal(contents, &action)
		 return &action, err
	 })

func UnmarshalAction

func UnmarshalAction(unmarshal func(interface{}) error, steps interface{}) ([]interface{}, error)

UnmarshalAction handles unmarshaling any action, given a pointer to a slice of Steps. Iterate over the results and cast back to the Steps to use the results.

 var steps []Step
	results, err := UnmarshalAction(unmarshal, &steps)
	if err != nil {
		return err
	}

	for _, result := range results {
		step := result.(*[]Step)
		a.Steps = append(a.Steps, *step...)
	}

Types

type ExecutableAction

type ExecutableAction interface {
	GetSteps() []ExecutableStep
}

type ExecutableStep

type ExecutableStep interface {
	GetCommand() string
	GetArguments() []string
	GetFlags() Flags
}

type Flag

type Flag struct {
	Name   string
	Values []string
}

Flag represents a flag passed to a mixin command.

func NewFlag

func NewFlag(name string, values ...string) Flag

NewFlag creates an instance of a Flag.

func (Flag) ToSlice

func (flag Flag) ToSlice() []string

ToSlice converts to a string array suitable of command arguments suitable for passing to exec.Command

type Flags

type Flags []Flag

func (Flags) Len

func (flags Flags) Len() int

func (Flags) Less

func (flags Flags) Less(i, j int) bool

func (Flags) MarshalYAML

func (flags Flags) MarshalYAML() (interface{}, error)

MarshalYAML writes out flags back into the proper format for mixin flags. Input: []Flags{ {"flag1", []string{"value"}}, {"flag2", []string{"value"}}, {"flag3", []string{"value1", "value2"} }

Is turned into

flags:

flag1: value
flag2: value
flag3:
- value1
- value2

func (Flags) Swap

func (flags Flags) Swap(i, j int)

func (*Flags) ToSlice

func (flags *Flags) ToSlice() []string

ToSlice converts to a string array suitable of command arguments suitable for passing to exec.Command

func (*Flags) UnmarshalYAML

func (flags *Flags) UnmarshalYAML(unmarshal func(interface{}) error) error

UnmarshalYAML takes input like this flags:

flag1: value
flag2: value
flag3:
- value1
- value2

and turns it into this:

[]Flags{ {"flag1", []string{"value"}}, {"flag2", []string{"value"}}, {"flag3", []string{"value1", "value2"} }

Jump to

Keyboard shortcuts

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