terraform/command
Martin Atkins efe78b2910 main: new global option -chdir
This new option is intended to address the previous inconsistencies where
some older subcommands supported partially changing the target directory
(where Terraform would use the new directory inconsistently) where newer
commands did not support that override at all.

Instead, now Terraform will accept a -chdir command at the start of the
command line (before the subcommand) and will interpret it as a request
to direct all actions that would normally be taken in the current working
directory into the target directory instead. This is similar to options
offered by some other similar tools, such as the -C option in "make".

The new option is only accepted at the start of the command line (before
the subcommand) as a way to reflect that it is a global command (not
specific to a particular subcommand) and that it takes effect _before_
executing the subcommand. This also means it'll be forced to appear before
any other command-specific arguments that take file paths, which hopefully
communicates that those other arguments are interpreted relative to the
overridden path.

As a measure of pragmatism for existing uses, the path.cwd object in
the Terraform language will continue to return the _original_ working
directory (ignoring -chdir), in case that is important in some exceptional
workflows. The path.root object gives the root module directory, which
will always match the overriden working directory unless the user
simultaneously uses one of the legacy directory override arguments, which
is not a pattern we intend to support in the long run.

As a first step down the deprecation path, this commit adjusts the
documentation to de-emphasize the inconsistent old command line arguments,
including specific guidance on what to use instead for the main three
workflow commands, but all of those options remain supported in the same
way as they were before. In a later commit we'll make those arguments
produce a visible deprecation warning in Terraform's output, and then
in an even later commit we'll remove them entirely so that -chdir is the
single supported way to run Terraform from a directory other than the
one containing the root module configuration.
2020-09-04 15:31:08 -07:00
..
cliconfig provider cache: log errors and validate dir exists (#24993) 2020-05-19 15:32:36 -04:00
clistate command/clistate: Return an error on unlock failure (#25729) 2020-09-03 16:05:16 -04:00
e2etest main: new global option -chdir 2020-09-04 15:31:08 -07:00
format format: Don't wrap space-prefixed diag details 2020-09-01 14:02:19 -04:00
jsonconfig Ensure depends_on is in module calls for config 2020-08-20 07:49:03 +10:00
jsonplan command/jsonconfig: Use correct provider address to access schema 2020-04-06 09:24:23 -07:00
jsonprovider Mildwonkey/command tests (#24535) 2020-04-06 09:24:23 -07:00
jsonstate remove a few traces of states.EachMode 2020-04-30 09:22:15 -04:00
testdata command: Better in-house provider install errors 2020-09-01 14:02:19 -04:00
webbrowser command/login: Fix browser launcher for WSL users 2020-02-13 15:02:40 -05:00
012_config_upgrade.go command: Fix 0.12upgrade stub 2020-06-01 16:12:30 -04:00
012_config_upgrade_test.go command: remove 0.12upgrade (#24403) 2020-03-19 08:01:16 -04:00
013_config_upgrade.go command: Add redirect support to 0.13upgrade 2020-08-31 14:53:35 -04:00
013_config_upgrade_test.go command: Add redirect support to 0.13upgrade 2020-08-31 14:53:35 -04:00
apply.go command/apply: Remove implicit init call 2020-06-12 12:39:15 -04:00
apply_destroy_test.go command: apply and most of import tests passing 2020-04-06 09:24:23 -07:00
apply_test.go state: remove deprecated state package (#25490) 2020-08-11 11:43:01 -04: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 Implement the Enterprise enhanced remote backend 2018-08-03 22:22:55 +02:00
command_test.go command: Add redirect support to 0.13upgrade 2020-08-31 14:53:35 -04:00
console.go * backend/local: push responsibility for unlocking state into individual operations 2020-08-11 11:23:42 -04:00
console_interactive.go command: update "terraform console" for HCL2 2018-10-16 18:46:46 -07: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 fix command tests 2020-08-07 14:13:57 -04:00
debug_command.go Add debug command with json2dot 2016-11-21 11:59:20 -05:00
flag_kv.go vendor: switch to HCL 2.0 in the HCL repository 2019-10-02 15:10:21 -07:00
flag_kv_test.go command: use helper/variables for flags and parsing 2016-12-10 14:30:40 -05:00
fmt.go command: Simplify Meta.process helper method 2020-04-01 15:01:08 -04:00
fmt_test.go command/fmt: Include source snippets in errors 2020-03-26 14:00:26 -04:00
get.go command: Simplify Meta.process helper method 2020-04-01 15:01:08 -04:00
get_test.go command: Update "terraform get" to use the new module installer 2019-01-17 16:52:34 -08:00
graph.go command: Simplify Meta.process helper method 2020-04-01 15:01:08 -04:00
graph_test.go fix command tests 2020-08-07 14:13:57 -04:00
hook_module_install.go Move module install functionality over to internal/initwd 2019-01-14 11:33:21 -08:00
hook_ui.go command: Remove stubbed-out apply diff output code 2020-07-22 14:19:00 -04:00
hook_ui_test.go Merge pull request #18823 from minamijoyo/fix-multibyte-trucate 2019-08-06 14:24:24 -04:00
import.go * backend/local: push responsibility for unlocking state into individual operations 2020-08-11 11:23:42 -04:00
import_test.go terraform: Eval module call arguments for import 2020-08-17 17:14:12 -04:00
init.go command: Better in-house provider install errors 2020-09-01 14:02:19 -04:00
init_test.go command: Better in-house provider install errors 2020-09-01 14:02:19 -04:00
internal_plugin.go command/internal-plugin: Strip off TF_CLI_ARGS arguments 2019-12-05 15:00:51 -08:00
internal_plugin_list.go provisioner: new Puppet provisioner (#18851) 2019-06-10 15:31:21 -04:00
internal_plugin_test.go command: Make the tests compile again 2020-04-06 09:24:23 -07:00
login.go command/login: Require "yes" to confirm 2020-06-25 11:46:51 -04:00
login_test.go command/login: Require "yes" to confirm 2020-06-25 11:46:51 -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 main: new global option -chdir 2020-09-04 15:31:08 -07:00
meta_backend.go command: Always validate workspace name 2020-08-11 12:33:12 -04:00
meta_backend_migrate.go command: Always validate workspace name 2020-08-11 12:33:12 -04:00
meta_backend_test.go command: Always validate workspace name 2020-08-11 12:33:12 -04:00
meta_config.go don't print just warnings when loading backend cfg 2019-12-06 10:20:23 -05:00
meta_new.go prune dead code from command/meta 2019-07-18 16:11:41 -04:00
meta_providers.go providercache: Lazily detect executable file 2020-07-07 15:18:27 -04:00
meta_test.go Merge pull request #25847 from zachwhaley/fix-tf-cli-args-no-color 2020-08-24 10:13:59 -04:00
meta_vars.go vendor: switch to HCL 2.0 in the HCL repository 2019-10-02 15:10:21 -07:00
output.go command: Warn instead of error for empty output 2020-08-28 11:05:46 -04:00
output_test.go command: Warn instead of error for empty output 2020-08-28 11:05:46 -04:00
plan.go command: Always validate workspace name 2020-08-11 12:33:12 -04:00
plan_test.go terraform: remove state from `validate` graph walk (#26063) 2020-08-31 15:45:39 -04:00
plugins.go Typo: heirarchical => hierarchical 2020-07-23 15:09:22 +02:00
plugins_lock.go Standardize on log level "WARN" rather than "WARNING" 2018-01-16 18:05:26 -08:00
plugins_lock_test.go cleanup temp files from command tests 2018-03-28 13:08:38 -04:00
plugins_test.go command: Make the tests compile again 2020-04-06 09:24:23 -07:00
providers.go command: Always validate workspace name 2020-08-11 12:33:12 -04:00
providers_mirror.go internal/getproviders: decode and return any registry warnings (#25337) 2020-06-25 10:49:48 -04:00
providers_schema.go command: Simplify Meta.process helper method 2020-04-01 15:01:08 -04:00
providers_schema_test.go command: Make the tests compile again 2020-04-06 09:24:23 -07:00
providers_test.go command/providers: Show provider requirements tree 2020-06-09 14:21:53 -04:00
push.go command: remove "terraform push" 2018-10-16 18:24:47 -07:00
refresh.go command/refresh: fix state file path (#22885) 2020-06-04 10:24:53 -04:00
refresh_test.go remove unused DependsOn usage in state 2020-05-14 15:46:08 -04:00
show.go command: Always validate workspace name 2020-08-11 12:33:12 -04:00
show_test.go command/show: fix bug displaying provider config in json output of tf plan (#25577) 2020-07-14 15:28:31 -04:00
state_command.go Thread the environment through all commands 2017-02-28 16:35:46 -05:00
state_list.go command: Always validate workspace name 2020-08-11 12:33:12 -04:00
state_list_test.go command/state: update and fix the state list command 2018-10-19 16:31:12 +02:00
state_meta.go command: Always validate workspace name 2020-08-11 12:33:12 -04:00
state_mv.go command: Fix state mv for only resource in module 2020-08-11 11:54:35 -04:00
state_mv_test.go command: Fix state mv for only resource in module 2020-08-11 11:54:35 -04:00
state_pull.go command: Always validate workspace name 2020-08-11 12:33:12 -04:00
state_pull_test.go command: Use statemgr.Import and statemgr.Export for state push and pull 2018-11-19 09:02:35 -08:00
state_push.go command: Always validate workspace name 2020-08-11 12:33:12 -04:00
state_push_test.go command/state: lock when pushing state 2018-11-20 11:15:16 +01:00
state_replace_provider.go website: Add docs for state replace-provider 2020-04-23 11:41:57 -04:00
state_replace_provider_test.go command: Add state replace-provider subcommand 2020-04-02 08:15:52 -04:00
state_rm.go command: adjust exit code of state rm (#22300) 2020-06-24 14:03:23 -04:00
state_rm_test.go command: adjust exit code of state rm (#22300) 2020-06-24 14:03:23 -04:00
state_show.go command: Always validate workspace name 2020-08-11 12:33:12 -04:00
state_show_test.go Mildwonkey/command tests (#24535) 2020-04-06 09:24:23 -07: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 command: Always validate workspace name 2020-08-11 12:33:12 -04:00
taint_test.go finish provider ModuleInstance replacement 2020-03-11 14:19:52 -04:00
ui_input.go command/login: Require "yes" to confirm 2020-06-25 11:46:51 -04:00
ui_input_test.go Make sure UIInput keeps working after being canceled 2019-04-29 15:15:26 +02:00
unlock.go command: Always validate workspace name 2020-08-11 12:33:12 -04:00
unlock_test.go check for errors when loading a backend config 2019-03-12 17:57:26 -04:00
untaint.go command: Always validate workspace name 2020-08-11 12:33:12 -04:00
untaint_test.go finish provider ModuleInstance replacement 2020-03-11 14:19:52 -04:00
validate.go command: Always validate workspace name 2020-08-11 12:33:12 -04:00
validate_test.go vendor: go get github.com/hashicorp/hcl2@0b64543c968c 2019-06-18 17:37:24 -07:00
version.go fix outdated message output order 2020-08-11 23:27:29 +01:00
version_test.go test outdated version output 2020-08-12 21:22:39 +01:00
workspace_command.go command: Simplify Meta.process helper method 2020-04-01 15:01:08 -04:00
workspace_command_test.go command: Allow workspace delete with invalid name 2020-08-11 12:33:12 -04:00
workspace_delete.go command: Allow workspace delete with invalid name 2020-08-11 12:33:12 -04:00
workspace_list.go command: Simplify Meta.process helper method 2020-04-01 15:01:08 -04:00
workspace_new.go command: Simplify Meta.process helper method 2020-04-01 15:01:08 -04:00
workspace_select.go command: Simplify Meta.process helper method 2020-04-01 15:01:08 -04:00
workspace_show.go command: Always validate workspace name 2020-08-11 12:33:12 -04:00