Documentation ¶
Overview ¶
Package shell provides functions to run shell commands and Terraform commands.
Index ¶
- Constants
- func ContextWithDetailedExitCode(ctx context.Context, detailedExitCode *DetailedExitCode) context.Context
- func ContextWithTerraformCommandHook(ctx context.Context, fn RunShellCommandFunc) context.Context
- func ExplainError(err error) string
- func GitLastReleaseTag(ctx context.Context, opts *options.TerragruntOptions, gitRepo *url.URL) (string, error)
- func GitRepoTags(ctx context.Context, opts *options.TerragruntOptions, gitRepo *url.URL) ([]string, error)
- func GitTopLevelDir(ctx context.Context, terragruntOptions *options.TerragruntOptions, path string) (string, error)
- func LastReleaseTag(tags []string) string
- func PromptUserForInput(ctx context.Context, prompt string, ...) (string, error)
- func PromptUserForYesNo(ctx context.Context, prompt string, ...) (bool, error)
- func RunShellCommand(ctx context.Context, opts *options.TerragruntOptions, command string, ...) error
- func RunShellCommandWithOutput(ctx context.Context, opts *options.TerragruntOptions, workingDir string, ...) (*util.CmdOutput, error)
- func RunTerraformCommand(ctx context.Context, opts *options.TerragruntOptions, args ...string) error
- func RunTerraformCommandWithOutput(ctx context.Context, opts *options.TerragruntOptions, args ...string) (*util.CmdOutput, error)
- type DetailedExitCode
- type RunShellCommandFunc
Constants ¶
const ( TerraformCommandContextKey ctxKey = iota RunCmdCacheContextKey DetailedExitCodeContextKey )
const (
DetailedExitCodeError = 1
)
const SignalForwardingDelay = time.Second * 15
SignalForwardingDelay is the time to wait before forwarding the signal to the subcommand.
The signal can be sent to the main process (only `terragrunt`) as well as the process group (`terragrunt` and `terraform`), for example: kill -INT <pid> # sends SIGINT only to the main process kill -INT -<pid> # sends SIGINT to the process group Since we cannot know how the signal is sent, we should give `tofu`/`terraform` time to gracefully exit if it receives the signal directly from the shell, to avoid sending the second interrupt signal to `tofu`/`terraform`.
Variables ¶
This section is empty.
Functions ¶
func ContextWithDetailedExitCode ¶ added in v0.69.1
func ContextWithDetailedExitCode(ctx context.Context, detailedExitCode *DetailedExitCode) context.Context
ContextWithDetailedExitCode returns a new context containing the given DetailedExitCode.
func ContextWithTerraformCommandHook ¶ added in v0.56.4
func ContextWithTerraformCommandHook(ctx context.Context, fn RunShellCommandFunc) context.Context
func ExplainError ¶ added in v0.45.5
ExplainError will try to explain the error to the user, if we know how to do so.
func GitLastReleaseTag ¶ added in v0.54.0
func GitLastReleaseTag(ctx context.Context, opts *options.TerragruntOptions, gitRepo *url.URL) (string, error)
GitLastReleaseTag fetches git repository last release tag.
func GitRepoTags ¶ added in v0.54.0
func GitRepoTags(ctx context.Context, opts *options.TerragruntOptions, gitRepo *url.URL) ([]string, error)
GitRepoTags fetches git repository tags from passed url.
func GitTopLevelDir ¶ added in v0.33.0
func GitTopLevelDir(ctx context.Context, terragruntOptions *options.TerragruntOptions, path string) (string, error)
GitTopLevelDir fetches git repository path from passed directory.
func LastReleaseTag ¶ added in v0.66.7
LastReleaseTag returns last release tag from passed tags slice.
func PromptUserForInput ¶
func PromptUserForInput(ctx context.Context, prompt string, terragruntOptions *options.TerragruntOptions) (string, error)
PromptUserForInput prompts the user for text in the CLI. Returns the text entered by the user.
func PromptUserForYesNo ¶
func PromptUserForYesNo(ctx context.Context, prompt string, terragruntOptions *options.TerragruntOptions) (bool, error)
PromptUserForYesNo prompts the user for a yes/no response and return true if they entered yes.
func RunShellCommand ¶
func RunShellCommand(ctx context.Context, opts *options.TerragruntOptions, command string, args ...string) error
RunShellCommand runs the given shell command.
func RunShellCommandWithOutput ¶ added in v0.17.0
func RunShellCommandWithOutput( ctx context.Context, opts *options.TerragruntOptions, workingDir string, suppressStdout bool, needsPTY bool, command string, args ...string, ) (*util.CmdOutput, error)
RunShellCommandWithOutput runs the specified shell command with the specified arguments.
Connect the command's stdin, stdout, and stderr to the currently running app. The command can be executed in a custom working directory by using the parameter `workingDir`. Terragrunt working directory will be assumed if empty string.
func RunTerraformCommand ¶ added in v0.12.10
func RunTerraformCommand(ctx context.Context, opts *options.TerragruntOptions, args ...string) error
RunTerraformCommand runs the given Terraform command.
func RunTerraformCommandWithOutput ¶ added in v0.17.0
func RunTerraformCommandWithOutput(ctx context.Context, opts *options.TerragruntOptions, args ...string) (*util.CmdOutput, error)
RunTerraformCommandWithOutput runs the given Terraform command, writing its stdout/stderr to the terminal AND returning stdout/stderr to this method's caller
Types ¶
type DetailedExitCode ¶ added in v0.69.1
type DetailedExitCode struct { Code int // contains filtered or unexported fields }
DetailedExitCode is the TF detailed exit code. https://opentofu.org/docs/cli/commands/plan/
func DetailedExitCodeFromContext ¶ added in v0.69.1
func DetailedExitCodeFromContext(ctx context.Context) *DetailedExitCode
DetailedExitCodeFromContext returns DetailedExitCode if the give context contains it.
func (*DetailedExitCode) Get ¶ added in v0.69.1
func (coder *DetailedExitCode) Get() int
Get returns exit code.
func (*DetailedExitCode) Set ¶ added in v0.69.1
func (coder *DetailedExitCode) Set(newCode int)
Set sets the newCode if the previous value is not 1 and the new value is greater than the previous one.
type RunShellCommandFunc ¶ added in v0.56.4
type RunShellCommandFunc func(ctx context.Context, opts *options.TerragruntOptions, args cli.Args) (*util.CmdOutput, error)
RunShellCommandFunc is a context value for `TerraformCommandContextKey` key, used to intercept shell commands.
func TerraformCommandHookFromContext ¶ added in v0.56.4
func TerraformCommandHookFromContext(ctx context.Context) RunShellCommandFunc
TerraformCommandHookFromContext returns `RunShellCommandFunc` from the context if it has been set, otherwise returns nil.