-
-
Notifications
You must be signed in to change notification settings - Fork 105
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix terraform clean bugs #870
base: main
Are you sure you want to change the base?
Conversation
📝 Walkthrough📝 WalkthroughWalkthroughThe pull request modifies the Changes
Assessment against linked issues
Possibly related PRs
Suggested reviewers
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
Documentation and Community
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (1)
internal/exec/terraform.go (1)
Line range hint
78-98
: Overall changes effectively address all reported bugs.The modifications to stack processing and component validation logic successfully fix all three reported issues with the
atmos terraform clean
command. The changes are minimal, focused, and maintain the existing behavior for other commands.Consider adding integration tests to cover these specific scenarios to prevent regression:
atmos terraform clean --everything
atmos terraform clean -s <stack>
atmos terraform clean <component>
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
internal/exec/terraform.go
(2 hunks)
🧰 Additional context used
📓 Learnings (1)
internal/exec/terraform.go (1)
Learnt from: haitham911
PR: cloudposse/atmos#727
File: internal/exec/terraform_clean.go:407-416
Timestamp: 2024-11-24T19:13:10.287Z
Learning: In `internal/exec/terraform_clean.go`, when `getStackTerraformStateFolder` returns an error in the `handleCleanSubCommand` function, the error is logged, and the process continues without returning the error.
🔇 Additional comments (2)
internal/exec/terraform.go (2)
96-98
: LGTM! Component enabled check now correctly handles clean command.
The condition info.SubCommand != "clean"
ensures that disabled components can still be cleaned up, while maintaining the validation for other commands.
78-83
: LGTM! Stack processing logic aligns with command requirements.
The changes correctly handle all three use cases:
clean --everything
: No stack processing when component is emptyclean -s <stack>
: Stack check only when stack is providedclean <component>
: No stack requirement when only component is provided
Let's verify the command behavior:
✅ Verification successful
Stack processing logic changes are correctly implemented and verified!
The code changes align perfectly with the intended behavior:
- When no component is provided (
ComponentFromArg == ""
), stack processing is skipped, which correctly handlesclean --everything
- Stack validation (
shouldCheckStack
) only occurs when a stack is explicitly provided, fixing theclean -s <stack>
case - The implementation in
handleCleanSubCommand
confirms proper handling of component-only cleaning without requiring a stack
The changes are supported by:
- Clear error handling in
handleCleanSubCommand
- Proper integration with the command help system
- Consistent behavior with the documented CLI usage at
atmos.tools/cli/commands/terraform/clean
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Description: Search for tests covering these scenarios
# Test: Look for clean command test cases
rg -A 5 "TestExecuteTerraform.*Clean"
# Test: Search for clean command implementation details
ast-grep --pattern 'func $_(t *testing.T) {
$$$
clean
$$$
}'
Length of output: 108
Script:
#!/bin/bash
# Let's try a broader search for test files and clean command implementation
# Search for test files related to terraform execution
fd "terraform.*test.*" --type f --exec rg -l "clean"
# Look for clean command implementation in terraform.go
rg -B 5 -A 10 "SubCommand == \"clean\"" internal/exec/terraform.go
# Search for any test functions that might test clean functionality
rg -B 2 -A 5 "func Test.*" --type go | rg -B 2 -A 5 -i "clean"
Length of output: 1832
Script:
#!/bin/bash
# Let's examine the handleCleanSubCommand function implementation
# Search for handleCleanSubCommand function
ast-grep --pattern 'func handleCleanSubCommand($$$) {
$$$
}'
# Look for any related error handling or validation logic
rg -B 2 -A 5 "handleCleanSubCommand" --type go
# Check for any clean-related constants or types that might affect the behavior
rg "clean" -i --type go internal/exec/
Length of output: 4429
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 2
🔭 Outside diff range comments (2)
website/docs/cli/commands/terraform/usage.mdx (1)
Line range hint
62-66
: Ensure consistency with the clean command documentation.The description of the
--everything
flag's behavior should be consistent with the dedicated clean command documentation and clearly explain the confirmation prompt behavior.- Use the `--everything` flag is the default behavior to delete all the local Terraform state files and directories (including `terraform.tfstate.d`) for all components and stacks. - Use the `--force` flag to bypass the safety confirmation prompt and force the deletion (use with caution). - - :::warning - The `--everything` flag performs destructive operations that can lead to permanent state loss. Always ensure you have remote state configured in your components before proceeding. - ::: + The command now defaults to the behavior of the `--everything` flag, which means it will: + - Delete all local Terraform state files and directories (including `terraform.tfstate.d`) + - Apply to all components and stacks + - Show a confirmation prompt before proceeding + + Use the `--force` flag to bypass the safety confirmation prompt (use with extreme caution). + + :::danger Data Loss Risk + This command performs destructive operations that can lead to permanent state loss: + 1. Always ensure you have remote state configured in your components + 2. Verify your state backups are current + 3. Consider the impact on other team members + :::internal/exec/help.go (1)
Line range hint
82-87
: Fix typos and improve clarity in help text.The help text contains typos and could be clearer about the default behavior.
- "Use '--everything' flag —everything is the default behavior to delete the Terraform state files and and directories with confirm message.\n\n" + - "Use --force to forcefully delete Terraform state files and directories for the component.\n\n" + - "- If no component is specified, the command will apply to all components and stacks.\n" + - "- If no stack is specified, the command will apply to all stacks for the specified component.\n" + - "Use '--skip-lock-file' flag to skip deleting the '.terraform.lock.hcl' file.\n\n" + - "If no component or stack is specified, the clean operation will apply globally to all components.\n\n" + + "IMPORTANT: By default, this command will attempt to delete all Terraform state files and directories.\n" + + "A confirmation prompt will be shown before deletion.\n\n" + + "Flags:\n" + + " --force Bypass the confirmation prompt (use with extreme caution)\n" + + " --skip-lock-file Skip deleting the '.terraform.lock.hcl' file\n\n" + + "Scope:\n" + + " - No component specified: Applies to all components and stacks\n" + + " - No stack specified: Applies to all stacks for the specified component\n\n" +Issues fixed:
- Removed duplicate "and" in "state files and and directories"
- Fixed em dash usage
- Removed redundant information about global operation
- Improved formatting for better readability
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (4)
internal/exec/help.go
(1 hunks)internal/exec/utils.go
(1 hunks)website/docs/cli/commands/terraform/terraform-clean.mdx
(1 hunks)website/docs/cli/commands/terraform/usage.mdx
(1 hunks)
🧰 Additional context used
📓 Learnings (3)
website/docs/cli/commands/terraform/terraform-clean.mdx (1)
Learnt from: osterman
PR: cloudposse/atmos#727
File: internal/exec/terraform.go:114-118
Timestamp: 2024-11-12T05:52:05.088Z
Learning: When `atmos terraform clean --everything` is used without specifying a component and without the `--force` flag, prompt the user for confirmation before deleting all components. Use the `--force` flag to skip the confirmation prompt.
website/docs/cli/commands/terraform/usage.mdx (1)
Learnt from: osterman
PR: cloudposse/atmos#727
File: internal/exec/terraform.go:114-118
Timestamp: 2024-11-12T05:52:05.088Z
Learning: When `atmos terraform clean --everything` is used without specifying a component and without the `--force` flag, prompt the user for confirmation before deleting all components. Use the `--force` flag to skip the confirmation prompt.
internal/exec/help.go (1)
Learnt from: osterman
PR: cloudposse/atmos#727
File: internal/exec/terraform.go:114-118
Timestamp: 2024-11-12T05:52:05.088Z
Learning: When `atmos terraform clean --everything` is used without specifying a component and without the `--force` flag, prompt the user for confirmation before deleting all components. Use the `--force` flag to skip the confirmation prompt.
🔇 Additional comments (1)
internal/exec/utils.go (1)
660-664
: LGTM! This change makes --everything
the default behavior for the clean command.
The modification correctly addresses the issue where atmos terraform clean --everything
was not working as expected. Now the --everything
flag is automatically appended for the clean command if not already present.
@coderabbitai can you add integration tests? |
Tip For best results, initiate chat on the files or code changes. @osterman: Here's a draft of minimal integration tests for the “terraform clean” command. The example below shows how you might structure a new test file named “terraform_clean_integration_test.go” in a dedicated integration tests folder (for instance, create a “test/integration” directory if it doesn't exist). This code invokes the “atmos terraform clean” command with different flag combinations, checking for exit codes and capturing stdout/stderr as needed. Below is an illustrative snippet in Go: package integration_test import ( func TestTerraformCleanEverything(t *testing.T) { func TestTerraformCleanSpecificStack(t *testing.T) { func TestTerraformCleanComponentNoStack(t *testing.T) { func TestTerraformCleanComponentAndStack(t *testing.T) { You can adjust the checks (e.g., the success string “deleted”) to something more reliable or parse logs or state files directly. If needed, you can also run prior setup steps in each test—such as creating dummy Terraform resources—to validate the cleanup more comprehensively. Hope this helps you get started! 🔗 Analysis chain🏁 Scripts executedThe following scripts were executed for the analysis: Script:
Length of output: 3303 Script:
Length of output: 2658 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@haitham911 thanks, please see comments
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (2)
website/src/components/Screengrabs/atmos-terraform-clean--help.html (1)
19-21
: Add confirmation prompt information for safety.Based on previous learnings, we should document that a confirmation prompt appears when using the command without the
--force
flag.Add this line after the force flag description:
Use '--force' to delete the files without confirmation. +Note: Without '--force', you will be prompted for confirmation before deletion. Use '--skip-lock-file' flag to skip deleting the lock file.
internal/exec/terraform_clean.go (1)
457-457
: Refine user message for clarity.The new message generation logic is straightforward. However, consider explaining the scope of removal more explicitly ("affecting all components"), reinforcing the gravity of deleting all local Terraform state.
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (8)
internal/exec/help.go
(2 hunks)internal/exec/terraform.go
(2 hunks)internal/exec/terraform_clean.go
(3 hunks)internal/exec/utils.go
(1 hunks)website/docs/cli/commands/terraform/terraform-clean.mdx
(2 hunks)website/docs/cli/commands/terraform/usage.mdx
(2 hunks)website/src/components/Screengrabs/atmos-terraform--help.html
(1 hunks)website/src/components/Screengrabs/atmos-terraform-clean--help.html
(2 hunks)
🚧 Files skipped from review as they are similar to previous changes (4)
- website/docs/cli/commands/terraform/terraform-clean.mdx
- internal/exec/terraform.go
- internal/exec/help.go
- website/docs/cli/commands/terraform/usage.mdx
🧰 Additional context used
📓 Learnings (1)
website/src/components/Screengrabs/atmos-terraform-clean--help.html (1)
Learnt from: osterman
PR: cloudposse/atmos#727
File: internal/exec/terraform.go:114-118
Timestamp: 2024-11-12T05:52:05.088Z
Learning: When `atmos terraform clean --everything` is used without specifying a component and without the `--force` flag, prompt the user for confirmation before deleting all components. Use the `--force` flag to skip the confirmation prompt.
🔇 Additional comments (7)
website/src/components/Screengrabs/atmos-terraform-clean--help.html (2)
Line range hint
11-17
: LGTM! Clear and comprehensive list of affected files.The documentation now provides a thorough breakdown of what the clean command affects. This clarity helps users understand the command's impact before execution.
Line range hint
19-24
: Documentation aligns with PR objectives.The updated help text correctly reflects the command's behavior:
- Removed confusing
--everything
flag- Clearly shows the correct command structure with component and stack
- Added new
--skip-lock-file
option for flexibilityThis addresses the reported issues in PR #870 where various command combinations were not working as expected.
internal/exec/utils.go (2)
668-670
: Looks good for detecting "clean" subcommand.This ensures the command "clean" is parsed correctly when provided alone. No immediate improvements are needed here.
672-673
: Prevent accidental help trigger for single-arg commands.Deferring help display to the newly handled "clean" case is consistent. This maintains clarity for one-argument commands while preserving "version" checks.
internal/exec/terraform_clean.go (2)
349-350
: Simplified logic is well-received.By removing the
everything
parameter and relying oninfo.ComponentFromArg
, you reduce complexity and unify the conditions under which files are cleared. This approach seems consistent with the intended functionality. Ensure all relevant test cases reflect this simpler path.
409-409
: Confirm multi-component usage.
initializeFilesToClear
now depends solely onComponentFromArg
. If your workflow involves cleaning multiple components in a single invocation, verify that the function and associated logic capture every required scenario.website/src/components/Screengrabs/atmos-terraform--help.html (1)
23-24
: Documentation aligns well with code changes.The updated description clarifies how the command deletes Terraform state files across components. This improvement mitigates confusion about the removal of
.terraform
and the lock file.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
🧹 Nitpick comments (1)
tests/cli_test.go (1)
304-305
: Incomplete comment.The comment
// get command error sta
is truncated. Consider removing or elaborating it to avoid confusion.- // get command error sta + // TODO: Handle command error status or remove this comment if unneeded.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 3
♻️ Duplicate comments (1)
tests/cli_test.go (1)
297-306
:⚠️ Potential issueMismatch between command arguments and error message.
The error message doesn't match the command being executed.
Fix duplicate environment variable.
The
ATMOS_COMPONENTS_TERRAFORM_APPLY_AUTO_APPROVE
environment variable is being appended twice.- envVars = append(envVars, "ATMOS_COMPONENTS_TERRAFORM_APPLY_AUTO_APPROVE=true")
🧹 Nitpick comments (1)
tests/cli_test.go (1)
251-280
: Consider extracting common test setup logic.The setup code is duplicated from
TestCLICommands
. Consider extracting this into a helper function to improve maintainability.+func setupTestEnvironment(t *testing.T) (*PathManager, string, string) { + startingDir, err := os.Getwd() + if err != nil { + t.Fatalf("Failed to get the current working directory: %v", err) + } + + pathManager := NewPathManager() + pathManager.Prepend("../build", "..") + if err := pathManager.Apply(); err != nil { + t.Fatalf("Failed to apply updated PATH: %v", err) + } + + binaryPath, err := exec.LookPath("atmos") + if err != nil { + t.Fatalf("Binary not found: %s. Current PATH: %s", "atmos", pathManager.GetPath()) + } + + return pathManager, startingDir, binaryPath +}
cmd := exec.Command(binaryPath, "terraform", "apply", "station", "-s", "dev") | ||
var stdout, stderr bytes.Buffer | ||
cmd.Stdout = &stdout | ||
cmd.Stderr = &stderr | ||
// ATMOS_COMPONENTS_TERRAFORM_APPLY_AUTO_APPROVE | ||
envVars := os.Environ() | ||
envVars = append(envVars, "ATMOS_COMPONENTS_TERRAFORM_APPLY_AUTO_APPROVE=true") | ||
cmd.Env = envVars | ||
|
||
// run terraform apply station -s dev and terraform apply station -s prod | ||
err = cmd.Run() | ||
if err != nil { | ||
t.Log(stdout.String()) | ||
t.Fatalf("Failed to run terraform apply station -s dev: %v", stderr.String()) | ||
return | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Improve command execution and error handling.
The command execution pattern could be improved in several ways:
- Reuse stdout/stderr buffers across commands
- Better error handling with more context
- Extract common command execution logic
+func executeAtmosCommand(t *testing.T, binaryPath string, args []string, env []string) (string, string, error) {
+ cmd := exec.Command(binaryPath, args...)
+ var stdout, stderr bytes.Buffer
+ cmd.Stdout = &stdout
+ cmd.Stderr = &stderr
+ cmd.Env = env
+ err := cmd.Run()
+ return stdout.String(), stderr.String(), err
+}
Committable suggestion skipped: line range outside the PR's diff.
// get command error sta | ||
// check if the state files and directories for the component and stack are exist | ||
stateFiles := []string{ | ||
"./components/terraform/weather/.terraform", | ||
"./components/terraform/weather/terraform.tfstate.d", | ||
"./components/terraform/weather/.terraform.lock.hcl", | ||
} | ||
for _, file := range stateFiles { | ||
fileAbs, err := filepath.Abs(file) | ||
if err != nil { | ||
t.Fatalf("Failed to resolve absolute path for %q: %v", file, err) | ||
} | ||
if _, err := os.Stat(fileAbs); errors.Is(err, os.ErrNotExist) { | ||
t.Errorf("Reason: Expected file exist: %q", fileAbs) | ||
return | ||
} | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Improve state file verification logic.
Several issues to address:
- Early returns could prevent proper test cleanup
- Hardcoded paths could be more flexible
- Incomplete comment on line 307
- // get command error sta
+ // check terraform state files existence
stateFiles := []string{
- "./components/terraform/weather/.terraform",
- "./components/terraform/weather/terraform.tfstate.d",
- "./components/terraform/weather/.terraform.lock.hcl",
+ filepath.Join("components", "terraform", "weather", ".terraform"),
+ filepath.Join("components", "terraform", "weather", "terraform.tfstate.d"),
+ filepath.Join("components", "terraform", "weather", ".terraform.lock.hcl"),
}
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
// get command error sta | |
// check if the state files and directories for the component and stack are exist | |
stateFiles := []string{ | |
"./components/terraform/weather/.terraform", | |
"./components/terraform/weather/terraform.tfstate.d", | |
"./components/terraform/weather/.terraform.lock.hcl", | |
} | |
for _, file := range stateFiles { | |
fileAbs, err := filepath.Abs(file) | |
if err != nil { | |
t.Fatalf("Failed to resolve absolute path for %q: %v", file, err) | |
} | |
if _, err := os.Stat(fileAbs); errors.Is(err, os.ErrNotExist) { | |
t.Errorf("Reason: Expected file exist: %q", fileAbs) | |
return | |
} | |
} | |
// check terraform state files existence | |
stateFiles := []string{ | |
filepath.Join("components", "terraform", "weather", ".terraform"), | |
filepath.Join("components", "terraform", "weather", "terraform.tfstate.d"), | |
filepath.Join("components", "terraform", "weather", ".terraform.lock.hcl"), | |
} | |
for _, file := range stateFiles { | |
fileAbs, err := filepath.Abs(file) | |
if err != nil { | |
t.Fatalf("Failed to resolve absolute path for %q: %v", file, err) | |
} | |
if _, err := os.Stat(fileAbs); errors.Is(err, os.ErrNotExist) { | |
t.Errorf("Reason: Expected file exist: %q", fileAbs) | |
return | |
} | |
} |
|
||
// run atmos terraform clean | ||
cmd = exec.Command(binaryPath, "terraform", "clean", "--force") | ||
err = cmd.Run() | ||
if err != nil { | ||
t.Log(stdout.String()) | ||
t.Fatalf("Failed to run atmos terraform clean: %v", stderr.String()) | ||
} | ||
// check if the state files and directories for the component and stack are deleted | ||
for _, file := range stateFiles { | ||
fileAbs, err := filepath.Abs(file) | ||
if err != nil { | ||
t.Fatalf("Failed to resolve absolute path for %q: %v", file, err) | ||
} | ||
_, err = os.Stat(fileAbs) | ||
if err != nil { | ||
if errors.Is(err, os.ErrNotExist) { | ||
continue | ||
} | ||
t.Errorf("Reason: error %q", fileAbs) | ||
return | ||
|
||
} | ||
return | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Codebase verification
Improve clean command test verification logic
The review comment is correct. Looking at the implementation in internal/exec/terraform_clean.go
and the test in tests/cli_test.go
, the test needs improvement. Here's why:
- The unconditional
return
statements will exit the test prematurely, potentially missing other undeleted files - The error message doesn't clearly indicate which files weren't cleaned up
- The test should verify the clean operation's behavior as implemented in
handleCleanSubCommand
Suggested improvements:
- Replace unconditional returns with a
failed
flag as proposed - Enhance error message to clearly identify undeleted files
- Consider adding verification of
.terraform/environment
file deletion sincecleanTerraformWorkspace
is part of the clean operation
🔗 Analysis chain
Fix clean command verification logic.
The verification has several issues:
- Unconditional return at line 347 could cause false positives
- Error message could be more descriptive
- Missing verification of command output
- return
+ t.Errorf("Expected file %q to be deleted, but it still exists", fileAbs)
+ failed = true
}
- return
+ if failed {
+ t.Fail()
+ }
Also, consider adding verification of the command output to ensure it matches the expected behavior from the PR objectives.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Description: Verify the output of terraform clean command matches expected behavior
# Test: Check if the command output contains expected success message
cmd_output=$(atmos terraform clean --force 2>&1)
echo "$cmd_output" | grep -q "deleted" || echo "Command output doesn't indicate successful deletion"
Length of output: 382
Script:
#!/bin/bash
# Let's check the implementation of the clean command to understand expected output
ast-grep --pattern 'func $_($$$ *cli.Context) error {
$$$
clean($$$)
$$$
}'
Length of output: 83
Script:
#!/bin/bash
# Let's check the test file more thoroughly
rg -A 5 "terraform clean" tests/cli_test.go
Length of output: 448
Script:
#!/bin/bash
# Check if there are any other tests for clean command
rg "TestClean" tests/
Length of output: 21
Script:
#!/bin/bash
# Let's check the clean command implementation with a different pattern
ast-grep --pattern 'func clean($$$) {
$$$
}'
Length of output: 48
Script:
#!/bin/bash
# Let's look for any clean-related functions
rg -B 2 -A 5 "func.*[Cc]lean" .
Length of output: 1790
Script:
#!/bin/bash
# Check the test setup for stateFiles
rg -B 5 "stateFiles :=" tests/cli_test.go
Length of output: 270
💥 This pull request now has conflicts. Could you fix it @haitham911? 🙏 |
@@ -23,7 +23,7 @@ Execute the `terraform clean` command like this: | |||
atmos terraform clean <component> -s <stack> [--skip-lock-file] [--everything] [--force] | |||
|
|||
:::warning | |||
The `--everything` flag will delete all Terraform-related files including state files. The `--force` flag will bypass confirmation prompts. | |||
The `clean` default behavior and will delete all Terraform-related files including state files, with a confirmation prompt before proceeding. The `--force` flag will bypass confirmation prompts. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The `clean` default behavior and will delete all Terraform-related files including state files, with a confirmation prompt before proceeding. The `--force` flag will bypass confirmation prompts. | |
The `clean` command, by default, deletes all Terraform-related files, including local state files, but will prompt for confirmation before proceeding. Using the `--force` flag skips the confirmation prompt and executes the deletion immediately. |
|
||
:::warning | ||
The `--everything` flag performs destructive operations that can lead to permanent state loss. Always ensure you have remote state configured in your components before proceeding. | ||
The `clean` performs destructive operations that can lead to permanent state loss. Always ensure you have remote state configured in your components before proceeding. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The `clean` performs destructive operations that can lead to permanent state loss. Always ensure you have remote state configured in your components before proceeding. | |
The `clean` command performs destructive operations that can lead to permanent state loss, if not using remote backends. Always ensure you have remote state configured in your components before proceeding. |
what
Fix bugs related to:
references
Summary by CodeRabbit
Summary by CodeRabbit
New Features
atmos terraform clean
command, clarifying its functionality and the removal of the--everything
flag.atmos terraform
commands, including--skip-init
,--deploy-run-init
, and--from-plan
.atmos terraform import
command to set theAWS_REGION
environment variable based on component settings.Bug Fixes
Documentation
atmos terraform clean
command.Tests
terraform clean
command to ensure proper functionality and state file deletion.