terraform/internal/command
Martin Atkins 65e0c448a0 workdir: Start of a new package for working directory state management
Thus far our various interactions with the bits of state we keep
associated with a working directory have all been implemented directly
inside the "command" package -- often in the huge command.Meta type -- and
not managed collectively via a single component.

There's too many little codepaths reading and writing from the working
directory and data directory to refactor it all in one step, but this is
an attempt at a first step towards a future where everything that reads
and writes from the current working directory would do so via an object
that encapsulates the implementation details and offers a high-level API
to read and write all of these session-persistent settings.

The design here continues our gradual path towards using a dependency
injection style where "package main" is solely responsible for directly
interacting with the OS command line, the OS environment, the OS working
directory, the stdio streams, and the CLI configuration, and then
communicating the resulting information to the rest of Terraform by wiring
together objects. It seems likely that eventually we'll have enough wiring
code in package main to justify a more explicit organization of that code,
but for this commit the new "workdir.Dir" object is just wired directly in
place of its predecessors, without any significant change of code
organization at that top layer.

This first commit focuses on the main files and directories we use to
find provider plugins, because a subsequent commit will lightly reorganize
the separation of concerns for plugin launching with a similar goal of
collecting all of the relevant logic together into one spot.
2021-09-10 14:56:49 -07:00
..
arguments commands: `terraform add` (#28874) 2021-06-17 12:08:37 -04:00
cliconfig Upgrade to Go 1.17 2021-08-17 15:20:05 -07:00
clistate Upgrade to Go 1.17 2021-08-17 15:20:05 -07:00
e2etest terraform: use ProtocolVersion from unmanaged providers' reattachConfig to chose the correct PluginClient (#28190) 2021-05-18 10:59:14 -04:00
format command: Render "moved" annotations in plan UI 2021-09-03 17:44:07 -04:00
jsonconfig allow json output to marshal ConfigModeAttr blocks 2021-09-03 13:53:52 -04:00
jsonplan Revert "json-output: Release format version 1.0" 2021-09-09 11:25:35 -04:00
jsonprovider Revert "json-output: Release format version 1.0" 2021-09-09 11:25:35 -04:00
jsonstate Revert "json-output: Release format version 1.0" 2021-09-09 11:25:35 -04:00
testdata Revert "json-output: Release format version 1.0" 2021-09-09 11:25:35 -04:00
views Revert "json-output: Release format version 1.0" 2021-09-09 11:25:35 -04:00
webbrowser Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00
workdir workdir: Start of a new package for working directory state management 2021-09-10 14:56:49 -07:00
add.go core: Functional-style API for terraform.Context 2021-08-30 13:59:14 -07:00
add_test.go command: Fix stale lock after running add 2021-08-20 13:22:11 -04:00
apply.go de-linting 2021-09-01 11:36:21 -04:00
apply_destroy_test.go Move states/ to internal/states/ 2021-05-17 14:09:07 -07:00
apply_test.go de-linting 2021-09-01 11:36:21 -04:00
autocomplete.go Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00
autocomplete_test.go Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00
cli_ui.go Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00
cli_ui_test.go Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00
command.go Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00
command_test.go workdir: Start of a new package for working directory state management 2021-09-10 14:56:49 -07:00
console.go core: Functional-style API for terraform.Context 2021-08-30 13:59:14 -07:00
console_interactive.go Upgrade to Go 1.17 2021-08-17 15:20:05 -07:00
console_interactive_solaris.go Upgrade to Go 1.17 2021-08-17 15:20:05 -07:00
console_test.go Move configs/ to internal/configs/ 2021-05-17 14:09:07 -07:00
flag_kv.go Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00
flag_kv_test.go Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00
fmt.go Move configs/ to internal/configs/ 2021-05-17 14:09:07 -07:00
fmt_test.go Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00
get.go Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00
get_test.go workdir: Start of a new package for working directory state management 2021-09-10 14:56:49 -07:00
graph.go core: Functional-style API for terraform.Context 2021-08-30 13:59:14 -07:00
graph_test.go Move states/ to internal/states/ 2021-05-17 14:09:07 -07:00
hook_module_install.go Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00
import.go core: Functional-style API for terraform.Context 2021-08-30 13:59:14 -07:00
import_test.go core: Replace contextComponentFactory with contextPlugins 2021-09-10 14:56:49 -07:00
init.go cli: Add -ignore-remote-version flag for init 2021-06-02 15:30:05 -04:00
init_test.go Move states/ to internal/states/ 2021-05-17 14:09:07 -07:00
login.go de-linting 2021-09-01 11:36:21 -04:00
login_test.go Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00
logout.go Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00
logout_test.go Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00
meta.go workdir: Start of a new package for working directory state management 2021-09-10 14:56:49 -07:00
meta_backend.go de-linting 2021-09-01 11:36:21 -04:00
meta_backend_migrate.go command: Suppress prompt for init -force-copy 2021-08-20 14:46:09 -04:00
meta_backend_test.go workdir: Start of a new package for working directory state management 2021-09-10 14:56:49 -07:00
meta_config.go workdir: Start of a new package for working directory state management 2021-09-10 14:56:49 -07:00
meta_dependencies.go Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00
meta_new.go Move plans/ to internal/plans/ 2021-05-17 14:09:07 -07:00
meta_providers.go workdir: Start of a new package for working directory state management 2021-09-10 14:56:49 -07:00
meta_test.go Move terraform/ to internal/terraform/ 2021-05-17 14:09:07 -07:00
meta_vars.go Move terraform/ to internal/terraform/ 2021-05-17 14:09:07 -07:00
output.go Move states/ to internal/states/ 2021-05-17 14:09:07 -07:00
output_test.go Move states/ to internal/states/ 2021-05-17 14:09:07 -07:00
plan.go Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00
plan_test.go core: Graph walk loads plugin schemas opportunistically 2021-09-10 14:56:49 -07:00
plugins.go workdir: Start of a new package for working directory state management 2021-09-10 14:56:49 -07:00
plugins_lock.go Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00
plugins_lock_test.go Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00
plugins_test.go Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00
providers.go Move configs/ to internal/configs/ 2021-05-17 14:09:07 -07:00
providers_lock.go providers subcommand tests (#28744) 2021-05-19 12:56:16 -04:00
providers_lock_test.go providers subcommand tests (#28744) 2021-05-19 12:56:16 -04:00
providers_mirror.go Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00
providers_mirror_test.go providers subcommand tests (#28744) 2021-05-19 12:56:16 -04:00
providers_schema.go core: Functional-style API for terraform.Context 2021-08-30 13:59:14 -07:00
providers_schema_test.go Move terraform/ to internal/terraform/ 2021-05-17 14:09:07 -07:00
providers_test.go Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00
push.go Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00
refresh.go de-linting 2021-09-01 11:36:21 -04:00
refresh_test.go Move states/ to internal/states/ 2021-05-17 14:09:07 -07:00
show.go core: Functional-style API for terraform.Context 2021-08-30 13:59:14 -07:00
show_test.go json-output: Omit unchanged resource_drift entries 2021-06-17 15:09:16 -04:00
state_command.go Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00
state_list.go Move states/ to internal/states/ 2021-05-17 14:09:07 -07:00
state_list_test.go Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00
state_meta.go de-linting 2021-09-01 11:36:21 -04:00
state_mv.go Move states/ to internal/states/ 2021-05-17 14:09:07 -07:00
state_mv_test.go de-linting 2021-09-01 11:36:21 -04:00
state_pull.go Move states/ to internal/states/ 2021-05-17 14:09:07 -07:00
state_pull_test.go Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00
state_push.go Move states/ to internal/states/ 2021-05-17 14:09:07 -07:00
state_push_test.go Move states/ to internal/states/ 2021-05-17 14:09:07 -07:00
state_replace_provider.go Move states/ to internal/states/ 2021-05-17 14:09:07 -07:00
state_replace_provider_test.go Move states/ to internal/states/ 2021-05-17 14:09:07 -07:00
state_rm.go Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00
state_rm_test.go Move states/ to internal/states/ 2021-05-17 14:09:07 -07:00
state_show.go core: Functional-style API for terraform.Context 2021-08-30 13:59:14 -07:00
state_show_test.go Move states/ to internal/states/ 2021-05-17 14:09:07 -07:00
state_test.go Move states/ to internal/states/ 2021-05-17 14:09:07 -07:00
taint.go Move terraform/ to internal/terraform/ 2021-05-17 14:09:07 -07:00
taint_test.go Move states/ to internal/states/ 2021-05-17 14:09:07 -07:00
test.go core: Functional-style API for terraform.Context 2021-08-30 13:59:14 -07:00
test_test.go Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00
ui_input.go Move terraform/ to internal/terraform/ 2021-05-17 14:09:07 -07:00
ui_input_test.go Move terraform/ to internal/terraform/ 2021-05-17 14:09:07 -07:00
unlock.go Move terraform/ to internal/terraform/ 2021-05-17 14:09:07 -07:00
unlock_test.go Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00
untaint.go Move states/ to internal/states/ 2021-05-17 14:09:07 -07:00
untaint_test.go Move states/ to internal/states/ 2021-05-17 14:09:07 -07:00
validate.go core: Functional-style API for terraform.Context 2021-08-30 13:59:14 -07:00
validate_test.go Move configs/ to internal/configs/ 2021-05-17 14:09:07 -07:00
version.go Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00
version_test.go Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00
workspace_command.go Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00
workspace_command_test.go Move states/ to internal/states/ 2021-05-17 14:09:07 -07:00
workspace_delete.go Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00
workspace_list.go Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00
workspace_new.go Move states/ to internal/states/ 2021-05-17 14:09:07 -07:00
workspace_select.go Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00
workspace_show.go Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00