Porter Go Library

Porter’s CLI is built upon a public Go library that is available to anyone who would like to automate Porter programmatically, or access a useful bit of functionality that isn’t exposed perfectly through the CLI.

🚨 Porter does not guarantee backwards compatibility in its library. From release to release we may make breaking changes to support new features or fix bugs in Porter. Especially before we reach v1.0.0, as more refactoring is going to happen.

Every Porter command is backed by a single function in the get.porter.sh/pkg/porter package that accepts a struct defining the flags and arguments specified at the command line. You should ALWAYS call opts.Validate when it is defined because that contains defaulting logic.

We recommend using the porter.Porter struct, which is created by porter.New() when automating Porter. There are more functions and packages exposed, but those are much more likely to change over time.

If you need to set stdin/stdout/stderr, you can set Porter.Out. The example below demonstrates how to capture stdout.