mirror of
https://github.com/opentofu/opentofu.git
synced 2024-12-26 00:41:27 -06:00
36d0a50427
This is part of a general effort to move all of Terraform's non-library package surface under internal in order to reinforce that these are for internal use within Terraform only. If you were previously importing packages under this prefix into an external codebase, you could pin to an earlier release tag as an interim solution until you've make a plan to achieve the same functionality some other way.
92 lines
3.7 KiB
Go
92 lines
3.7 KiB
Go
package backend
|
|
|
|
import (
|
|
"github.com/mitchellh/cli"
|
|
"github.com/mitchellh/colorstring"
|
|
|
|
"github.com/hashicorp/terraform/internal/terminal"
|
|
"github.com/hashicorp/terraform/internal/terraform"
|
|
)
|
|
|
|
// CLI is an optional interface that can be implemented to be initialized
|
|
// with information from the Terraform CLI. If this is implemented, this
|
|
// initialization function will be called with data to help interact better
|
|
// with a CLI.
|
|
//
|
|
// This interface was created to improve backend interaction with the
|
|
// official Terraform CLI while making it optional for API users to have
|
|
// to provide full CLI interaction to every backend.
|
|
//
|
|
// If you're implementing a Backend, it is acceptable to require CLI
|
|
// initialization. In this case, your backend should be coded to error
|
|
// on other methods (such as State, Operation) if CLI initialization was not
|
|
// done with all required fields.
|
|
type CLI interface {
|
|
Backend
|
|
|
|
// CLIInit is called once with options. The options passed to this
|
|
// function may not be modified after calling this since they can be
|
|
// read/written at any time by the Backend implementation.
|
|
//
|
|
// This may be called before or after Configure is called, so if settings
|
|
// here affect configurable settings, care should be taken to handle
|
|
// whether they should be overwritten or not.
|
|
CLIInit(*CLIOpts) error
|
|
}
|
|
|
|
// CLIOpts are the options passed into CLIInit for the CLI interface.
|
|
//
|
|
// These options represent the functionality the CLI exposes and often
|
|
// maps to meta-flags available on every CLI (such as -input).
|
|
//
|
|
// When implementing a backend, it isn't expected that every option applies.
|
|
// Your backend should be documented clearly to explain to end users what
|
|
// options have an affect and what won't. In some cases, it may even make sense
|
|
// to error in your backend when an option is set so that users don't make
|
|
// a critically incorrect assumption about behavior.
|
|
type CLIOpts struct {
|
|
// CLI and Colorize control the CLI output. If CLI is nil then no CLI
|
|
// output will be done. If CLIColor is nil then no coloring will be done.
|
|
CLI cli.Ui
|
|
CLIColor *colorstring.Colorize
|
|
|
|
// Streams describes the low-level streams for Stdout, Stderr and Stdin,
|
|
// including some metadata about whether they are terminals. Most output
|
|
// should go via the object in field CLI above, but Streams can be useful
|
|
// for tailoring the output to fit the attached terminal, for example.
|
|
Streams *terminal.Streams
|
|
|
|
// StatePath is the local path where state is read from.
|
|
//
|
|
// StateOutPath is the local path where the state will be written.
|
|
// If this is empty, it will default to StatePath.
|
|
//
|
|
// StateBackupPath is the local path where a backup file will be written.
|
|
// If this is empty, no backup will be taken.
|
|
StatePath string
|
|
StateOutPath string
|
|
StateBackupPath string
|
|
|
|
// ContextOpts are the base context options to set when initializing a
|
|
// Terraform context. Many of these will be overridden or merged by
|
|
// Operation. See Operation for more details.
|
|
ContextOpts *terraform.ContextOpts
|
|
|
|
// Input will ask for necessary input prior to performing any operations.
|
|
//
|
|
// Validation will perform validation prior to running an operation. The
|
|
// variable naming doesn't match the style of others since we have a func
|
|
// Validate.
|
|
Input bool
|
|
Validation bool
|
|
|
|
// RunningInAutomation indicates that commands are being run by an
|
|
// automated system rather than directly at a command prompt.
|
|
//
|
|
// This is a hint not to produce messages that expect that a user can
|
|
// run a follow-up command, perhaps because Terraform is running in
|
|
// some sort of workflow automation tool that abstracts away the
|
|
// exact commands that are being run.
|
|
RunningInAutomation bool
|
|
}
|