terraform/command
Alisdair McDiarmid 68558ccd54 backend/local: Replace CLI with view instance
This commit extracts the remaining UI logic from the local backend,
and removes access to the direct CLI output. This is replaced with an
instance of a `views.Operation` interface, which codifies the current
requirements for the local backend to interact with the user.

The exception to this at present is interactivity: approving a plan
still depends on the `UIIn` field for the backend. This is out of scope
for this commit and can be revisited separately, at which time the
`UIOut` field can also be removed.

Changes in support of this:

- Some instances of direct error output have been replaced with
  diagnostics, most notably in the emergency state backup handler. This
  requires reformatting the error messages to allow the diagnostic
  renderer to line-wrap them;
- The "in-automation" logic has moved out of the backend and into the
  view implementation;
- The plan, apply, refresh, and import commands instantiate a view and
  set it on the `backend.Operation` struct, as these are the only code
  paths which call the `local.Operation()` method that requires it;
- The show command requires the plan rendering code which is now in the
  views package, so there is a stub implementation of a `views.Show`
  interface there.

Other refactoring work in support of migrating these commands to the
common views code structure will come in follow-up PRs, at which point
we will be able to remove the UI instances from the unit tests for those
commands.
2021-02-18 12:08:08 -05:00
..
arguments cli: Add global view arguments parser 2021-02-12 09:56:02 -05:00
cliconfig Grammar nit: "setup" as a verb should be spelled "set up" 2021-01-26 20:39:11 +01:00
clistate clistate: Update clistate.Locker for command views 2021-02-16 07:19:22 -05:00
e2etest command: Use different warning messaging in init command and move above potentially confusing output (#27514) 2021-02-01 10:50:08 -05:00
format Mildwonkey/providers interface renaming (#27805) 2021-02-18 10:13:43 -05:00
jsonconfig cli: Fix for provider requirements in JSON plan 2021-02-05 14:01:58 -05:00
jsonplan command/jsonconfig: Use correct provider address to access schema 2020-04-06 09:24:23 -07:00
jsonprovider command/jsonprovider: staticcheck 2020-12-02 13:59:20 -05:00
jsonstate command: Fix terraform show not outputting child_modules properly in certain circumstances (#27352) 2021-01-11 12:31:20 -05:00
testdata Merge pull request #27697 from hashicorp/alisdair/json-plan-provider-required-versions 2021-02-16 09:05:14 -05:00
views backend/local: Replace CLI with view instance 2021-02-18 12:08:08 -05:00
webbrowser command: Revert local patch for pkg/browser 2020-12-10 09:27:02 -05:00
apply.go backend/local: Replace CLI with view instance 2021-02-18 12:08:08 -05:00
apply_destroy_test.go backend/local: Replace CLI with view instance 2021-02-18 12:08:08 -05:00
apply_test.go backend/local: Replace CLI with view instance 2021-02-18 12:08:08 -05:00
autocomplete.go terraform: Ugly huge change to weave in new State and Plan types 2018-10-16 19:11:09 -07:00
autocomplete_test.go command: use newer version of "complete" library 2017-12-05 10:24:04 -08:00
cli_ui.go adding new AskSecret to ColorizeUi 2015-04-29 13:07:13 -05:00
cli_ui_test.go command/*: colors on error messages (red) 2014-07-12 20:59:16 -07:00
command.go cli: Remove legacy positional path arguments 2021-02-02 13:21:26 -05:00
command_test.go cli: Add initial command views abstraction 2021-02-11 15:06:39 -05:00
console.go clistate: Update clistate.Locker for command views 2021-02-16 07:19:22 -05:00
console_interactive.go move remaining helper packages to internal 2021-01-20 13:54:00 -05:00
console_interactive_solaris.go command: split out and tag code so compilation works on Solaris 2016-11-14 00:32:01 -08:00
console_test.go Mildwonkey/providers interface renaming (#27805) 2021-02-18 10:13:43 -05:00
flag_kv.go cli: Improve error for invalid -target flags 2021-02-08 13:48:04 -05:00
flag_kv_test.go command: use helper/variables for flags and parsing 2016-12-10 14:30:40 -05:00
fmt.go command: Improve consistency of the command short descriptions 2020-10-26 09:55:21 -07:00
fmt_test.go command: remove unused method on pluginSHA256LockFile (#26402) 2020-09-29 08:46:51 -04:00
get.go command: Improve consistency of the command short descriptions 2020-10-26 09:55:21 -07:00
get_test.go cli: Remove legacy positional path arguments 2021-02-02 13:21:26 -05:00
graph.go cli: Remove positional plan argument from graph 2021-02-02 13:21:26 -05:00
graph_test.go cli: Remove positional plan argument from graph 2021-02-02 13:21:26 -05:00
hook_count.go cli: Move resource count code to command package 2021-01-29 15:29:35 -05:00
hook_count_test.go cli: Move resource count code to command package 2021-01-29 15:29:35 -05:00
hook_module_install.go Move module install functionality over to internal/initwd 2019-01-14 11:33:21 -08:00
import.go backend/local: Replace CLI with view instance 2021-02-18 12:08:08 -05:00
import_test.go Mildwonkey/providers interface renaming (#27805) 2021-02-18 10:13:43 -05:00
init.go cli: Remove legacy positional path arguments 2021-02-02 13:21:26 -05:00
init_test.go clistate: Update clistate.Locker for command views 2021-02-16 07:19:22 -05:00
login.go Add scopes support to password grant type 2020-09-15 19:32:41 -04:00
login_test.go Add command/login test for scopes 2020-09-15 19:30:48 -04:00
logout.go command: Simplify Meta.process helper method 2020-04-01 15:01:08 -04:00
logout_test.go command/logout: Add terraform logout command 2020-02-06 15:00:55 -05:00
meta.go cli: Migrate Terraform UI hook to command views 2021-02-16 07:18:22 -05:00
meta_backend.go clistate: Update clistate.Locker for command views 2021-02-16 07:19:22 -05:00
meta_backend_migrate.go clistate: Update clistate.Locker for command views 2021-02-16 07:19:22 -05:00
meta_backend_test.go clistate: Update clistate.Locker for command views 2021-02-16 07:19:22 -05:00
meta_config.go cli: Add initial command views abstraction 2021-02-11 15:06:39 -05:00
meta_dependencies.go command/init: Read, respect, and update provider dependency locks 2020-10-09 09:26:23 -07:00
meta_new.go prune dead code from command/meta 2019-07-18 16:11:41 -04:00
meta_providers.go command: Use different warning messaging in init command and move above potentially confusing output (#27514) 2021-02-01 10:50:08 -05:00
meta_test.go command staticcheck 2020-12-02 13:59:19 -05:00
meta_vars.go vendor: switch to HCL 2.0 in the HCL repository 2019-10-02 15:10:21 -07:00
output.go cli: Add global view arguments parser 2021-02-12 09:56:02 -05:00
output_test.go views: Expand test coverage for views.Output 2021-02-16 08:48:31 -05:00
plan.go backend/local: Replace CLI with view instance 2021-02-18 12:08:08 -05:00
plan_test.go backend/local: Replace CLI with view instance 2021-02-18 12:08:08 -05:00
plugins.go run built-in provisioners in-process 2020-12-02 12:45:00 -05:00
plugins_lock.go command: remove unused method on pluginSHA256LockFile (#26402) 2020-09-29 08:46:51 -04:00
plugins_lock_test.go command: remove unused method on pluginSHA256LockFile (#26402) 2020-09-29 08:46:51 -04:00
plugins_test.go Mildwonkey/providers interface renaming (#27805) 2021-02-18 10:13:43 -05:00
providers.go backend: Validate remote backend Terraform version 2020-11-19 13:19:40 -05:00
providers_lock.go command: Improve consistency of the command short descriptions 2020-10-26 09:55:21 -07:00
providers_mirror.go command: Improve consistency of the command short descriptions 2020-10-26 09:55:21 -07:00
providers_schema.go backend: Validate remote backend Terraform version 2020-11-19 13:19:40 -05:00
providers_schema_test.go deprecate helper/copy 2020-10-08 08:42:16 -04:00
providers_test.go internal: Fix lockfile constraint output for 1.2.* 2020-10-20 10:14:03 -04:00
push.go command: remove "terraform push" 2018-10-16 18:24:47 -07:00
refresh.go backend/local: Replace CLI with view instance 2021-02-18 12:08:08 -05:00
refresh_test.go Mildwonkey/providers interface renaming (#27805) 2021-02-18 10:13:43 -05:00
show.go backend/local: Replace CLI with view instance 2021-02-18 12:08:08 -05:00
show_test.go backend/local: Replace CLI with view instance 2021-02-18 12:08:08 -05:00
state_command.go Thread the environment through all commands 2017-02-28 16:35:46 -05:00
state_list.go command staticcheck 2020-12-02 13:59:19 -05:00
state_list_test.go command/state list: list resources in nested and expanded modules (#27268) 2020-12-14 11:07:15 -05:00
state_meta.go command/state list: list resources in nested and expanded modules (#27268) 2020-12-14 11:07:15 -05:00
state_mv.go clistate: Update clistate.Locker for command views 2021-02-16 07:19:22 -05:00
state_mv_test.go clistate: Update clistate.Locker for command views 2021-02-16 07:19:22 -05:00
state_pull.go docs: Note: state pull upgrades to current version 2021-01-25 10:31:11 -05:00
state_pull_test.go deprecate helper/copy 2020-10-08 08:42:16 -04:00
state_push.go clistate: Update clistate.Locker for command views 2021-02-16 07:19:22 -05:00
state_push_test.go clistate: Update clistate.Locker for command views 2021-02-16 07:19:22 -05:00
state_replace_provider.go clistate: Update clistate.Locker for command views 2021-02-16 07:19:22 -05:00
state_replace_provider_test.go clistate: Update clistate.Locker for command views 2021-02-16 07:19:22 -05:00
state_rm.go clistate: Update clistate.Locker for command views 2021-02-16 07:19:22 -05:00
state_rm_test.go clistate: Update clistate.Locker for command views 2021-02-16 07:19:22 -05:00
state_show.go command staticcheck 2020-12-02 13:59:19 -05:00
state_show_test.go Mildwonkey/providers interface renaming (#27805) 2021-02-18 10:13:43 -05:00
state_test.go command: Allow tests to run to completion without panics or hangs 2018-10-16 19:14:11 -07:00
taint.go clistate: Update clistate.Locker for command views 2021-02-16 07:19:22 -05:00
taint_test.go clistate: Update clistate.Locker for command views 2021-02-16 07:19:22 -05:00
ui_input.go Exit with error if UI input scan fails (#26509) 2020-10-21 14:10:06 -04:00
ui_input_test.go Exit with error if UI input scan fails (#26509) 2020-10-21 14:10:06 -04:00
unlock.go cli: Remove legacy positional path arguments 2021-02-02 13:21:26 -05:00
unlock_test.go clistate: Update clistate.Locker for command views 2021-02-16 07:19:22 -05:00
untaint.go clistate: Update clistate.Locker for command views 2021-02-16 07:19:22 -05:00
untaint_test.go clistate: Update clistate.Locker for command views 2021-02-16 07:19:22 -05:00
validate.go command: Use different warning messaging in init command and move above potentially confusing output (#27514) 2021-02-01 10:50:08 -05:00
validate_test.go Mildwonkey/providers interface renaming (#27805) 2021-02-18 10:13:43 -05:00
version.go Remove revision from version command 2021-01-12 16:35:30 -05:00
version_test.go Remove revision from version command 2021-01-12 16:35:30 -05:00
workspace_command.go command staticcheck 2020-12-02 13:59:19 -05:00
workspace_command_test.go clistate: Update clistate.Locker for command views 2021-02-16 07:19:22 -05:00
workspace_delete.go clistate: Update clistate.Locker for command views 2021-02-16 07:19:22 -05:00
workspace_list.go cli: Remove legacy positional path arguments 2021-02-02 13:21:26 -05:00
workspace_new.go clistate: Update clistate.Locker for command views 2021-02-16 07:19:22 -05:00
workspace_select.go cli: Remove legacy positional path arguments 2021-02-02 13:21:26 -05:00
workspace_show.go command: Always validate workspace name 2020-08-11 12:33:12 -04:00