terraform/internal/command
Kristin Laemmert 76a9aa288b
fix: move parsing action reference expressions into terraform (#37458)
* properly parse actions during configuration loading
* parse action expression during ActionPlanTransformer transform
* fix: properly parse action expressions (not traversals)

Previously, we were storing action and linkedResource expressions as Traversals during config loading. This PR replaces those fields with hcl.Expression, moves some validation around to account for the fact we don't have fully evaluated traversals yet (some checks have been removed entirely and will be replaced in a follow up PR, I wanted to get this right first), and finally moves the actual evaluation into the terraform graph build phase.

 I added a permissive parsing of the ActionExpression during ActionPlanTransformer.transformSingle (to get the config action) and store the action expression inside the nodeActionTriggerPlanExpand.lifecycleActionTrigger so it can be fully evaluated (with access to the resource's repetition data, which is necessary if the action in the resource's lifecycle block uses count.index or for_each.key) during nodeActionTriggerPlanExpand.DynamicExpand
2025-08-22 11:23:55 -04:00
..
arguments Pull init command's Run method logic into separate method in new file, enable accessing experimental version of init logic via experiments and flags or ENVs (#37327) 2025-07-30 19:11:33 +01:00
cliconfig Apply some new go collection features (#36818) 2025-04-02 16:20:16 +02:00
clistate command/workdir: Model the "backend state" file format 2024-03-08 17:21:53 -08:00
e2etest Skip query e2e test when we cannot build at runtime (#37307) 2025-07-09 13:51:16 +01:00
format fix: Avoid crash on test failure in BinaryOpExpr in function call (#37071) 2025-05-16 10:49:31 +00:00
jsonchecks Update copyright file headers to BUSL-1.1 2023-08-10 23:43:27 +01:00
jsonconfig fix: move parsing action reference expressions into terraform (#37458) 2025-08-22 11:23:55 -04:00
jsonformat action: move action trigger into nested struct 2025-08-18 13:53:09 +02:00
jsonfunction lang: stabilise templatestring func experiment (#35224) 2024-05-28 16:50:25 +01:00
jsonplan action: move action trigger into nested struct 2025-08-18 13:53:09 +02:00
jsonprovider marshal action schemas into json provider representation 2025-07-31 16:07:38 +02:00
jsonstate Apply some new go collection features (#36818) 2025-04-02 16:20:16 +02:00
junit Apply some new go collection features (#36818) 2025-04-02 16:20:16 +02:00
testdata PSS: Add alternative, experimental version of init command that downloads providers in two stages (#37350) 2025-08-18 11:20:18 +01:00
testing terraform test: enable deferrals in Terraform Test with the specified flag (#37370) 2025-07-30 11:03:41 +02:00
views add SRO message for planned action invocation 2025-08-22 10:38:47 +02:00
webbrowser Update copyright file headers to BUSL-1.1 2023-08-10 23:43:27 +01:00
workdir PSS: Add ability to create hashes of the state_store block and of its nested provider block (#37278) 2025-07-14 13:52:27 +01:00
apply.go Update help output to consistently call out -state and -state-out flags as legacy and related to the local backend. (#37446) 2025-08-14 09:57:43 +01:00
apply_destroy_test.go Update use of testChdir to standard library's t.Chdir, remove testChdir function from codebase (#37334) 2025-07-16 16:04:10 +01:00
apply_test.go Update use of testChdir to standard library's t.Chdir, remove testChdir function from codebase (#37334) 2025-07-16 16:04:10 +01:00
autocomplete.go Clarify usage of BackendOpts, rename field in struct to enable usage with PSS in future (#37085) 2025-07-11 11:08:56 +01:00
autocomplete_test.go Update use of testChdir to standard library's t.Chdir, remove testChdir function from codebase (#37334) 2025-07-16 16:04:10 +01:00
cli_ui.go adopt hashicorp/cli fork of mitchellh/cli (#34429) 2023-12-20 11:04:10 +00:00
cli_ui_test.go adopt hashicorp/cli fork of mitchellh/cli (#34429) 2023-12-20 11:04:10 +00:00
cloud.go Clarify usage of BackendOpts, rename field in struct to enable usage with PSS in future (#37085) 2025-07-11 11:08:56 +01:00
cloud_test.go PSS: Add alternative, experimental version of init command that downloads providers in two stages (#37350) 2025-08-18 11:20:18 +01:00
command.go Update comments about backend interfaces, enhanced vs operations, and fix copy-paste inaccuracies (#36716) 2025-03-20 16:52:00 +00:00
command_test.go Update use of testChdir to standard library's t.Chdir, remove testChdir function from codebase (#37334) 2025-07-16 16:04:10 +01:00
console.go Clarify usage of BackendOpts, rename field in struct to enable usage with PSS in future (#37085) 2025-07-11 11:08:56 +01:00
console_interactive.go terraform console: Multi-line entry support 2024-03-13 09:00:02 -07:00
console_interactive_solaris.go adopt hashicorp/cli fork of mitchellh/cli (#34429) 2023-12-20 11:04:10 +00:00
console_test.go Update use of testChdir to standard library's t.Chdir, remove testChdir function from codebase (#37334) 2025-07-16 16:04:10 +01:00
flag_kv.go move all command args from command/init to args/init 2024-04-17 12:26:23 -04:00
flag_kv_test.go Update copyright file headers to BUSL-1.1 2023-08-10 23:43:27 +01:00
fmt.go Support tfquery files in terraform fmt (#37347) 2025-07-23 16:52:19 +02:00
fmt_test.go Support tfquery files in terraform fmt (#37347) 2025-07-23 16:52:19 +02:00
get.go Update copyright file headers to BUSL-1.1 2023-08-10 23:43:27 +01:00
get_test.go Update use of testChdir to standard library's t.Chdir, remove testChdir function from codebase (#37334) 2025-07-16 16:04:10 +01:00
graph.go Clarify usage of BackendOpts, rename field in struct to enable usage with PSS in future (#37085) 2025-07-11 11:08:56 +01:00
graph_test.go Update use of testChdir to standard library's t.Chdir, remove testChdir function from codebase (#37334) 2025-07-16 16:04:10 +01:00
helper.go Rebrand Terraform Cloud to HCP Terraform 2024-04-23 16:12:59 -04:00
hook_module_install.go allow slashes in git url parameters 2024-08-09 13:54:13 -04:00
import.go Clarify usage of BackendOpts, rename field in struct to enable usage with PSS in future (#37085) 2025-07-11 11:08:56 +01:00
import_test.go Update use of testChdir to standard library's t.Chdir, remove testChdir function from codebase (#37334) 2025-07-16 16:04:10 +01:00
init.go PSS: Add alternative, experimental version of init command that downloads providers in two stages (#37350) 2025-08-18 11:20:18 +01:00
init_run.go PSS: Add alternative, experimental version of init command that downloads providers in two stages (#37350) 2025-08-18 11:20:18 +01:00
init_run_experiment.go PSS: Add alternative, experimental version of init command that downloads providers in two stages (#37350) 2025-08-18 11:20:18 +01:00
init_test.go PSS: Add alternative, experimental version of init command that downloads providers in two stages (#37350) 2025-08-18 11:20:18 +01:00
login.go Rebrand Terraform Cloud to HCP Terraform 2024-04-23 16:12:59 -04:00
login_test.go Rebrand Terraform Cloud to HCP Terraform 2024-04-23 16:12:59 -04:00
logout.go Update copyright file headers to BUSL-1.1 2023-08-10 23:43:27 +01:00
logout_test.go adopt hashicorp/cli fork of mitchellh/cli (#34429) 2023-12-20 11:04:10 +00:00
meta.go Update backend state file so it can describe PSS state (#37179) 2025-06-11 14:10:26 +00:00
meta_backend.go Update backend.Backend interface to return diagnostics from Workspaces and DeleteWorkspace methods (#37430) 2025-08-18 19:03:31 +01:00
meta_backend_migrate.go Update backend.Backend interface to return diagnostics from Workspaces and DeleteWorkspace methods (#37430) 2025-08-18 19:03:31 +01:00
meta_backend_migrate_test.go Inject appname to backend migration prompts 2024-04-23 16:12:59 -04:00
meta_backend_test.go Update backend.Backend interface to return diagnostics from Workspaces and DeleteWorkspace methods (#37430) 2025-08-18 19:03:31 +01:00
meta_config.go Add terraform query subcommand (TF-25494) (#37174) 2025-07-02 15:06:25 +02:00
meta_dependencies.go PSS: Add alternative, experimental version of init command that downloads providers in two stages (#37350) 2025-08-18 11:20:18 +01:00
meta_dependencies_test.go PSS: Add alternative, experimental version of init command that downloads providers in two stages (#37350) 2025-08-18 11:20:18 +01:00
meta_new.go Update copyright file headers to BUSL-1.1 2023-08-10 23:43:27 +01:00
meta_providers.go stacks: Don't require built-in providers to be listed under required providers. (#37234) 2025-06-18 17:02:27 +02:00
meta_test.go Update use of testChdir to standard library's t.Chdir, remove testChdir function from codebase (#37334) 2025-07-16 16:04:10 +01:00
meta_vars.go Update comments about backend interfaces, enhanced vs operations, and fix copy-paste inaccuracies (#36716) 2025-03-20 16:52:00 +00:00
metadata_command.go adopt hashicorp/cli fork of mitchellh/cli (#34429) 2023-12-20 11:04:10 +00:00
metadata_functions.go internal/command: Avoid ignoring ephemeralasnull function (#35651) 2024-09-04 10:25:11 +01:00
metadata_functions_test.go adopt hashicorp/cli fork of mitchellh/cli (#34429) 2023-12-20 11:04:10 +00:00
modules.go Add human view for modules cmd 2024-11-21 12:54:24 -05:00
modules_test.go Update use of testChdir to standard library's t.Chdir, remove testChdir function from codebase (#37334) 2025-07-16 16:04:10 +01:00
output.go Update help output to consistently call out -state and -state-out flags as legacy and related to the local backend. (#37446) 2025-08-14 09:57:43 +01:00
output_test.go Remove handling of ephemeral root outputs (#35809) 2024-10-03 18:10:30 +01:00
plan.go Clarify usage of BackendOpts, rename field in struct to enable usage with PSS in future (#37085) 2025-07-11 11:08:56 +01:00
plan_test.go Update use of testChdir to standard library's t.Chdir, remove testChdir function from codebase (#37334) 2025-07-16 16:04:10 +01:00
plugins.go Update copyright file headers to BUSL-1.1 2023-08-10 23:43:27 +01:00
plugins_lock.go Update copyright file headers to BUSL-1.1 2023-08-10 23:43:27 +01:00
plugins_lock_test.go Update copyright file headers to BUSL-1.1 2023-08-10 23:43:27 +01:00
plugins_test.go Update use of testChdir to standard library's t.Chdir, remove testChdir function from codebase (#37334) 2025-07-16 16:04:10 +01:00
providers.go Clarify usage of BackendOpts, rename field in struct to enable usage with PSS in future (#37085) 2025-07-11 11:08:56 +01:00
providers_lock.go move all command args from command/init to args/init 2024-04-17 12:26:23 -04:00
providers_lock_test.go Update use of testChdir to standard library's t.Chdir, remove testChdir function from codebase (#37334) 2025-07-16 16:04:10 +01:00
providers_mirror.go update helptext and docs 2024-06-14 16:23:36 -04:00
providers_mirror_test.go adopt hashicorp/cli fork of mitchellh/cli (#34429) 2023-12-20 11:04:10 +00:00
providers_schema.go Include list resource schemas in provider json schemas (TF-25497) (#37163) 2025-06-30 10:59:19 +02:00
providers_schema_test.go Update use of testChdir to standard library's t.Chdir, remove testChdir function from codebase (#37334) 2025-07-16 16:04:10 +01:00
providers_test.go Update use of testChdir to standard library's t.Chdir, remove testChdir function from codebase (#37334) 2025-07-16 16:04:10 +01:00
push.go Update copyright file headers to BUSL-1.1 2023-08-10 23:43:27 +01:00
query.go Clarify usage of BackendOpts, rename field in struct to enable usage with PSS in future (#37085) 2025-07-11 11:08:56 +01:00
query_test.go Append warning in CLI output when query result is empty (#37379) 2025-08-01 16:39:58 +02:00
refresh.go Clarify usage of BackendOpts, rename field in struct to enable usage with PSS in future (#37085) 2025-07-11 11:08:56 +01:00
refresh_test.go Update use of testChdir to standard library's t.Chdir, remove testChdir function from codebase (#37334) 2025-07-16 16:04:10 +01:00
show.go allow language experiments for terraform show 2025-07-31 16:07:38 +02:00
show_test.go add actions to the planfile config 2025-08-06 10:38:21 +02:00
stacks.go Ignore cmd arg parsing errors, we can expect these to happen 2025-07-29 11:39:43 -04:00
stacks_test.go make hostname and token optional, read token from cli file 2025-05-12 17:10:40 -04:00
state_command.go adopt hashicorp/cli fork of mitchellh/cli (#34429) 2023-12-20 11:04:10 +00:00
state_identities.go CLI command for listing state identities (#36705) 2025-03-18 18:13:06 +01:00
state_identities_test.go Update use of testChdir to standard library's t.Chdir, remove testChdir function from codebase (#37334) 2025-07-16 16:04:10 +01:00
state_list.go adopt hashicorp/cli fork of mitchellh/cli (#34429) 2023-12-20 11:04:10 +00:00
state_list_test.go Update use of testChdir to standard library's t.Chdir, remove testChdir function from codebase (#37334) 2025-07-16 16:04:10 +01:00
state_meta.go fix Descendants spelling 2024-10-09 11:09:02 -04:00
state_mv.go Update comments about backend interfaces, enhanced vs operations, and fix copy-paste inaccuracies (#36716) 2025-03-20 16:52:00 +00:00
state_mv_test.go Update use of testChdir to standard library's t.Chdir, remove testChdir function from codebase (#37334) 2025-07-16 16:04:10 +01:00
state_pull.go Update comments about backend interfaces, enhanced vs operations, and fix copy-paste inaccuracies (#36716) 2025-03-20 16:52:00 +00:00
state_pull_test.go Update use of testChdir to standard library's t.Chdir, remove testChdir function from codebase (#37334) 2025-07-16 16:04:10 +01:00
state_push.go Update comments about backend interfaces, enhanced vs operations, and fix copy-paste inaccuracies (#36716) 2025-03-20 16:52:00 +00:00
state_push_test.go Update use of testChdir to standard library's t.Chdir, remove testChdir function from codebase (#37334) 2025-07-16 16:04:10 +01:00
state_replace_provider.go adopt hashicorp/cli fork of mitchellh/cli (#34429) 2023-12-20 11:04:10 +00:00
state_replace_provider_test.go Update use of testChdir to standard library's t.Chdir, remove testChdir function from codebase (#37334) 2025-07-16 16:04:10 +01:00
state_rm.go Update help output to consistently call out -state and -state-out flags as legacy and related to the local backend. (#37446) 2025-08-14 09:57:43 +01:00
state_rm_test.go Update use of testChdir to standard library's t.Chdir, remove testChdir function from codebase (#37334) 2025-07-16 16:04:10 +01:00
state_show.go Include list resource schemas in provider json schemas (TF-25497) (#37163) 2025-06-30 10:59:19 +02:00
state_show_test.go Replace custom testCwd function with standard testing library (#37335) 2025-07-16 10:41:51 +00:00
state_test.go Replace custom testCwd function with standard testing library (#37335) 2025-07-16 10:41:51 +00:00
taint.go Update copyright file headers to BUSL-1.1 2023-08-10 23:43:27 +01:00
taint_test.go Update use of testChdir to standard library's t.Chdir, remove testChdir function from codebase (#37334) 2025-07-16 16:04:10 +01:00
telemetry.go add missing copyright headers 2023-08-16 11:21:49 -07:00
test.go terraform test: enable deferrals in Terraform Test with the specified flag (#37370) 2025-07-30 11:03:41 +02:00
test_test.go terraform test: enable deferrals in Terraform Test with the specified flag (#37370) 2025-07-30 11:03:41 +02:00
ui_input.go Update copyright file headers to BUSL-1.1 2023-08-10 23:43:27 +01:00
ui_input_test.go Update copyright file headers to BUSL-1.1 2023-08-10 23:43:27 +01:00
unlock.go Clarify usage of BackendOpts, rename field in struct to enable usage with PSS in future (#37085) 2025-07-11 11:08:56 +01:00
unlock_test.go Update use of testChdir to standard library's t.Chdir, remove testChdir function from codebase (#37334) 2025-07-16 16:04:10 +01:00
untaint.go Update copyright file headers to BUSL-1.1 2023-08-10 23:43:27 +01:00
untaint_test.go Replace custom testCwd function with standard testing library (#37335) 2025-07-16 10:41:51 +00:00
validate.go fix: check for local operations, separate warning for remote execution 2024-03-04 10:34:13 -05:00
validate_test.go Update use of testChdir to standard library's t.Chdir, remove testChdir function from codebase (#37334) 2025-07-16 16:04:10 +01:00
version.go Update URLs from www.terraform.io to developer.hashicorp.com (#36792) 2025-04-01 09:37:12 +01:00
version_test.go Update use of testChdir to standard library's t.Chdir, remove testChdir function from codebase (#37334) 2025-07-16 16:04:10 +01:00
workspace_command.go Make Terraform reject empty strings as invalid workspace names (#37267) 2025-06-26 12:26:58 +01:00
workspace_command_test.go Update use of testChdir to standard library's t.Chdir, remove testChdir function from codebase (#37334) 2025-07-16 16:04:10 +01:00
workspace_delete.go Update backend.Backend interface to return diagnostics from Workspaces and DeleteWorkspace methods (#37430) 2025-08-18 19:03:31 +01:00
workspace_list.go Update backend.Backend interface to return diagnostics from Workspaces and DeleteWorkspace methods (#37430) 2025-08-18 19:03:31 +01:00
workspace_new.go Update backend.Backend interface to return diagnostics from Workspaces and DeleteWorkspace methods (#37430) 2025-08-18 19:03:31 +01:00
workspace_select.go Update backend.Backend interface to return diagnostics from Workspaces and DeleteWorkspace methods (#37430) 2025-08-18 19:03:31 +01:00
workspace_show.go Update copyright file headers to BUSL-1.1 2023-08-10 23:43:27 +01:00