-
-
Notifications
You must be signed in to change notification settings - Fork 117
Ensure Logs Level is Validated in All Subcommands, Ensure Version Check Uses GITHUB_TOKEN
#957
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
Conversation
📝 WalkthroughWalkthroughThis pull request enhances Atmos’s logging, error handling, and configuration management. The changes improve the version update checking flow by adding detailed debug logs and refining the GitHub release retrieval process. Additionally, adjustments in logging configuration and output formatting have been made. Multiple test cases now include timeouts, clean-up options, and updated expected messages. New test fixture files and Terraform module configurations are also introduced to bolster infrastructure testing and documentation. Changes
Sequence Diagram(s)sequenceDiagram
participant User
participant VersionCmd
participant UpdateChecker
participant GitHub
User->>VersionCmd: Run version command (checkFlag true)
VersionCmd->>UpdateChecker: Call CheckForAtmosUpdateAndPrintMessage
UpdateChecker->>GitHub: Invoke GetLatestGitHubRepoRelease
GitHub-->>UpdateChecker: Return latest release tag (or error)
UpdateChecker->>VersionCmd: Log debug info and update status
VersionCmd->>User: Display version and update messages
Possibly related PRs
Suggested reviewers
✨ Finishing Touches
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)
cmd/cmd_utils.go (1)
498-512
: Fix typo in error message while maintaining good debug logging.The added debug logging enhances observability, but there's a grammatical error in the error message.
Fix the typo in the error message:
-u.LogWarning(atmosConfig, fmt.Sprintf("Unable not load cache: %s", err)) +u.LogWarning(atmosConfig, fmt.Sprintf("Unable to load cache: %s", err))
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (4)
cmd/cmd_utils.go
(2 hunks)cmd/root.go
(1 hunks)cmd/version.go
(3 hunks)pkg/config/utils.go
(2 hunks)
🧰 Additional context used
📓 Learnings (1)
cmd/cmd_utils.go (1)
Learnt from: Listener430
PR: cloudposse/atmos#844
File: cmd/version.go:34-44
Timestamp: 2024-12-13T15:28:13.630Z
Learning: In `cmd/version.go`, when handling the `--check` flag in the `versionCmd`, avoid using `CheckForAtmosUpdateAndPrintMessage(cliConfig)` as it updates the cache timestamp, which may not be desired in this context.
⏰ Context from checks skipped due to timeout of 90000ms (20)
- GitHub Check: [mock-macos] tests/fixtures/scenarios/complete
- GitHub Check: [mock-macos] examples/demo-vendoring
- GitHub Check: [mock-macos] examples/demo-context
- GitHub Check: [mock-macos] examples/demo-component-versions
- GitHub Check: [mock-windows] tests/fixtures/scenarios/complete
- GitHub Check: [mock-windows] examples/demo-vendoring
- GitHub Check: [mock-windows] examples/demo-context
- GitHub Check: [mock-windows] examples/demo-component-versions
- GitHub Check: [mock-windows] examples/demo-atlantis
- GitHub Check: [mock-linux] tests/fixtures/scenarios/complete
- GitHub Check: [mock-linux] examples/demo-vendoring
- GitHub Check: Acceptance Tests (macos-latest, macos)
- GitHub Check: [mock-linux] examples/demo-context
- GitHub Check: Acceptance Tests (windows-latest, windows)
- GitHub Check: Acceptance Tests (ubuntu-latest, linux)
- GitHub Check: [lint] quick-start-advanced
- GitHub Check: [localstack] demo-localstack
- GitHub Check: Docker Lint
- GitHub Check: [k3s] demo-helmfile
- GitHub Check: Summary
🔇 Additional comments (7)
cmd/version.go (3)
26-40
: Well-structured initialization of log level configuration!The code properly validates the log level from command line flags before initializing the configuration, following good error handling practices.
54-75
: Consider the impact of cache updates during version checks.While the added debug logging improves observability, be cautious about using
CheckForAtmosUpdateAndPrintMessage
in this context as it updates the cache timestamp, which might not be desired here.Consider separating the version check logic from cache updates to maintain better control over when the cache is modified.
81-82
: Good addition of debug logging!The debug message clearly indicates that updates are being checked from the cache, improving observability.
cmd/root.go (1)
65-70
: Excellent improvement to error handling!The code now intelligently suppresses unnecessary warnings during help requests while maintaining proper error handling for other scenarios. This enhances the user experience.
cmd/cmd_utils.go (1)
535-536
: Good addition of status logging!The debug message clearly indicates when Atmos is up to date, improving observability.
pkg/config/utils.go (2)
364-364
: Excellent improvement to error messaging!The error message now clearly indicates both the invalid value and the valid options, making it easier for users to correct their input.
489-489
: Great consistency in error messaging!The error message for command line flags matches the style used for environment variables, maintaining a consistent user experience.
6c00f9d
to
59b899d
Compare
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)
pkg/utils/github_utils.go (1)
34-35
: Consider using authenticated client for better rate limits.The change to use an unauthenticated client might lead to GitHub API rate limiting. Consider using the existing
newGitHubClient
function which handles authentication.-client := github.NewClient(nil) +client := newGitHubClient(context.Background())cmd/version.go (1)
56-65
: Simplify error handling logic.The error handling contains redundant checks and could be simplified.
- latestReleaseTag, err := u.GetLatestGitHubRepoRelease(atmosConfig, "cloudposse", "atmos") - if err == nil && latestReleaseTag != "" { - if err != nil { - u.LogWarning(atmosConfig, fmt.Sprintf("Failed to check for updates: %v", err)) - return - } - if latestReleaseTag == "" { - u.LogWarning(atmosConfig, "No release information available") - return - } + latestReleaseTag, err := u.GetLatestGitHubRepoRelease(atmosConfig, "cloudposse", "atmos") + if err != nil { + u.LogWarning(atmosConfig, fmt.Sprintf("Failed to check for updates: %v", err)) + return + } + if latestReleaseTag == "" { + u.LogWarning(atmosConfig, "No release information available") + return + }
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (7)
cmd/cmd_utils.go
(2 hunks)cmd/root.go
(1 hunks)cmd/version.go
(4 hunks)pkg/config/utils.go
(2 hunks)pkg/utils/github_utils.go
(2 hunks)pkg/utils/log_utils.go
(1 hunks)tests/test-cases/log-level-validation.yaml
(1 hunks)
🚧 Files skipped from review as they are similar to previous changes (3)
- cmd/root.go
- cmd/cmd_utils.go
- pkg/config/utils.go
⏰ Context from checks skipped due to timeout of 90000ms (5)
- GitHub Check: [localstack] demo-localstack
- GitHub Check: Acceptance Tests (macos-latest, macos)
- GitHub Check: Acceptance Tests (windows-latest, windows)
- GitHub Check: Acceptance Tests (ubuntu-latest, linux)
- GitHub Check: Summary
🔇 Additional comments (5)
pkg/utils/log_utils.go (1)
82-82
: LGTM! Improved debug message clarity.Adding the "[DEBUG]" prefix makes it easier to identify debug level messages in logs.
tests/test-cases/log-level-validation.yaml (1)
34-34
: LGTM! Test case updated to match new error message format.The test case now properly validates the improved error message that includes the environment variable context.
cmd/version.go (3)
26-40
: LGTM! Proper initialization of logging configuration.The initialization of atmosConfig with log level from flags is well-structured and includes proper error handling.
69-71
: LGTM! Clear debug logging.The debug logging statements provide good visibility into the version comparison process.
82-83
: LGTM! Added debug logging for cache check.Good addition of debug logging before checking for updates from cache.
LGTM, tested locally. Just address the suggestions and we're good to merge. |
* all artifactory to use anonymous * [autofix.ci] apply automated fixes * Update website/docs/core-concepts/projects/configuration/stores.mdx Co-authored-by: Erik Osterman (CEO @ Cloud Posse) <erik@cloudposse.com> * Update website/docs/core-concepts/projects/configuration/stores.mdx Co-authored-by: Erik Osterman (CEO @ Cloud Posse) <erik@cloudposse.com> --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: Erik Osterman (CEO @ Cloud Posse) <erik@cloudposse.com>
* restore hooks functionality * [autofix.ci] apply automated fixes * Update main_test.go Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * [autofix.ci] apply automated fixes * [autofix.ci] apply automated fixes --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
* sanitize snapshots * [autofix.ci] apply automated fixes * check for empty repo root * normalize slashes * normalize slashes * try to fix windows snapshots with windows paths * handle multiple slashes * handle multiple slashes * changed strategy for removing double slashes --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* allow user to specify default value when using store * Update internal/exec/yaml_func_store_test.go Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * allow user to specify default value when using store --------- Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* allow user to specify default value when using store * Update internal/exec/yaml_func_store_test.go Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * allow user to specify default value when using store * fix typo in Redis store error message --------- Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
…atmos terraform` commands that require it (#1023) * updates * updates * updates * updates
* fix(vendor): Remove excessive URL validation Fixes #1019 * feat(vendor): Add component to error message --------- Co-authored-by: Erik Osterman (CEO @ Cloud Posse) <erik@cloudposse.com>
* sanitize snapshots * [autofix.ci] apply automated fixes * check for empty repo root * normalize slashes * normalize slashes * try to fix windows snapshots with windows paths * handle multiple slashes * handle multiple slashes * changed strategy for removing double slashes --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* properly handle stdout, stderr, and null * update snapshots * fix test
* fix log level priorty * fix unwanted flag being set * add tests for log level priority * added todo comment with more clearity * Add tests for logs-file * update comment
…m output` (#1033) * updates * updates * updates
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
♻️ Duplicate comments (1)
tests/cli_test.go (1)
901-901
:⚠️ Potential issueFix incorrect path in error message.
The error message for stderr mismatch incorrectly references stdout path.
-t.Errorf("Stderr diff mismatch for %q:\n%s", stdoutPath, diff) +t.Errorf("Stderr diff mismatch for %q:\n%s", stderrPath, diff)
🧹 Nitpick comments (27)
tests/cli_terraform_test.go (2)
163-191
: Consider enhancing error handling in the new initialization function.The new
runTerraformInit
function is well-structured with good logging, but could benefit from more robust error handling.Consider adding timeouts and context handling:
func runTerraformInit(t *testing.T, binaryPath, environment string) { + ctx, cancel := context.WithTimeout(context.Background(), 5*time.Minute) + defer cancel() - cmd := exec.Command(binaryPath, "terraform", "init", "mock", "-s", environment) + cmd := exec.CommandContext(ctx, binaryPath, "terraform", "init", "mock", "-s", environment) // ... rest of the function ... err := cmd.Run() + if ctx.Err() == context.DeadlineExceeded { + t.Fatalf("Terraform init timed out after 5 minutes for environment %s", environment) + } if err != nil { t.Fatalf("Failed to run terraform init mock -s %s: %v\nStdout: %s\nStderr: %s", environment, err, stdout.String(), stderr.String()) } }
167-174
: Consider making environment variables configurable.The environment variables are currently hardcoded in the initialization function. Consider making them configurable for better test flexibility.
Consider extracting them to a configuration struct:
type TerraformInitConfig struct { RunReconfigure bool RunInit bool LogLevel string LogFile string } func runTerraformInit(t *testing.T, binaryPath, environment string, config TerraformInitConfig) { envVars := os.Environ() if config.RunReconfigure { envVars = append(envVars, "ATMOS_COMPONENTS_TERRAFORM_INIT_RUN_RECONFIGURE=true") } if config.RunInit { envVars = append(envVars, "ATMOS_COMPONENTS_TERRAFORM_DEPLOY_RUN_INIT=true") } envVars = append(envVars, fmt.Sprintf("ATMOS_LOGS_LEVEL=%s", config.LogLevel), fmt.Sprintf("ATMOS_LOGS_FILE=%s", config.LogFile)) // ... rest of the function }tests/fixtures/scenarios/vendor/components/terraform/test-components/main/README.md (1)
1-14
: Documentation Enhancement: Clear and Informative.
The new README section thoroughly explains the purpose and usage of the Terraform IPinfo component. One small nitpick: consider adding a period at the end of the output bullet item for consistent punctuation.🧰 Tools
🪛 LanguageTool
[uncategorized] ~13-~13: Loose punctuation mark.
Context: ...empty string. ### Outputs -metadata
: The data retrieved from IPinfo for the ...(UNLIKELY_OPENING_PUNCTUATION)
tests/fixtures/atmos.yaml (1)
31-34
: Remove Trailing Whitespace and Add Newline at EOFThe logs section is correctly configured, but YAML lint reports trailing spaces at the end of line 34 and a missing newline at the end of the file. To satisfy YAML formatting standards, please remove the extra space on line 34 and ensure a newline is added at the end of the file.
Proposed fix:
- color: true + color: true(Also ensure that the file ends with a newline.)
🧰 Tools
🪛 YAMLlint (1.35.1)
[error] 34-34: no new line character at the end of file
(new-line-at-end-of-file)
[error] 34-34: trailing spaces
(trailing-spaces)
tests/fixtures/scenarios/vendor/components/terraform/github/stargazers/main/README.md (1)
1-14
: Comprehensive and Clear Documentation
The README introduces the module well, explaining its purpose, inputs, and outputs. Consider revisiting the punctuation in the list items (specifically on lines 9 and 13) to ensure maximum clarity and consistency in the documentation.🧰 Tools
🪛 LanguageTool
[uncategorized] ~9-~9: Loose punctuation mark.
Context: ...y. ## Usage ### Inputs -repository
: The GitHub repository in the format 'ow...(UNLIKELY_OPENING_PUNCTUATION)
[uncategorized] ~13-~13: Loose punctuation mark.
Context: ...epo'. ### Outputs -stargazers_count
: The number of stargazers for the specif...(UNLIKELY_OPENING_PUNCTUATION)
tests/fixtures/README.md (1)
7-17
: Specify a language for the fenced code block.
The directory structure code block (lines 7–17) does not specify a language, which triggers markdown linting warnings (MD040). Specifying a language—such as “text”—will improve readability and help avoid static analysis issues.-``` +```text🧰 Tools
🪛 markdownlint-cli2 (0.17.2)
7-7: Fenced code blocks should have a language specified
null(MD040, fenced-code-language)
tests/fixtures/scenarios/mock-terraform/stacks/catalog/terraform/mock.yaml (1)
13-13
: Fix YAML Formatting: Trailing Spaces and Missing NewlineStatic analysis noted trailing spaces on line 13 and a missing newline at the end of the file. Please remove the extra whitespace and add a newline to tidy up the file.
🧰 Tools
🪛 YAMLlint (1.35.1)
[error] 13-13: no new line character at the end of file
(new-line-at-end-of-file)
[error] 13-13: trailing spaces
(trailing-spaces)
tests/fixtures/scenarios/mock-terraform/stacks/dev/mock.yaml (1)
16-18
: Improve YAML Formatting: Remove Trailing Spaces and Ensure NewlineStatic analysis has flagged trailing spaces in the last line and a missing newline at the end of the file. Removing these will help keep the YAML formatted properly.
🧰 Tools
🪛 YAMLlint (1.35.1)
[error] 18-18: no new line character at the end of file
(new-line-at-end-of-file)
[error] 18-18: trailing spaces
(trailing-spaces)
tests/fixtures/scenarios/mock-terraform/stacks/prod/mock.yaml (1)
16-18
: Address YAML Formatting IssuesAs with the other YAML files, please fix the trailing spaces on line 18 and ensure a newline exists at the end of the file to comply with linting guidelines.
🧰 Tools
🪛 YAMLlint (1.35.1)
[error] 18-18: no new line character at the end of file
(new-line-at-end-of-file)
[error] 18-18: trailing spaces
(trailing-spaces)
tests/fixtures/scenarios/mock-terraform/atmos.yaml (1)
23-25
: Review Logging ConfigurationThe logs section is set to output to “/dev/stderr” with a log level of “Info.” Please verify that this log level aligns with your updated log validation logic. Also, consider if converting error messages (or log outputs) to markdown format might further enhance the CLI consistency as discussed in the PR.
tests/fixtures/scenarios/mock-terraform/components/terraform/mock/main.tf (2)
1-27
: Add Descriptions for Variables
All variable declarations are clear and follow a consistent pattern. For future maintainability and better documentation, consider adding a description attribute to each variable. This is particularly useful for users to understand the expected values (especially for required variables such as "stage", "environment", and "tenant"), and for clarity on the purpose of variables with default values ("foo", "bar", "baz").A suggested diff snippet:
variable "stage" { type = string + description = "The deployment stage (eg. dev, prod)" }
41-64
: Enhance Outputs with Descriptions
The outputs for "foo", "bar", "baz", "stage", "environment", and "tenant" are correctly defined and provide direct access to their corresponding variables. For improved clarity and self-documentation, consider adding a description attribute to each output. This small addition can enhance the consistency and usability of the configuration in broader contexts.A suggested diff snippet for one output:
output "foo" { - value = var.foo + description = "The value of variable foo" + value = var.foo }tests/fixtures/components/terraform/myapp/cache.nonprod.txt (1)
3-3
: Text styling suggestion for weather condition:
The solitary "Overcast" line sets the scene nicely. However, note that a static analysis hint mentioned a possibly missing punctuation mark. If the intended style benefits from a trailing punctuation mark for clarity or consistency, consider adding one—but if the visual layout is intentional, feel free to ignore this note.tests/fixtures/scenarios/vendor/components/terraform/weather/main/providers.tf (1)
1-2
: HTTP Provider Block Declaration
The new empty provider block for "http" is correctly added. If no special configuration is required, this minimal declaration is acceptable. Consider adding a brief comment to remind future maintainers that configuration can be added if needed.tests/fixtures/scenarios/vendor/components/terraform/weather/main/main.tf (1)
11-16
: HTTP Data Source Configuration
The data block for the HTTP request is configured correctly using the constructed URL and sets a custom User-Agent header to "curl". As an enhancement, you might consider parameterizing the User-Agent header in the future to allow for flexibility.tests/fixtures/scenarios/vendor/components/terraform/vpc-src/main.tf (1)
1-9
: Duplicate Local URL Construction
This locals block replicates the URL construction logic seen in the weather component. While the code is correct, you might later consider abstracting this common functionality into a reusable module to avoid duplication across components.tests/fixtures/scenarios/vendor/components/terraform/weather/main/variables.tf (1)
1-35
: Overall Review: Terraform Variables are Well-DefinedThe new variables (stage, location, options, format, lang, and units) are defined with clear types and default values. One small suggestion: the description for "location" (lines 6–10) could be more explicit—for example, clarifying that it refers to where the weather forecast is retrieved.
Suggested diff:
- description = "Location for which the weather." + description = "Location for which the weather forecast is retrieved."tests/fixtures/scenarios/vendor/components/terraform/vpc-src/variables.tf (1)
1-35
: Overall Review: Consistency Across ModulesThe variable definitions here mirror those in the weather module, which is great for consistency. As with the previous file, consider updating the "location" description (lines 6–10) to more clearly explain its purpose.
Suggested diff:
- description = "Location for which the weather." + description = "Location for which the weather forecast is retrieved."tests/fixtures/scenarios/vendor/components/terraform/vpc-src/README.md (1)
1-51
: Documentation Review: VPC Source Module READMEThis README explains the module’s functionality clearly, with useful usage examples in YAML. In the Inputs section, consider a slight rewording to improve clarity. For example, on line 34, updating the "location" description to include a definite article and a clearer reference to weather information would be beneficial.
[typographical]Suggested diff for line 34:
- - `location`: Location for which the weather is reported. Default is "Los Angeles". + - `location`: The location for which weather information is reported. Default is "Los Angeles".🧰 Tools
🪛 LanguageTool
[typographical] ~3-~3: Consider using typographic quotation marks here.
Context: ...aform Weather Component This Terraform "root" module fetches weather information for ...(EN_QUOTES)
[uncategorized] ~9-~9: You might be missing the article “an” here.
Context: ...ch weather updates for a location using HTTP request. - Write the obtained weather d...(AI_EN_LECTOR_MISSING_DETERMINER_AN)
[uncategorized] ~34-~34: Loose punctuation mark.
Context: ... where it will be deployed. -location
: Location for which the weather is repor...(UNLIKELY_OPENING_PUNCTUATION)
[uncategorized] ~34-~34: A determiner appears to be missing. Consider inserting it.
Context: ...tion for which the weather is reported. Default is "Los Angeles". -options
: Options ...(AI_EN_LECTOR_MISSING_DETERMINER)
[typographical] ~34-~34: Consider using typographic quotation marks here.
Context: ...ich the weather is reported. Default is "Los Angeles". -options
: Options to customize the ...(EN_QUOTES)
[uncategorized] ~35-~35: Loose punctuation mark.
Context: ...d. Default is "Los Angeles". -options
: Options to customize the output. Defaul...(UNLIKELY_OPENING_PUNCTUATION)
[uncategorized] ~35-~35: A determiner appears to be missing. Consider inserting it.
Context: ...ions: Options to customize the output. Default is "0T". -
format`: Specifies the outp...(AI_EN_LECTOR_MISSING_DETERMINER)
[typographical] ~35-~35: Consider using a typographic opening quote here.
Context: ...ons to customize the output. Default is "0T". -format
: Specifies the output fo...(EN_QUOTES)
[typographical] ~35-~35: Consider using a typographic close quote here.
Context: ... to customize the output. Default is "0T". -format
: Specifies the output forma...(EN_QUOTES)
[uncategorized] ~36-~36: Loose punctuation mark.
Context: ... the output. Default is "0T". -format
: Specifies the output format. Default is...(UNLIKELY_OPENING_PUNCTUATION)
[uncategorized] ~36-~36: A determiner appears to be missing. Consider inserting it.
Context: ...format
: Specifies the output format. Default is "v2". -lang
: Language in which th...(AI_EN_LECTOR_MISSING_DETERMINER)
[typographical] ~36-~36: Consider using a typographic opening quote here.
Context: ...Specifies the output format. Default is "v2". -lang
: Language in which the wea...(EN_QUOTES)
[typographical] ~36-~36: Consider using a typographic close quote here.
Context: ...cifies the output format. Default is "v2". -lang
: Language in which the weathe...(EN_QUOTES)
[uncategorized] ~37-~37: Loose punctuation mark.
Context: ...output format. Default is "v2". -lang
: Language in which the weather will be d...(UNLIKELY_OPENING_PUNCTUATION)
[uncategorized] ~37-~37: A determiner appears to be missing. Consider inserting it.
Context: ...in which the weather will be displayed. Default is "en". -units
: Units in which the ...(AI_EN_LECTOR_MISSING_DETERMINER)
[typographical] ~37-~37: Consider using typographic quotation marks here.
Context: ...e weather will be displayed. Default is "en". -units
: Units in which the weather ...(EN_QUOTES)
[uncategorized] ~38-~38: Loose punctuation mark.
Context: ...be displayed. Default is "en". -units
: Units in which the weather will be disp...(UNLIKELY_OPENING_PUNCTUATION)
[uncategorized] ~38-~38: A determiner appears to be missing. Consider inserting it.
Context: ...in which the weather will be displayed. Default is "m". ### Outputs -weather
: The f...(AI_EN_LECTOR_MISSING_DETERMINER)
[typographical] ~38-~38: Consider using typographic quotation marks here.
Context: ...e weather will be displayed. Default is "m". ### Outputs -weather
: The fetched ...(EN_QUOTES)
[uncategorized] ~42-~42: Loose punctuation mark.
Context: ...ther: The fetched weather data. -
url: Requested URL. -
stage`: Stage of depl...(UNLIKELY_OPENING_PUNCTUATION)
[uncategorized] ~43-~43: Loose punctuation mark.
Context: ... data. -url
: Requested URL. -stage
: Stage of deployment. -location
: Loca...(UNLIKELY_OPENING_PUNCTUATION)
[uncategorized] ~44-~44: Loose punctuation mark.
Context: ...tage: Stage of deployment. -
location: Location of the reported weather. -
la...(UNLIKELY_OPENING_PUNCTUATION)
[uncategorized] ~45-~45: Loose punctuation mark.
Context: ...cation of the reported weather. -lang
: Language used for weather data. - `unit...(UNLIKELY_OPENING_PUNCTUATION)
[uncategorized] ~46-~46: Loose punctuation mark.
Context: ...anguage used for weather data. -units
: Units of measurement for the weather da...(UNLIKELY_OPENING_PUNCTUATION)
tests/fixtures/scenarios/vendor/components/terraform/weather/main/README.md (1)
1-51
: Documentation Review: Weather Module READMEThis README effectively outlines the module’s features, usage, and outputs. The description is detailed and the YAML example is very helpful. For stylistic consistency, consider using typographic quotation marks (e.g. for “root” in line 3) and a similar clarification of the Inputs section. For instance, on line 34, adjusting the "location" description to read more clearly would further enhance the document.
[typographical]Suggested diff for line 34:
- - `location`: Location for which the weather is reported. Default is "Los Angeles". + - `location`: The location for which weather information is reported. Default is "Los Angeles".🧰 Tools
🪛 LanguageTool
[typographical] ~3-~3: Consider using typographic quotation marks here.
Context: ...aform Weather Component This Terraform "root" module fetches weather information for ...(EN_QUOTES)
[uncategorized] ~34-~34: Loose punctuation mark.
Context: ... where it will be deployed. -location
: Location for which the weather is repor...(UNLIKELY_OPENING_PUNCTUATION)
[typographical] ~34-~34: Consider using typographic quotation marks here.
Context: ...ich the weather is reported. Default is "Los Angeles". -options
: Options to customize the ...(EN_QUOTES)
[uncategorized] ~35-~35: Loose punctuation mark.
Context: ...d. Default is "Los Angeles". -options
: Options to customize the output. Defaul...(UNLIKELY_OPENING_PUNCTUATION)
[typographical] ~35-~35: Consider using a typographic opening quote here.
Context: ...ons to customize the output. Default is "0T". -format
: Specifies the output fo...(EN_QUOTES)
[typographical] ~35-~35: Consider using a typographic close quote here.
Context: ... to customize the output. Default is "0T". -format
: Specifies the output forma...(EN_QUOTES)< F438 /p>
[uncategorized] ~36-~36: Loose punctuation mark.
Context: ... the output. Default is "0T". -format
: Specifies the output format. Default is...(UNLIKELY_OPENING_PUNCTUATION)
[typographical] ~36-~36: Consider using a typographic opening quote here.
Context: ...Specifies the output format. Default is "v2". -lang
: Language in which the wea...(EN_QUOTES)
[typographical] ~36-~36: Consider using a typographic close quote here.
Context: ...cifies the output format. Default is "v2". -lang
: Language in which the weathe...(EN_QUOTES)
[uncategorized] ~37-~37: Loose punctuation mark.
Context: ...output format. Default is "v2". -lang
: Language in which the weather will be d...(UNLIKELY_OPENING_PUNCTUATION)
[typographical] ~37-~37: Consider using typographic quotation marks here.
Context: ...e weather will be displayed. Default is "en". -units
: Units in which the weather ...(EN_QUOTES)
[uncategorized] ~38-~38: Loose punctuation mark.
Context: ...be displayed. Default is "en". -units
: Units in which the weather will be disp...(UNLIKELY_OPENING_PUNCTUATION)
[typographical] ~38-~38: Consider using typographic quotation marks here.
Context: ...e weather will be displayed. Default is "m". ### Outputs -weather
: The fetched ...(EN_QUOTES)
[uncategorized] ~42-~42: Loose punctuation mark.
Context: ...ther: The fetched weather data. -
url: Requested URL. -
stage`: Stage of depl...(UNLIKELY_OPENING_PUNCTUATION)
[uncategorized] ~43-~43: Loose punctuation mark.
Context: ... data. -url
: Requested URL. -stage
: Stage of deployment. -location
: Loca...(UNLIKELY_OPENING_PUNCTUATION)
[uncategorized] ~44-~44: Loose punctuation mark.
Context: ...tage: Stage of deployment. -
location: Location of the reported weather. -
la...(UNLIKELY_OPENING_PUNCTUATION)
[uncategorized] ~45-~45: Loose punctuation mark.
Context: ...cation of the reported weather. -lang
: Language used for weather data. - `unit...(UNLIKELY_OPENING_PUNCTUATION)
[uncategorized] ~46-~46: Loose punctuation mark.
Context: ...anguage used for weather data. -units
: Units of measurement for the weather da...(UNLIKELY_OPENING_PUNCTUATION)
tests/fixtures/scenarios/vendor/components/terraform/infra/my-vpc1/providers.tf (1)
16-20
: Suggestion: Pin Module Version for ReproducibilityFor the iam_roles module you’re sourcing, consider specifying a version. Pinning the module version (if supported) can help avoid unexpected changes from upstream modifications. For example:
-module "iam_roles" { - source = "../account-map/modules/iam-roles" - context = module.this.context -} +module "iam_roles" { + source = "../account-map/modules/iam-roles" + version = "x.y.z" # specify the module version + context = module.this.context +}tests/fixtures/scenarios/vendor/components/terraform/infra/my-vpc1/outputs.tf (1)
55-63
: VPC Info Map with ContextThe output "vpc" builds a neat map combining key VPC attributes. One minor note: there’s a commented-out attribute (subnet_type_tag_value_format) in the block. If it’s no longer needed, consider removing it to keep the configuration clean.
tests/fixtures/scenarios/vendor/components/terraform/infra/my-vpc1/variables.tf (1)
148-152
: Traffic Type for Flow Logs with Suggestion for Enhanced ValidationThe vpc_flow_logs_traffic_type variable is documented with its valid values. For enhanced safety, consider adding a validation block to restrict the value strictly to "ACCEPT", "REJECT", or "ALL". For example:
variable "vpc_flow_logs_traffic_type" { type = string description = "The type of traffic to capture. Valid values: `ACCEPT`, `REJECT`, `ALL`" default = "ALL" + validation { + condition = contains(["ACCEPT", "REJECT", "ALL"], var.vpc_flow_logs_traffic_type) + error_message = "vpc_flow_logs_traffic_type must be 'ACCEPT', 'REJECT', or 'ALL'." + } }tests/fixtures/scenarios/vendor/components/terraform/infra/my-vpc1/main.tf (3)
10-14
: Conditional Calculation for max_subnet_count:
The nested ternary expressions correctly compute the maximum subnet count based on provided input values. For readability, consider adding an inline comment explaining the fallback logic.
36-39
: Public Subnets Additional Tags:
The tag map for public subnets is defined clearly. One minor point: the value 1 is used for the ELB role tag; since tag values are typically strings in AWS, consider converting the value to a string for consistency (e.g., "1").
41-44
: Private Subnets Additional Tags:
Similarly, the tag map for private subnets is concise. Again, if consistency is a goal, consider representing numeric tag values as strings.tests/fixtures/scenarios/vendor/components/terraform/infra/my-vpc1/README.md (1)
55-172
: Terraform Documentation Auto-Generated Section:
The detailed documentation covering Requirements, Providers, Modules, Resources, Inputs, and Outputs is comprehensive. It enhances the usability of the component.A couple of minor typographical suggestions from static analysis:
- Consider using typographic (curly) quotes in the generated documentation for improved readability.
- For the image at line 171, adding alt text would improve accessibility.
🧰 Tools
🪛 LanguageTool
[typographical] ~60-~60: Consider using a typographic close quote here.
Context: ...| Name | Version | |------|---------| | [terraform](#requirement_terrafor...(EN_QUOTES)
[typographical] ~61-~61: Consider using a typographic close quote here.
Context: ...#requirement_terraform) | >= 1.0.0 | | aws | >= 4.9....(EN_QUOTES)
[typographical] ~67-~67: Consider using a typographic close quote here.
Context: ...| Name | Version | |------|---------| | aws | >= 4.9.0 |...(EN_QUOTES)
[typographical] ~73-~73: Consider using a typographic close quote here.
Context: ...Version | |------|--------|---------| | [endpoint_security_groups](#modu...(EN_QUOTES)
[typographical] ~74-~74: Consider using a typographic close quote here.
Context: ...oudposse/security-group/aws | 2.2.0 | | iam_roles ...(EN_QUOTES)
[typographical] ~75-~75: Consider using a typographic close quote here.
Context: ...account-map/modules/iam-roles | n/a | | subnets | clou...(EN_QUOTES)
[typographical] ~76-~76: Consider using a typographic close quote here.
Context: ...udposse/dynamic-subnets/aws | 2.3.0 | | this | cloudposse...(EN_QUOTES)
[typographical] ~77-~77: Consider using a typographic close quote here.
Context: ...s) | cloudposse/label/null | 0.25.0 | | utils | cloudpos...(EN_QUOTES)
[typographical] ~78-~78: Consider using a typographic close quote here.
Context: ...ils) | cloudposse/utils/aws | 1.3.0 | | vpc | cloudposse/v...(EN_QUOTES)
[typographical] ~79-~79: Consider using a typographic close quote here.
Context: ..._vpc) | cloudposse/vpc/aws | 2.1.0 | | [vpc_endpoints](#module_vpc_end...(EN_QUOTES)
[typographical] ~80-~80: Consider using a typographic close quote here.
Context: .../aws//modules/vpc-endpoints | 2.1.0 | | [vpc_flow_logs_bucket](#module...(EN_QUOTES)
[typographical] ~95-~95: Consider using a typographic close quote here.
Context: ...--------|------|---------|:--------:| | [additional_tag_map](#input_add...(EN_QUOTES)
[typographical] ~96-~96: Consider using a typographic close quote here.
Context: ...ration. |map(string)
|{}
| no | | [assign_generated_ipv6_cidr_bl...(EN_QUOTES)
[typographical] ~97-~97: Consider using a typographic close quote here.
Context: ...m_pool_id. |
bool|
false` | no | | attributes |...(EN_QUOTES)
[style] ~97-~97: A comma is missing here.
Context: ...s) | ID element. Additional attributes (e.g.workers
orcluster
) to add toid
,...(EG_NO_COMMA)
[typographical] ~98-~98: Consider using a typographic close quote here.
Context: ...ement. |list(string)
|[]
| no | | [availability_zone_ids](#input_...(EN_QUOTES)
[style] ~98-~98: A comma is missing here.
Context: ...bility_zones.<br>Can be the full name, e.g.
use1-az1`, or just the part after the ...(EG_NO_COMMA)
[style] ~98-~98: A comma is missing here.
Context: ...t the part after the AZ ID region code, e.g.-az1
,
to allow reusable values acr...(EG_NO_COMMA)
[typographical] ~99-~99: Consider using a typographic close quote here.
Context: ...ounts. |list(string)
|[]
| no | | [availability_zones](#input_avai...(EN_QUOTES)
[style] ~99-~99: A comma is missing here.
Context: ...e_idsis set.<br>Can be the full name, e.g.
us-east-1a`, or just the part after th...(EG_NO_COMMA)
[style] ~99-~99: A comma is missing here.
Context: ...1a, or just the part after the region, e.g.
a` to allow reusable values across reg...(EG_NO_COMMA)
[typographical] ~100-~100: Consider using a typographic close quote here.
Context: ...ility. |list(string)
|[]
| no | | context | Singl...(EN_QUOTES)
[typographical] ~100-~100: Consider using a typographic close quote here.
Context: ...any
|{| n...
"additional_tag_map": {},
"attributes": [],
"delim...(EN_QUOTES)
[typographical] ~100-~100: Consider using a typographic close quote here.
Context: ...dditional_tag_map": {},
"attributes": [],
"delimiter": null,
"desc...(EN_QUOTES)
[typographical] ~100-~100: Consider using typographic quotation marks here.
Context: ...g_map": {},
"attributes": [],
"delimiter": null,
"descriptor_formats": {},<b...(EN_QUOTES)
[typographical] ~100-~100: Consider using a typographic close quote here.
Context: ... "descriptor_formats": {},
"enabled": true,
"environment": null,
"...(EN_QUOTES)
[typographical] ~100-~100: Consider using typographic quotation marks here.
Context: ...ormats": {},
"enabled": true,
"environment": null,
"id_length_limit": null,<br...(EN_QUOTES)
[typographical] ~100-~100: Consider using a typographic opening quote here.
Context: ...": true,
"environment": null,
"id_length_limit": null,
"label_key_...(EN_QUOTES)
[typographical] ~100-~100: Consider using a typographic close quote here.
Context: ...nvironment": null,
"id_length_limit": null,
"label_key_case": null,
...(EN_QUOTES)
[typographical] ~100-~100: Consider using a typographic opening quote here.
Context: ...ull,
"id_length_limit": null,
"label_key_case": null,
"label_order...(EN_QUOTES)
[typographical] ~100-~100: Consider using a typographic close quote here.
Context: ...ength_limit": null,
"label_key_case": null,
"label_order": [],
"la...(EN_QUOTES)
[typographical] ~100-~100: Consider using a typographic opening quote here.
Context: ...se": null,
"label_order": [],
"label_value_case": null,
"labels_as...(EN_QUOTES)
[typographical] ~100-~100: Consider using a typographic close quote here.
Context: ...label_order": [],
"label_value_case": null,
"labels_as_tags": [
...(EN_QUOTES)
[typographical] ~100-~100: Consider using a typographic opening quote here.
Context: ...[],
"label_value_case": null,
"labels_as_tags": [
"unset"
]...(EN_QUOTES)
[typographical] ~100-~100: Consider using a typographic close quote here.
Context: ..._value_case": null,
"labels_as_tags": [
"unset"
],
"name": ...(EN_QUOTES)
[typographical] ~100-~100: Consider using typographic quotation marks here.
Context: ...: null,
"labels_as_tags": [
"unset"
],
"name": null,
"namesp...(EN_QUOTES)
[typographical] ~100-~100: Consider using typographic quotation marks here.
Context: ...as_tags": [
"unset"
],
"name": null,
"namespace": null,
"re...(EN_QUOTES)
[typographical] ~100-~100: Consider using typographic quotation marks here.
Context: ..."unset"
],
"name": null,
"namespace": null,
"regex_replace_chars": null...(EN_QUOTES)
[typographical] ~100-~100: Consider using a typographic opening quote here.
Context: ...me": null,
"namespace": null,
"regex_replace_chars": null,
"stage"...(EN_QUOTES)
[typographical] ~100-~100: Consider using a typographic close quote here.
Context: ...espace": null,
"regex_replace_chars": null,
"stage": null,
"tags":...(EN_QUOTES)
[typographical] ~100-~100: Consider using typographic quotation marks here.
Context: ...
"regex_replace_chars": null,
"stage": null,
"tags": {},
"tenant": ...(EN_QUOTES)
[typographical] ~100-~100: Consider using typographic quotation marks here.
Context: ..._chars": null,
"stage": null,
"tags": {},
"tenant": null
}(EN_QUOTES)
[typographical] ~100-~100: Consider using a typographic close quote here.
Context: ...ge": null,
"tags": {},
"tenant": null
} | no | | <a name="inpu...(EN_QUOTES)
[typographical] ~101-~101: Consider using a typographic close quote here.
Context: ...br> "tenant": null
} | no | | delimiter | D...(EN_QUOTES)
[typographical] ~101-~101: Consider using a typographic close quote here.
Context: ...ts.
Defaults to-
(hyphen). Set to""
to use no delimiter at all. | `string...(EN_QUOTES)
[typographical] ~102-~102: Consider using a typographic close quote here.
Context: ...er at all. |string
|null
| no | | [descriptor_formats](#input_desc...(EN_QUOTES)
[style] ~102-~102: This sentence is over 40 words long. Consider splitting it up, as shorter sentences make the text easier to read.
Context: ...of maps. Keys are names of descriptors. Values are maps of the form{<br> format = string<br> labels = list(string)<br>}
(Type isany
so the map values can later be enhanced to provide additional options.)format
is a Terraform format string to be passed to theformat()
function.labels
is a list of labels, in order, to pass toformat()
function.
Label values will be normalized before being passed toformat()
so they will be
identical to how they appear inid
.
Default is{}
(descriptors
output will be empty). |any
|{}
| no | | <a name="inpu...(TOO_LONG_SENTENCE)
[typographical] ~103-~103: Consider using a typographic close quote here.
Context: ...will be empty). |any
|{}
| no | | enabled | Set t...(EN_QUOTES)
[grammar] ~103-~103: Did you mean “too false to”?
Context: ..."> enabled | Set to false to prevent the module from creating any re...(TOO_ADJECTIVE_TO)
[typographical] ~104-~104: Consider using a typographic close quote here.
Context: ...ny resources |bool
|null
| no | | environment...(EN_QUOTES)
[style] ~104-~104: A comma is missing here.
Context: ...) | ID element. Usually used for region e.g. 'uw2', 'us-west-2', OR role 'prod', 'st...(EG_NO_COMMA)
[typographical] ~105-~105: Consider using a typographic close quote here.
Context: ...ev', 'UAT' |string
|null
| no | | [gateway_vpc_endpoints](#input_...(EN_QUOTES)
[typographical] ~105-~105: Consider using a typographic opening quote here.
Context: ...ion into the VPC. Only valid values are "dynamodb" and "s3". |set(string)
| `[...(EN_QUOTES)
[typographical] ~105-~105: Consider using a typographic close quote here.
Context: ...the VPC. Only valid values are "dynamodb" and "s3". |set(string)
|[]
| no |...(EN_QUOTES)
[typographical] ~105-~105: Consider using a typographic opening quote here.
Context: ...C. Only valid values are "dynamodb" and "s3". |set(string)
|[]
| no | | <a ...(EN_QUOTES)
[typographical] ~105-~105: Consider using a typographic close quote here.
Context: ...Only valid values are "dynamodb" and "s3". |set(string)
|[]
| no | | <a nam...(EN_QUOTES)
[typographical] ~106-~106: Consider using a typographic close quote here.
Context: ...d "s3". |set(string)
|[]
| no | | [id_length_limit](#input_id_le...(EN_QUOTES)
[grammar] ~106-~106: The verb ‘keep’ seems to be in the wrong form here.
Context: ... for unlimited length.
Set tonull
for keep the existing setting, which defaults to...(FOR_VB)
[typographical] ~107-~107: Consider using a typographic close quote here.
Context: ...id_full
. |number
|null
| no | | [interface_vpc_endpoints](#input...(EN_QUOTES)
[typographical] ~108-~108: Consider using a typographic close quote here.
Context: ...he VPC. |set(string)
|[]
| no | | [ipv4_additional_cidr_block_as...(EN_QUOTES)
[typographical] ~109-~109: Consider using a typographic close quote here.
Context: ...= number
})) |{}
| no | | [ipv4_cidr_block_association_t...(EN_QUOTES)
[typographical] ~110-~110: Consider using a typographic close quote here.
Context: ... string
}) |null
| no | | ipv4_cidrs...(EN_QUOTES)
[typographical] ~111-~111: Consider using a typographic close quote here.
Context: ...(string)
})) |[]
| no | | [ipv4_primary_cidr_block](#inpu...(EN_QUOTES)
[typographical] ~112-~112: Consider using a typographic close quote here.
Context: ... not both. |string
|null
| no | | [ipv4_primary_cidr_block_assoc...(EN_QUOTES)
[typographical] ~113-~113: Consider using a typographic close quote here.
Context: ... number
}) |null
| no | | [label_key_case](#input_label_...(EN_QUOTES)
[typographical] ~114-~114: Consider using a typographic close quote here.
Context: ...:title
. |string
|null
| no | | [label_order](#input_label_orde...(EN_QUOTES)
[typographical] ~114-~114: Consider using typographic quotation marks here.
Context: ...ts) appear in theid
.
Defaults to ["namespace", "environment", "stage", "name", "attri...(EN_QUOTES)
[typographical] ~114-~114: Consider using typographic quotation marks here.
Context: ... theid
.
Defaults to ["namespace", "environment", "stage", "name", "attributes"].
You...(EN_QUOTES)
[typographical] ~114-~114: Consider using typographic quotation marks here.
Context: ...efaults to ["namespace", "environment", "stage", "name", "attributes"].
You can omit...(EN_QUOTES)
[typographical] ~114-~114: Consider using typographic quotation marks here.
Context: ...o ["namespace", "environment", "stage", "name", "attributes"].
You can omit any of ...(EN_QUOTES)
[typographical] ~114-~114: Consider using typographic quotation marks here.
Context: ...space", "environment", "stage", "name", "attributes"].
You can omit any of the 6 labels (...(EN_QUOTES)
[typographical] ~114-~114: Consider using typographic quotation marks here.
Context: ...].
You can omit any of the 6 labels ("tenant" is the 6th), but at least one must be p...(EN_QUOTES)
[typographical] ~115-~115: Consider using a typographic close quote here.
Context: ...ent. |list(string)
|null
| no | | [label_value_case](#input_label...(EN_QUOTES)
[typographical] ~115-~115: Consider using a typographic close quote here.
Context: ... this totitle
and setdelimiter
to""
to yield Pascal Case IDs.
Default ...(EN_QUOTES)
[typographical] ~116-~116: Consider using a typographic close quote here.
Context: ...:lower
. |string
|null
| no | | [labels_as_tags](#input_labels...(EN_QUOTES)
[typographical] ~116-~116: Consider using typographic quotation marks here.
Context: ... ignored. |set(string)
|[| no | | <a name="input_map_...
"default"
](EN_QUOTES)
[typographical] ~117-~117: Consider using a typographic close quote here.
Context: ...re>[
"default"
] | no | | [map_public_ip_on_launch](#inp...(EN_QUOTES)
[typographical] ~118-~118: Consider using a typographic close quote here.
Context: ...c IP address |bool
|true
| no | | [max_subnet_count](#input_max_...(EN_QUOTES)
[uncategorized] ~118-~118: ‘Amount of’ should usually only be used with uncountable or mass nouns. Consider using “number” if this is not the case.
Context: ..._max_subnet_count) | Sets the maximum amount of subnets to deploy. 0 will deploy a s...(AMOUNTOF_TO_NUMBEROF)
[typographical] ~119-~119: Consider using a typographic close quote here.
Context: ...in the region |number
|0
| no | | name | ID element....(EN_QUOTES)
[typographical] ~119-~119: Consider adding a comma after ‘Usually’ for more clarity.
Context: ... name | ID element. Usually the component or solution name, e.g. 'a...(RB_LY_COMMA)
[style] ~119-~119: A comma is missing here.
Context: ...Usually the component or solution name, e.g. 'app' or 'jenkins'.
This is the only...(EG_NO_COMMA)
[typographical] ~119-~119: Consider using typographic quotation marks here.
Context: ...nt not also included as atag
.
The "name" tag is set to the fullid
string. The...(EN_QUOTES)
[typographical] ~120-~120: Consider using a typographic close quote here.
Context: ...meinput. |
string|
null` | no | | namespace | I...(EN_QUOTES)
[typographical] ~120-~120: Consider adding a comma after ‘Usually’ for more clarity.
Context: ...space](#input_namespace) | ID element. Usually an abbreviation of your organization na...(RB_LY_COMMA)
[style] ~120-~120: A comma is missing here.
Context: ...abbreviation of your organization name, e.g. 'eg' or 'cp', to help ensure generated ...(EG_NO_COMMA)
[style] ~120-~120: A comma and a dot are missing here.
Context: ...iation of your organization name, e.g. 'eg' or 'cp', to help ensure generated IDs ...(EG_NO_COMMA)
[typographical] ~121-~121: Consider using a typographic close quote here.
Context: ...lly unique |string
|null
| no | | [nat_eip_aws_shield_protection...(EN_QUOTES)
[typographical] ~122-~122: Consider using a typographic close quote here.
Context: ...is account. |bool
|false
| no | | [nat_gateway_enabled](#input_na...(EN_QUOTES)
[typographical] ~123-~123: Consider using a typographic close quote here.
Context: ...NAT gateways |bool
|true
| no | | [nat_instance_enabled](#input_n...(EN_QUOTES)
[typographical] ~124-~124: Consider using a typographic close quote here.
Context: ...T instances |bool
|false
| no | | [nat_instance_type](#input_nat...(EN_QUOTES)
[typographical] ~124-~124: Consider using a typographic close quote here.
Context: ..._type) | NAT Instance type |string
|"t3.micro"
| no | | <a name="input_publi...(EN_QUOTES)
[typographical] ~125-~125: Consider using a typographic close quote here.
Context: ...type |string
|"t3.micro"
| no | | [public_subnets_enabled](#input...(EN_QUOTES)
[typographical] ~126-~126: Consider using a typographic close quote here.
Context: ...henfalse
. |bool
|true
| no | | [regex_replace_chars](#input_re...(EN_QUOTES)
[typographical] ~126-~126: Consider using a typographic close quote here.
Context: ...ed from the ID elements.
If not set,"/[^a-zA-Z0-9-]/"
is used to remove all ...(EN_QUOTES)
[style] ~126-~126: Consider using a more formal/concise alternative here.
Context: ...9-]/"is used to remove all characters other than hyphens, letters and digits. |
string`...(OTHER_THAN)
[style] ~126-~126: The serial comma (Oxford comma, Harvard comma) is missing.
Context: ...move all characters other than hyphens, letters and digits. |string
|null
| no | | <a...(SERIAL_COMMA_ON)
[typographical] ~127-~127: Consider using a typographic close quote here.
Context: ...nd digits. |string
|null
| no | | region | AWS Reg...(EN_QUOTES)
[typographical] ~128-~128: Consider using a typographic close quote here.
Context: ...| AWS Region |string
| n/a | yes | | stage | ID elemen...(EN_QUOTES)
[style] ~128-~128: A comma is missing here.
Context: ...element. Usually used to indicate role, e.g. 'prod', 'staging', 'source', 'build', '...(EG_NO_COMMA)
[typographical] ~129-~129: Consider using a typographic close quote here.
Context: ... 'release' |string
|null
| no | | [subnet_type_tag_key](#input_s...(EN_QUOTES)
[grammar] ~129-~129: In this context, ‘type’ should agree in number with the noun after ‘of’.
Context: ...pe tag to provide information about the type of subnets, e.g.cpco/subnet/type=private
or `cp...(TYPE_OF_PLURAL)
[style] ~129-~129: A comma is missing here.
Context: ... information about the type of subnets, e.g.cpco/subnet/type=private
or `cpcp/sub...(EG_NO_COMMA)
[typographical] ~130-~130: Consider using a typographic close quote here.
Context: ...type=public|
string` | n/a | yes | | tags | Additional ...(EN_QUOTES)
[style] ~130-~130: A comma is missing here.
Context: ...tags | Additional tags (e.g.{'BusinessUnit': 'XYZ'}
).
Neither ...(EG_NO_COMMA)
[typographical] ~131-~131: Consider using a typographic close quote here.
Context: ...module. |map(string)
|{}
| no | | tenant | ID elem...(EN_QUOTES)
[typographical] ~132-~132: Consider using a typographic close quote here.
Context: ...rce is for |string
|null
| no | | [vpc_flow_logs_bucket_environm...(EN_QUOTES)
[typographical] ~132-~132: Consider using a typographic close quote here.
Context: ...Logs bucket is provisioned |string
|""
| no | | <a name="input_vpc_flow_logs...(EN_QUOTES)
[typographical] ~133-~133: Consider using a typographic close quote here.
Context: ... provisioned |string
|""
| no | | [vpc_flow_logs_bucket_stage_n...(EN_QUOTES)
[typographical] ~133-~133: Consider using a typographic close quote here.
Context: ...Logs bucket is provisioned |string
|""
| no | | <a name="input_vpc_flow_logs...(EN_QUOTES)
[typographical] ~134-~134: Consider using a typographic close quote here.
Context: ... provisioned |string
|""
| no | | [vpc_flow_logs_bucket_tenant_...(EN_QUOTES)
[typographical] ~135-~135: Consider using a typographic close quote here.
Context: ...asnull
. |string
|null
| no | | [vpc_flow_logs_enabled](#input...(EN_QUOTES)
[typographical] ~136-~136: Consider using a typographic close quote here.
Context: ...PC Flow Logs |bool
|true
| no | | [vpc_flow_logs_log_destination...(EN_QUOTES)
[typographical] ~136-~136: Consider using a typographic close quote here.
Context: ...:cloud-watch-logs
,s3
|string
|"s3"
| no | | <a name="input_vpc_flow_lo...(EN_QUOTES)
[typographical] ~137-~137: Consider using a typographic close quote here.
Context: ...ogs,
s3|
string|
"s3"` | no | | [vpc_flow_logs_traffic_type](#...(EN_QUOTES)
[typographical] ~137-~137: Consider using a typographic close quote here.
Context: ...ACCEPT
,REJECT
,ALL
|string
|"ALL"
| no | ## Outputs | Name | Descr...(EN_QUOTES)
[typographical] ~143-~143: Consider using a typographic close quote here.
Context: ... Description | |------|-------------| | [availability_zones](#output_ava...(EN_QUOTES)
[typographical] ~144-~144: Consider using a typographic close quote here.
Context: ...ty Zones where subnets were created | | [az_private_subnets_map](#outpu...(EN_QUOTES)
[typographical] ~145-~145: Consider using a typographic close quote here.
Context: ...st of private subnet IDs in the AZs | | [az_public_subnets_map](#output...(EN_QUOTES)
[typographical] ~146-~146: Consider using a typographic close quote here.
Context: ...ist of public subnet IDs in the AZs | | [interface_vpc_endpoints](#outpu...(EN_QUOTES)
[typographical] ~147-~147: Consider using a typographic close quote here.
Context: ...nterface VPC Endpoints in this VPC. | | [max_subnet_count](#output_max...(EN_QUOTES)
[typographical] ~148-~148: Consider using a typographic close quote here.
Context: ... subnet CIDRs need to be recomputed | | [nat_eip_protections](#output_n...(EN_QUOTES)
[typographical] ~149-~149: Consider using a typographic close quote here.
Context: ...ed Protections for NAT Elastic IPs. | | [nat_gateway_ids](#output_nat_...(EN_QUOTES)
[typographical] ~150-~150: Consider using a typographic close quote here.
Context: ...at_gateway_ids) | NAT Gateway IDs | | [nat_gateway_public_ips](#outpu...(EN_QUOTES)
[typographical] ~151-~151: Consider using a typographic close quote here.
Context: ...blic_ips) | NAT Gateway public IPs | | [nat_instance_ids](#output_nat...(EN_QUOTES)
[typographical] ~152-~152: Consider using a typographic close quote here.
Context: ..._instance_ids) | NAT Instance IDs | | [private_route_table_ids](#outp...(EN_QUOTES)
[typographical] ~153-~153: Consider using a typographic close quote here.
Context: ...s) | Private subnet route table IDs | | [private_subnet_cidrs](#output_...(EN_QUOTES)
[typographical] ~154-~154: Consider using a typographic close quote here.
Context: ...bnet_cidrs) | Private subnet CIDRs | | [private_subnet_ids](#output_pr...(EN_QUOTES)
[typographical] ~155-~155: Consider using a typographic close quote here.
Context: ..._subnet_ids) | Private subnet IDs | | [public_route_table_ids](#outpu...(EN_QUOTES)
[typographical] ~156-~156: Consider using a typographic close quote here.
Context: ...ds) | Public subnet route table IDs | | [public_subnet_cidrs](#output_p...(EN_QUOTES)
[typographical] ~157-~157: Consider using a typographic close quote here.
Context: ...ubnet_cidrs) | Public subnet CIDRs | | [public_subnet_ids](#output_pub...(EN_QUOTES)
[typographical] ~158-~158: Consider using a typographic close quote here.
Context: ...c_subnet_ids) | Public subnet IDs | | [route_tables](#output_route_ta...(EN_QUOTES)
[typographical] ~159-~159: Consider using a typographic close quote here.
Context: ...te_tables) | Route tables info map | | subnets | Subn...(EN_QUOTES)
[typographical] ~160-~160: Consider using a typographic close quote here.
Context: ...output_subnets) | Subnets info map | | vpc | VPC info map...(EN_QUOTES)
[typographical] ~161-~161: Consider using a typographic close quote here.
Context: ... vpc | VPC info map | | vpc_cidr | ...(EN_QUOTES)
[typographical] ~162-~162: Consider using a typographic close quote here.
Context: ...idr](#output_vpc_cidr) | VPC CIDR | | [vpc_default_network_acl_id](#...(EN_QUOTES)
[typographical] ~163-~163: Consider using a typographic close quote here.
Context: ... created by default on VPC creation | | [vpc_default_security_group_id...(EN_QUOTES)
[typographical] ~164-~164: Consider using a typographic close quote here.
Context: ... created by default on VPC creation | | vpc_id | VPC ...(EN_QUOTES)
[typographical] ~169-~169: To join two clauses or introduce examples, consider using an em dash.
Context: ...-aws-components/tree/master/modules/vpc) - Cloud Posse's upstream component [<img ...(DASH_RULE)
🪛 markdownlint-cli2 (0.17.2)
171-171: Images should have alternate text (alt text)
null(MD045, no-alt-text)
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (3)
tests/fixtures/components/terraform/mock/.terraform/terraform.tfstate
is excluded by!**/*.tfstate
tests/fixtures/scenarios/hooks-test/components/terraform/hook-and-store/terraform.tfstate.d/test-component1/terraform.tfstate
is excluded by!**/*.tfstate
tests/fixtures/scenarios/hooks-test/components/terraform/hook-and-store/terraform.tfstate.d/test-component2/terraform.tfstate
is excluded by!**/*.tfstate
📒 Files selected for processing (59)
cmd/cmd_utils.go
(2 hunks)tests/cli_terraform_test.go
(7 hunks)tests/cli_test.go
(12 hunks)tests/fixtures/README.md
(1 hunks)tests/fixtures/atmos.yaml
(1 hunks)tests/fixtures/components/terraform/mock/.terraform.lock.hcl
(1 hunks)tests/fixtures/components/terraform/mock/.terraform/providers/registry.terraform.io/hashicorp/local/2.5.2/darwin_arm64/LICENSE.txt
(1 hunks)tests/fixtures/components/terraform/mock/nonprod-component-1.terraform.tfvars.json
(1 hunks)tests/fixtures/components/terraform/myapp/cache.nonprod.txt
(1 hunks)tests/fixtures/components/terraform/myapp/prod-myapp.terraform.tfvars.json
(1 hunks)tests/fixtures/scenarios/empty-dir/.atmos/cache.yaml
(1 hunks)tests/fixtures/scenarios/hooks-test/components/terraform/hook-and-store/.terraform.lock.hcl
(1 hunks)tests/fixtures/scenarios/hooks-test/components/terraform/hook-and-store/.terraform/environment
(1 hunks)tests/fixtures/scenarios/hooks-test/components/terraform/hook-and-store/.terraform/providers/registry.terraform.io/hashicorp/null/3.2.3/darwin_arm64/LICENSE.txt
(1 hunks)tests/fixtures/scenarios/mock-terraform/atmos.yaml
(1 hunks)tests/fixtures/scenarios/mock-terraform/components/terraform/mock/backend.tf
(1 hunks)tests/fixtures/scenarios/mock-terraform/components/terraform/mock/main.tf
(1 hunks)tests/fixtures/scenarios/mock-terraform/components/terraform/mock/mock.json
(1 hunks)tests/fixtures/scenarios/mock-terraform/components/terraform/mock/versions.tf
(1 hunks)tests/fixtures/scenarios/mock-terraform/stacks/catalog/terraform/mock.yaml
(1 hunks)tests/fixtures/scenarios/mock-terraform/stacks/dev/mock.yaml
(1 hunks)tests/fixtures/scenarios/mock-terraform/stacks/prod/mock.yaml
(1 hunks)tests/fixtures/scenarios/vendor/components/terraform/github/stargazers/main/README.md
(1 hunks)tests/fixtures/scenarios/vendor/components/terraform/github/stargazers/main/main.tf
(1 hunks)tests/fixtures/scenarios/vendor/components/terraform/github/stargazers/main/outputs.tf
(1 hunks)tests/fixtures/scenarios/vendor/components/terraform/github/stargazers/main/providers.tf
(1 hunks)tests/fixtures/scenarios/vendor/components/terraform/github/stargazers/main/variables.tf
(1 hunks)tests/fixtures/scenarios/vendor/components/terraform/github/stargazers/main/versions.tf
(1 hunks)tests/fixtures/scenarios/vendor/components/terraform/infra/my-vpc1/README.md
(1 hunks)tests/fixtures/scenarios/vendor/components/terraform/infra/my-vpc1/context.tf
(1 hunks)tests/fixtures/scenarios/vendor/components/terraform/infra/my-vpc1/main.tf
(1 hunks)tests/fixtures/scenarios/vendor/components/terraform/infra/my-vpc1/outputs.tf
(1 hunks)tests/fixtures/scenarios/vendor/components/terraform/infra/my-vpc1/providers.tf
(1 hunks)tests/fixtures/scenarios/vendor/components/terraform/infra/my-vpc1/remote-state.tf
(1 hunks)tests/fixtures/scenarios/vendor/components/terraform/infra/my-vpc1/variables.tf
(1 hunks)tests/fixtures/scenarios/vendor/components/terraform/infra/my-vpc1/versions.tf
(1 hunks)tests/fixtures/scenarios/vendor/components/terraform/infra/my-vpc1/vpc-flow-logs.tf
(1 hunks)tests/fixtures/scenarios/vendor/components/terraform/test-components/main/README.md
(1 hunks)tests/fixtures/scenarios/vendor/components/terraform/test-components/main/main.tf
(1 hunks)tests/fixtures/scenarios/vendor/components/terraform/test-components/main/outputs.tf
(1 hunks)tests/fixtures/scenarios/vendor/components/terraform/test-components/main/providers.tf
(1 hunks)tests/fixtures/scenarios/vendor/components/terraform/test-components/main/variables.tf
(1 hunks)tests/fixtures/scenarios/vendor/components/terraform/test-components/main/versions.tf
(1 hunks)tests/fixtures/scenarios/vendor/components/terraform/vpc-src/README.md
(1 hunks)tests/fixtures/scenarios/vendor/components/terraform/vpc-src/main.tf
(1 hunks)tests/fixtures/scenarios/vendor/components/terraform/vpc-src/outputs.tf
(1 hunks)tests/fixtures/scenarios/vendor/components/terraform/vpc-src/variables.tf
(1 hunks)tests/fixtures/scenarios/vendor/components/terraform/vpc-src/versions.tf
(1 hunks)tests/fixtures/scenarios/vendor/components/terraform/weather/main/README.md
(1 hunks)tests/fixtures/scenarios/vendor/components/terraform/weather/main/main.tf
(1 hunks)tests/fixtures/scenarios/vendor/components/terraform/weather/main/outputs.tf
(1 hunks)tests/fixtures/scenarios/vendor/components/terraform/weather/main/providers.tf
(1 hunks)tests/fixtures/scenarios/vendor/components/terraform/weather/main/variables.tf
(1 hunks)tests/fixtures/scenarios/vendor/components/terraform/weather/main/versions.tf
(1 hunks)tests/snapshots/TestCLICommands_atmos_validate_editorconfig_--help.stdout.golden
(1 hunks)tests/snapshots/TestCLICommands_atmos_validate_editorconfig_help.stdout.golden
(1 hunks)tests/test-cases/core.yaml
(7 hunks)tests/test-cases/demo-stacks.yaml
(10 hunks)tests/test-cases/log-level-validation.yaml
(5 hunks)
✅ Files skipped from review due to trivial changes (13)
- tests/fixtures/scenarios/vendor/components/terraform/github/stargazers/main/providers.tf
- tests/fixtures/scenarios/vendor/components/terraform/github/stargazers/main/versions.tf
- tests/fixtures/components/terraform/mock/nonprod-component-1.terraform.tfvars.json
- tests/fixtures/scenarios/hooks-test/components/terraform/hook-and-store/.terraform/environment
- tests/fixtures/scenarios/vendor/components/terraform/vpc-src/versions.tf
- tests/fixtures/scenarios/vendor/components/terraform/test-components/main/providers.tf
- tests/fixtures/scenarios/empty-dir/.atmos/cache.yaml
- tests/fixtures/scenarios/mock-terraform/components/terraform/mock/mock.json
- tests/fixtures/components/terraform/myapp/prod-myapp.terraform.tfvars.json
- tests/fixtures/scenarios/vendor/components/terraform/weather/main/versions.tf
- tests/fixtures/components/terraform/mock/.terraform.lock.hcl
- tests/fixtures/scenarios/hooks-test/components/terraform/hook-and-store/.terraform.lock.hcl
- tests/fixtures/scenarios/vendor/components/terraform/test-components/main/versions.tf
🚧 Files skipped from review as they are similar to previous changes (6)
- tests/snapshots/TestCLICommands_atmos_validate_editorconfig_help.stdout.golden
- tests/snapshots/TestCLICommands_atmos_validate_editorconfig_--help.stdout.golden
- cmd/cmd_utils.go
- tests/test-cases/core.yaml
- tests/test-cases/demo-stacks.yaml
- tests/test-cases/log-level-validation.yaml
🧰 Additional context used
🪛 YAMLlint (1.35.1)
tests/fixtures/scenarios/mock-terraform/stacks/dev/mock.yaml
[error] 18-18: no new line character at the end of file
(new-line-at-end-of-file)
[error] 18-18: trailing spaces
(trailing-spaces)
tests/fixtures/scenarios/mock-terraform/stacks/prod/mock.yaml
[error] 18-18: no new line character at the end of file
(new-line-at-end-of-file)
[error] 18-18: trailing spaces
(trailing-spaces)
tests/fixtures/scenarios/mock-terraform/stacks/catalog/terraform/mock.yaml
[error] 13-13: no new line character at the end of file
(new-line-at-end-of-file)
[error] 13-13: trailing spaces
(trailing-spaces)
tests/fixtures/atmos.yaml
[error] 34-34: no new line character at the end of file
(new-line-at-end-of-file)
[error] 34-34: trailing spaces
(trailing-spaces)
🪛 LanguageTool
tests/fixtures/scenarios/vendor/components/terraform/test-components/main/README.md
[uncategorized] ~13-~13: Loose punctuation mark.
Context: ...empty string. ### Outputs - metadata
: The data retrieved from IPinfo for the ...
(UNLIKELY_OPENING_PUNCTUATION)
tests/fixtures/scenarios/vendor/components/terraform/vpc-src/README.md
[typographical] ~3-~3: Consider using typographic quotation marks here.
Context: ...afo
10000
rm Weather Component This Terraform "root" module fetches weather information for ...
(EN_QUOTES)
[uncategorized] ~9-~9: You might be missing the article “an” here.
Context: ...ch weather updates for a location using HTTP request. - Write the obtained weather d...
(AI_EN_LECTOR_MISSING_DETERMINER_AN)
[uncategorized] ~34-~34: Loose punctuation mark.
Context: ... where it will be deployed. - location
: Location for which the weather is repor...
(UNLIKELY_OPENING_PUNCTUATION)
[uncategorized] ~34-~34: A determiner appears to be missing. Consider inserting it.
Context: ...tion for which the weather is reported. Default is "Los Angeles". - options
: Options ...
(AI_EN_LECTOR_MISSING_DETERMINER)
[typographical] ~34-~34: Consider using typographic quotation marks here.
Context: ...ich the weather is reported. Default is "Los Angeles". - options
: Options to customize the ...
(EN_QUOTES)
[uncategorized] ~35-~35: Loose punctuation mark.
Context: ...d. Default is "Los Angeles". - options
: Options to customize the output. Defaul...
(UNLIKELY_OPENING_PUNCTUATION)
[uncategorized] ~35-~35: A determiner appears to be missing. Consider inserting it.
Context: ...ions: Options to customize the output. Default is "0T". -
format`: Specifies the outp...
(AI_EN_LECTOR_MISSING_DETERMINER)
[typographical] ~35-~35: Consider using a typographic opening quote here.
Context: ...ons to customize the output. Default is "0T". - format
: Specifies the output fo...
(EN_QUOTES)
[typographical] ~35-~35: Consider using a typographic close quote here.
Context: ... to customize the output. Default is "0T". - format
: Specifies the output forma...
(EN_QUOTES)
[uncategorized] ~36-~36: Loose punctuation mark.
Context: ... the output. Default is "0T". - format
: Specifies the output format. Default is...
(UNLIKELY_OPENING_PUNCTUATION)
[uncategorized] ~36-~36: A determiner appears to be missing. Consider inserting it.
Context: ... format
: Specifies the output format. Default is "v2". - lang
: Language in which th...
(AI_EN_LECTOR_MISSING_DETERMINER)
[typographical] ~36-~36: Consider using a typographic opening quote here.
Context: ...Specifies the output format. Default is "v2". - lang
: Language in which the wea...
(EN_QUOTES)
[typographical] ~36-~36: Consider using a typographic close quote here.
Context: ...cifies the output format. Default is "v2". - lang
: Language in which the weathe...
(EN_QUOTES)
[uncategorized] ~37-~37: Loose punctuation mark.
Context: ...output format. Default is "v2". - lang
: Language in which the weather will be d...
(UNLIKELY_OPENING_PUNCTUATION)
[uncategorized] ~37-~37: A determiner appears to be missing. Consider inserting it.
Context: ...in which the weather will be displayed. Default is "en". - units
: Units in which the ...
(AI_EN_LECTOR_MISSING_DETERMINER)
[typographical] ~37-~37: Consider using typographic quotation marks here.
Context: ...e weather will be displayed. Default is "en". - units
: Units in which the weather ...
(EN_QUOTES)
[uncategorized] ~38-~38: Loose punctuation mark.
Context: ...be displayed. Default is "en". - units
: Units in which the weather will be disp...
(UNLIKELY_OPENING_PUNCTUATION)
[uncategorized] ~38-~38: A determiner appears to be missing. Consider inserting it.
Context: ...in which the weather will be displayed. Default is "m". ### Outputs - weather
: The f...
(AI_EN_LECTOR_MISSING_DETERMINER)
[typographical] ~38-~38: Consider using typographic quotation marks here.
Context: ...e weather will be displayed. Default is "m". ### Outputs - weather
: The fetched ...
(EN_QUOTES)
[uncategorized] ~42-~42: Loose punctuation mark.
Context: ...ther: The fetched weather data. -
url: Requested URL. -
stage`: Stage of depl...
(UNLIKELY_OPENING_PUNCTUATION)
[uncategorized] ~43-~43: Loose punctuation mark.
Context: ... data. - url
: Requested URL. - stage
: Stage of deployment. - location
: Loca...
(UNLIKELY_OPENING_PUNCTUATION)
[uncategorized] ~44-~44: Loose punctuation mark.
Context: ...tage: Stage of deployment. -
location: Location of the reported weather. -
la...
(UNLIKELY_OPENING_PUNCTUATION)
[uncategorized] ~45-~45: Loose punctuation mark.
Context: ...cation of the reported weather. - lang
: Language used for weather data. - `unit...
(UNLIKELY_OPENING_PUNCTUATION)
[uncategorized] ~46-~46: Loose punctuation mark.
Context: ...anguage used for weather data. - units
: Units of measurement for the weather da...
(UNLIKELY_OPENING_PUNCTUATION)
tests/fixtures/scenarios/vendor/components/terraform/infra/my-vpc1/README.md
[typographical] ~60-~60: Consider using a typographic close quote here.
Context: ...| Name | Version | |------|---------| | [terraform](#requirement_terrafor...
(EN_QUOTES)
[typographical] ~61-~61: Consider using a typographic close quote here.
Context: ...#requirement_terraform) | >= 1.0.0 | | aws | >= 4.9....
(EN_QUOTES)
[typographical] ~67-~67: Consider using a typographic close quote here.
Context: ...| Name | Version | |------|---------| | aws | >= 4.9.0 |...
(EN_QUOTES)
[typographical] ~73-~73: Consider using a typographic close quote here.
Context: ...Version | |------|--------|---------| | [endpoint_security_groups](#modu...
(EN_QUOTES)
[typographical] ~74-~74: Consider using a typographic close quote here.
Context: ...oudposse/security-group/aws | 2.2.0 | | iam_roles ...
(EN_QUOTES)
[typographical] ~75-~75: Consider using a typographic close quote here.
Context: ...account-map/modules/iam-roles | n/a | | subnets | clou...
(EN_QUOTES)
[typographical] ~76-~76: Consider using a typographic close quote here.
Context: ...udposse/dynamic-subnets/aws | 2.3.0 | | this | cloudposse...
(EN_QUOTES)
[typographical] ~77-~77: Consider using a typographic close quote here.
Context: ...s) | cloudposse/label/null | 0.25.0 | | utils | cloudpos...
(EN_QUOTES)
[typographical] ~78-~78: Consider using a typographic close quote here.
Context: ...ils) | cloudposse/utils/aws | 1.3.0 | | vpc | cloudposse/v...
(EN_QUOTES)
[typographical] ~79-~79: Consider using a typographic close quote here.
Context: ..._vpc) | cloudposse/vpc/aws | 2.1.0 | | [vpc_endpoints](#module_vpc_end...
(EN_QUOTES)
[typographical] ~80-~80: Consider using a typographic close quote here.
Context: .../aws//modules/vpc-endpoints | 2.1.0 | | [vpc_flow_logs_bucket](#module...
(EN_QUOTES)
[typographical] ~95-~95: Consider using a typographic close quote here.
Context: ...--------|------|---------|:--------:| | [additional_tag_map](#input_add...
(EN_QUOTES)
[typographical] ~96-~96: Consider using a typographic close quote here.
Context: ...ration. | map(string)
| {}
| no | | [assign_generated_ipv6_cidr_bl...
(EN_QUOTES)
[typographical] ~97-~97: Consider using a typographic close quote here.
Context: ...m_pool_id. |
bool|
false` | no | | attributes |...
(EN_QUOTES)
[style] ~97-~97: A comma is missing here.
Context: ...s) | ID element. Additional attributes (e.g. workers
or cluster
) to add to id
,...
(EG_NO_COMMA)
[typographical] ~98-~98: Consider using a typographic close quote here.
Context: ...ement. | list(string)
| []
| no | | [availability_zone_ids](#input_...
(EN_QUOTES)
[style] ~98-~98: A comma is missing here.
Context: ...bility_zones.<br>Can be the full name, e.g.
use1-az1`, or just the part after the ...
(EG_NO_COMMA)
[style] ~98-~98: A comma is missing here.
Context: ...t the part after the AZ ID region code, e.g. -az1
,
to allow reusable values acr...
(EG_NO_COMMA)
[typographical] ~99-~99: Consider using a typographic close quote here.
Context: ...ounts. | list(string)
| []
| no | | [availability_zones](#input_avai...
(EN_QUOTES)
[style] ~99-~99: A comma is missing here.
Context: ...e_idsis set.<br>Can be the full name, e.g.
us-east-1a`, or just the part after th...
(EG_NO_COMMA)
[style] ~99-~99: A comma is missing here.
Context: ...1a, or just the part after the region, e.g.
a` to allow reusable values across reg...
(EG_NO_COMMA)
[typographical] ~100-~100: Consider using a typographic close quote here.
Context: ...ility. | list(string)
| []
| no | | context | Singl...
(EN_QUOTES)
[typographical] ~100-~100: Consider using a typographic close quote here.
Context: ... any
|
{| n...
"additional_tag_map": {},
"attributes": [],
"delim...(EN_QUOTES)
[typographical] ~100-~100: Consider using a typographic close quote here.
Context: ...dditional_tag_map": {},
"attributes": [],
"delimiter": null,
"desc...(EN_QUOTES)
[typographical] ~100-~100: Consider using typographic quotation marks here.
Context: ...g_map": {},
"attributes": [],
"delimiter": null,
"descriptor_formats": {},<b...(EN_QUOTES)
[typographical] ~100-~100: Consider using a typographic close quote here.
Context: ... "descriptor_formats": {},
"enabled": true,
"environment": null,
"...(EN_QUOTES)
[typographical] ~100-~100: Consider using typographic quotation marks here.
Context: ...ormats": {},
"enabled": true,
"environment": null,
"id_length_limit": null,<br...(EN_QUOTES)
[typographical] ~100-~100: Consider using a typographic opening quote here.
Context: ...": true,
"environment": null,
"id_length_limit": null,
"label_key_...(EN_QUOTES)
[typographical] ~100-~100: Consider using a typographic close quote here.
Context: ...nvironment": null,
"id_length_limit": null,
"label_key_case": null,
...(EN_QUOTES)
[typographical] ~100-~100: Consider using a typographic opening quote here.
Context: ...ull,
"id_length_limit": null,
"label_key_case": null,
"label_order...(EN_QUOTES)
[typographical] ~100-~100: Consider using a typographic close quote here.
Context: ...ength_limit": null,
"label_key_case": null,
"label_order": [],
"la...(EN_QUOTES)
[typographical] ~100-~100: Consider using a typographic opening quote here.
Context: ...se": null,
"label_order": [],
"label_value_case": null,
"labels_as...(EN_QUOTES)
[typographical] ~100-~100: Consider using a typographic close quote here.
Context: ...label_order": [],
"label_value_case": null,
"labels_as_tags": [
...(EN_QUOTES)
[typographical] ~100-~100: Consider using a typographic opening quote here.
Context: ...[],
"label_value_case": null,
"labels_as_tags": [
"unset"
]...(EN_QUOTES)
[typographical] ~100-~100: Consider using a typographic close quote here.
Context: ..._value_case": null,
"labels_as_tags": [
"unset"
],
"name": ...(EN_QUOTES)
[typographical] ~100-~100: Consider using typographic quotation marks here.
Context: ...: null,
"labels_as_tags": [
"unset"
],
"name": null,
"namesp...(EN_QUOTES)
[typographical] ~100-~100: Consider using typographic quotation marks here.
Context: ...as_tags": [
"unset"
],
"name": null,
"namespace": null,
"re...(EN_QUOTES)
[typographical] ~100-~100: Consider using typographic quotation marks here.
Context: ..."unset"
],
"name": null,
"namespace": null,
"regex_replace_chars": null...(EN_QUOTES)
[typographical] ~100-~100: Consider using a typographic opening quote here.
Context: ...me": null,
"namespace": null,
"regex_replace_chars": null,
"stage"...(EN_QUOTES)
[typographical] ~100-~100: Consider using a typographic close quote here.
Context: ...espace": null,
"regex_replace_chars": null,
"stage": null,
"tags":...(EN_QUOTES)
[typographical] ~100-~100: Consider using typographic quotation marks here.
Context: ...
"regex_replace_chars": null,
"stage": null,
"tags": {},
"tenant": ...(EN_QUOTES)
[typographical] ~100-~100: Consider using typographic quotation marks here.
Context: ..._chars": null,
"stage": null,
"tags": {},
"tenant": null
}
(EN_QUOTES)
[typographical] ~100-~100: Consider using a typographic close quote here.
Context: ...ge": null,
"tags": {},
"tenant": null
} | no | | <a name="inpu...
(EN_QUOTES)
[typographical] ~101-~101: Consider using a typographic close quote here.
Context: ...br> "tenant": null
} | no | | delimiter | D...
(EN_QUOTES)
[typographical] ~101-~101: Consider using a typographic close quote here.
Context: ...ts.
Defaults to -
(hyphen). Set to ""
to use no delimiter at all. | `string...
(EN_QUOTES)
[typographical] ~102-~102: Consider using a typographic close quote here.
Context: ...er at all. | string
| null
| no | | [descriptor_formats](#input_desc...
(EN_QUOTES)
[style] ~102-~102: This sentence is over 40 words long. Consider splitting it up, as shorter sentences make the text easier to read.
Context: ...of maps. Keys are names of descriptors. Values are maps of the form{<br> format = string<br> labels = list(string)<br>}
(Type is any
so the map values can later be enhanced to provide additional options.)format
is a Terraform format string to be passed to the format()
function.labels
is a list of labels, in order, to pass to format()
function.
Label values will be normalized before being passed to format()
so they will be
identical to how they appear in id
.
Default is {}
(descriptors
output will be empty). | any
| {}
| no | | <a name="inpu...
(TOO_LONG_SENTENCE)
[typographical] ~103-~103: Consider using a typographic close quote here.
Context: ...will be empty). | any
| {}
| no | | enabled | Set t...
(EN_QUOTES)
[grammar] ~103-~103: Did you mean “too false to”?
Context: ..."> enabled | Set to false to prevent the module from creating any re...
(TOO_ADJECTIVE_TO)
[typographical] ~104-~104: Consider using a typographic close quote here.
Context: ...ny resources | bool
| null
| no | | environment...
(EN_QUOTES)
[style] ~104-~104: A comma is missing here.
Context: ...) | ID element. Usually used for region e.g. 'uw2', 'us-west-2', OR role 'prod', 'st...
(EG_NO_COMMA)
[typographical] ~105-~105: Consider using a typographic close quote here.
Context: ...ev', 'UAT' | string
| null
| no | | [gateway_vpc_endpoints](#input_...
(EN_QUOTES)
[typographical] ~105-~105: Consider using a typographic opening quote here.
Context: ...ion into the VPC. Only valid values are "dynamodb" and "s3". | set(string)
| `[...
(EN_QUOTES)
[typographical] ~105-~105: Consider using a typographic close quote here.
Context: ...the VPC. Only valid values are "dynamodb" and "s3". | set(string)
| []
| no |...
(EN_QUOTES)
[typographical] ~105-~105: Consider using a typographic opening quote here.
Context: ...C. Only valid values are "dynamodb" and "s3". | set(string)
| []
| no | | <a ...
(EN_QUOTES)
[typographical] ~105-~105: Consider using a typographic close quote here.
Context: ...Only valid values are "dynamodb" and "s3". | set(string)
| []
| no | | <a nam...
(EN_QUOTES)
[typographical] ~106-~106: Consider using a typographic close quote here.
Context: ...d "s3". | set(string)
| []
| no | | [id_length_limit](#input_id_le...
(EN_QUOTES)
[grammar] ~106-~106: The verb ‘keep’ seems to be in the wrong form here.
Context: ... for unlimited length.
Set to null
for keep the existing setting, which defaults to...
(FOR_VB)
[typographical] ~107-~107: Consider using a typographic close quote here.
Context: ...id_full
. | number
| null
| no | | [interface_vpc_endpoints](#input...
(EN_QUOTES)
[typographical] ~108-~108: Consider using a typographic close quote here.
Context: ...he VPC. | set(string)
| []
| no | | [ipv4_additional_cidr_block_as...
(EN_QUOTES)
[typographical] ~109-~109: Consider using a typographic close quote here.
Context: ...= number
})) | {}
| no | | [ipv4_cidr_block_association_t...
(EN_QUOTES)
[typographical] ~110-~110: Consider using a typographic close quote here.
Context: ... string
}) | null
| no | | ipv4_cidrs...
(EN_QUOTES)
[typographical] ~111-~111: Consider using a typographic close quote here.
Context: ...(string)
})) | []
| no | | [ipv4_primary_cidr_block](#inpu...
(EN_QUOTES)
[typographical] ~112-~112: Consider using a typographic close quote here.
Context: ... not both. | string
| null
| no | | [ipv4_primary_cidr_block_assoc...
(EN_QUOTES)
[typographical] ~113-~113: Consider using a typographic close quote here.
Context: ... number
}) | null
| no | | [label_key_case](#input_label_...
(EN_QUOTES)
[typographical] ~114-~114: Consider using a typographic close quote here.
Context: ...: title
. | string
| null
| no | | [label_order](#input_label_orde...
(EN_QUOTES)
[typographical] ~114-~114: Consider using typographic quotation marks here.
Context: ...ts) appear in the id
.
Defaults to ["namespace", "environment", "stage", "name", "attri...
(EN_QUOTES)
[typographical] ~114-~114: Consider using typographic quotation marks here.
Context: ... the id
.
Defaults to ["namespace", "environment", "stage", "name", "attributes"].
You...
(EN_QUOTES)
[typographical] ~114-~114: Consider using typographic quotation marks here.
Context: ...efaults to ["namespace", "environment", "stage", "name", "attributes"].
You can omit...
(EN_QUOTES)
[typographical] ~114-~114: Consider using typographic quotation marks here.
Context: ...o ["namespace", "environment", "stage", "name", "attributes"].
You can omit any of ...
(EN_QUOTES)
[typographical] ~114-~114: Consider using typographic quotation marks here.
Context: ...space", "environment", "stage", "name", "attributes"].
You can omit any of the 6 labels (...
(EN_QUOTES)
[typographical] ~114-~114: Consider using typographic quotation marks here.
Context: ...].
You can omit any of the 6 labels ("tenant" is the 6th), but at least one must be p...
(EN_QUOTES)
[typographical] ~115-~115: Consider using a typographic close quote here.
Context: ...ent. | list(string)
| null
| no | | [label_value_case](#input_label...
(EN_QUOTES)
[typographical] ~115-~115: Consider using a typographic close quote here.
Context: ... this to title
and set delimiter
to ""
to yield Pascal Case IDs.
Default ...
(EN_QUOTES)
[typographical] ~116-~116: Consider using a typographic close quote here.
Context: ...: lower
. | string
| null
| no | | [labels_as_tags](#input_labels...
(EN_QUOTES)
[typographical] ~116-~116: Consider using typographic quotation marks here.
Context: ... ignored. | set(string)
|
[| no | | <a name="input_map_...
"default"
]
(EN_QUOTES)
[typographical] ~117-~117: Consider using a typographic close quote here.
Context: ...re>[
"default"
] | no | | [map_public_ip_on_launch](#inp...
(EN_QUOTES)
[typographical] ~118-~118: Consider using a typographic close quote here.
Context: ...c IP address | bool
| true
| no | | [max_subnet_count](#input_max_...
(EN_QUOTES)
[uncategorized] ~118-~118: ‘Amount of’ should usually only be used with uncountable or mass nouns. Consider using “number” if this is not the case.
Context: ..._max_subnet_count) | Sets the maximum amount of subnets to deploy. 0 will deploy a s...
(AMOUNTOF_TO_NUMBEROF)
[typographical] ~119-~119: Consider using a typographic close quote here.
Context: ...in the region | number
| 0
| no | | name | ID element....
(EN_QUOTES)
[typographical] ~119-~119: Consider adding a comma after ‘Usually’ for more clarity.
Context: ... name | ID element. Usually the component or solution name, e.g. 'a...
(RB_LY_COMMA)
[style] ~119-~119: A comma is missing here.
Context: ...Usually the component or solution name, e.g. 'app' or 'jenkins'.
This is the only...
(EG_NO_COMMA)
[typographical] ~119-~119: Consider using typographic quotation marks here.
Context: ...nt not also included as a tag
.
The "name" tag is set to the full id
string. The...
(EN_QUOTES)
[typographical] ~120-~120: Consider using a typographic close quote here.
Context: ...meinput. |
string|
null` | no | | namespace | I...
(EN_QUOTES)
[typographical] ~120-~120: Consider adding a comma after ‘Usually’ for more clarity.
Context: ...space](#input_namespace) | ID element. Usually an abbreviation of your organization na...
(RB_LY_COMMA)
[style] ~120-~120: A comma is missing here.
Context: ...abbreviation of your organization name, e.g. 'eg' or 'cp', to help ensure generated ...
(EG_NO_COMMA)
[style] ~120-~120: A comma and a dot are missing here.
Context: ...iation of your organization name, e.g. 'eg' or 'cp', to help ensure generated IDs ...
(EG_NO_COMMA)
[typographical] ~121-~121: Consider using a typographic close quote here.
Context: ...lly unique | string
| null
| no | | [nat_eip_aws_shield_protection...
(EN_QUOTES)
[typographical] ~122-~122: Consider using a typographic close quote here.
Context: ...is account. | bool
| false
| no | | [nat_gateway_enabled](#input_na...
(EN_QUOTES)
[typographical] ~123-~123: Consider using a typographic close quote here.
Context: ...NAT gateways | bool
| true
| no | | [nat_instance_enabled](#input_n...
(EN_QUOTES)
[typographical] ~124-~124: Consider using a typographic close quote here.
Context: ...T instances | bool
| false
| no | | [nat_instance_type](#input_nat...
(EN_QUOTES)
[typographical] ~124-~124: Consider using a typographic close quote here.
Context: ..._type) | NAT Instance type | string
| "t3.micro"
| no | | <a name="input_publi...
(EN_QUOTES)
[typographical] ~125-~125: Consider using a typographic close quote here.
Context: ...type | string
| "t3.micro"
| no | | [public_subnets_enabled](#input...
(EN_QUOTES)
[typographical] ~126-~126: Consider using a typographic close quote here.
Context: ...hen false
. | bool
| true
| no | | [regex_replace_chars](#input_re...
(EN_QUOTES)
[typographical] ~126-~126: Consider using a typographic close quote here.
Context: ...ed from the ID elements.
If not set, "/[^a-zA-Z0-9-]/"
is used to remove all ...
(EN_QUOTES)
[style] ~126-~126: Consider using a more formal/concise alternative here.
Context: ...9-]/"is used to remove all characters other than hyphens, letters and digits. |
string`...
(OTHER_THAN)
[style] ~126-~126: The serial comma (Oxford comma, Harvard comma) is missing.
Context: ...move all characters other than hyphens, letters and digits. | string
| null
| no | | <a...
(SERIAL_COMMA_ON)
[typographical] ~127-~127: Consider using a typographic close quote here.
Context: ...nd digits. | string
| null
| no | | region | AWS Reg...
(EN_QUOTES)
[typographical] ~128-~128: Consider using a typographic close quote here.
Context: ...| AWS Region | string
| n/a | yes | | stage | ID elemen...
(EN_QUOTES)
[style] ~128-~128: A comma is missing here.
Context: ...element. Usually used to indicate role, e.g. 'prod', 'staging', 'source', 'build', '...
(EG_NO_COMMA)
[typographical] ~129-~129: Consider using a typographic close quote here.
Context: ... 'release' | string
| null
| no | | [subnet_type_tag_key](#input_s...
(EN_QUOTES)
[grammar] ~129-~129: In this context, ‘type’ should agree in number with the noun after ‘of’.
Context: ...pe tag to provide information about the type of subnets, e.g. cpco/subnet/type=private
or `cp...
(TYPE_OF_PLURAL)
[style] ~129-~129: A comma is missing here.
Context: ... information about the type of subnets, e.g. cpco/subnet/type=private
or `cpcp/sub...
(EG_NO_COMMA)
[typographical] ~130-~130: Consider using a typographic close quote here.
Context: ...type=public|
string` | n/a | yes | | tags | Additional ...
(EN_QUOTES)
[style] ~130-~130: A comma is missing here.
Context: ...tags | Additional tags (e.g. {'BusinessUnit': 'XYZ'}
).
Neither ...
(EG_NO_COMMA)
[typographical] ~131-~131: Consider using a typographic close quote here.
Context: ...module. | map(string)
| {}
| no | | tenant | ID elem...
(EN_QUOTES)
[typographical] ~132-~132: Consider using a typographic close quote here.
Context: ...rce is for | string
| null
| no | | [vpc_flow_logs_bucket_environm...
(EN_QUOTES)
[typographical] ~132-~132: Consider using a typographic close quote here.
Context: ...Logs bucket is provisioned | string
| ""
| no | | <a name="input_vpc_flow_logs...
(EN_QUOTES)
[typographical] ~133-~133: Consider using a typographic close quote here.
Context: ... provisioned | string
| ""
| no | | [vpc_flow_logs_bucket_stage_n...
(EN_QUOTES)
[typographical] ~133-~133: Consider using a typographic close quote here.
Context: ...Logs bucket is provisioned | string
| ""
| no | | <a name="input_vpc_flow_logs...
(EN_QUOTES)
[typographical] ~134-~134: Consider using a typographic close quote here.
Context: ... provisioned | string
| ""
| no | | [vpc_flow_logs_bucket_tenant_...
(EN_QUOTES)
[typographical] ~135-~135: Consider using a typographic close quote here.
Context: ...as null
. | string
| null
| no | | [vpc_flow_logs_enabled](#input...
(EN_QUOTES)
[typographical] ~136-~136: Consider using a typographic close quote here.
Context: ...PC Flow Logs | bool
| true
| no | | [vpc_flow_logs_log_destination...
(EN_QUOTES)
[typographical] ~136-~136: Consider using a typographic close quote here.
Context: ...: cloud-watch-logs
, s3
| string
| "s3"
| no | | <a name="input_vpc_flow_lo...
(EN_QUOTES)
[typographical] ~137-~137: Consider using a typographic close quote here.
Context: ...ogs,
s3|
string|
"s3"` | no | | [vpc_flow_logs_traffic_type](#...
(EN_QUOTES)
[typographical] ~137-~137: Consider using a typographic close quote here.
Context: ... ACCEPT
, REJECT
, ALL
| string
| "ALL"
| no | ## Outputs | Name | Descr...
(EN_QUOTES)
[typographical] ~143-~143: Consider using a typographic close quote here.
Context: ... Description | |------|-------------| | [availability_zones](#output_ava...
(EN_QUOTES)
[typographical] ~144-~144: Consider using a typographic close quote here.
Context: ...ty Zones where subnets were created | | [az_private_subnets_map](#outpu...
(EN_QUOTES)
[typographical] ~145-~145: Consider using a typographic close quote here.
Context: ...st of private subnet IDs in the AZs | | [az_public_subnets_map](#output...
(EN_QUOTES)
[typographical] ~146-~146: Consider using a typographic close quote here.
Context: ...ist of public subnet IDs in the AZs | | [interface_vpc_endpoints](#outpu...
(EN_QUOTES)
[typographical] ~147-~147: Consider using a typographic close quote here.
Context: ...nterface VPC Endpoints in this VPC. | | [max_subnet_count](#output_max...
(EN_QUOTES)
[typographical] ~148-~148: Consider using a typographic close quote here.
Context: ... subnet CIDRs need to be recomputed | | [nat_eip_protections](#output_n...
(EN_QUOTES)
[typographical] ~149-~149: Consider using a typographic close quote here.
Context: ...ed Protections for NAT Elastic IPs. | | [nat_gateway_ids](#output_nat_...
(EN_QUOTES)
[typographical] ~150-~150: Consider using a typographic close quote here.
Context: ...at_gateway_ids) | NAT Gateway IDs | | [nat_gateway_public_ips](#outpu...
(EN_QUOTES)
[typographical] ~151-~151: Consider using a typographic close quote here.
Context: ...blic_ips) | NAT Gateway public IPs | | [nat_instance_ids](#output_nat...
(EN_QUOTES)
[typographical] ~152-~152: Consider using a typographic close quote here.
Context: ..._instance_ids) | NAT Instance IDs | | [private_route_table_ids](#outp...
(EN_QUOTES)
[typographical] ~153-~153: Consider using a typographic close quote here.
Context: ...s) | Private subnet route table IDs | | [private_subnet_cidrs](#output_...
(EN_QUOTES)
[typographical] ~154-~154: Consider using a typographic close quote here.
Context: ...bnet_cidrs) | Private subnet CIDRs | | [private_subnet_ids](#output_pr...
(EN_QUOTES)
[typographical] ~155-~155: Consider using a typographic close quote here.
Context: ..._subnet_ids) | Private subnet IDs | | [public_route_table_ids](#outpu...
(EN_QUOTES)
[typographical] ~156-~156: Consider using a typographic close quote here.
Context: ...ds) | Public subnet route table IDs | | [public_subnet_cidrs](#output_p...
(EN_QUOTES)
[typographical] ~157-~157: Consider using a typographic close quote here.
Context: ...ubnet_cidrs) | Public subnet CIDRs | | [public_subnet_ids](#output_pub...
(EN_QUOTES)
[typographical] ~158-~158: Consider using a typographic close quote here.
Context: ...c_subnet_ids) | Public subnet IDs | | [route_tables](#output_route_ta...
(EN_QUOTES)
[typographical] ~159-~159: Consider using a typographic close quote here.
Context: ...te_tables) | Route tables info map | | subnets | Subn...
(EN_QUOTES)
[typographical] ~160-~160: Consider using a typographic close quote here.
Context: ...output_subnets) | Subnets info map | | vpc | VPC info map...
(EN_QUOTES)
[typographical] ~161-~161: Consider using a typographic close quote here.
Context: ... vpc | VPC info map | | vpc_cidr | ...
(EN_QUOTES)
[typographical] ~162-~162: Consider using a typographic close quote here.
Context: ...idr](#output_vpc_cidr) | VPC CIDR | | [vpc_default_network_acl_id](#...
(EN_QUOTES)
[typographical] ~163-~163: Consider using a typographic close quote here.
Context: ... created by default on VPC creation | | [vpc_default_security_group_id...
(EN_QUOTES)
[typographical] ~164-~164: Consider using a typographic close quote here.
Context: ... created by default on VPC creation | | vpc_id | VPC ...
(EN_QUOTES)
[typographical] ~169-~169: To join two clauses or introduce examples, consider using an em dash.
Context: ...-aws-components/tree/master/modules/vpc) - Cloud Posse's upstream component [<img ...
(DASH_RULE)
tests/fixtures/components/terraform/mock/.terraform/providers/registry.terraform.io/hashicorp/local/2.5.2/darwin_arm64/LICENSE.txt
[typographical] ~9-~9: Consider using typographic quotation marks here.
Context: ...== 1. Definitions -------------- 1.1. "Contributor" means each individual or legal enti...
(EN_QUOTES)
[typographical] ~13-~13: Consider using typographic quotation marks here.
Context: ...ion of, or owns Covered Software. 1.2. "Contributor Version" means the combination of the Contri...
(EN_QUOTES)
[typographical] ~17-~17: Consider using typographic quotation marks here.
Context: ...cular Contributor's Contribution. 1.3. "Contribution" means Covered Software of a particu...
(EN_QUOTES)
[typographical] ~20-~20: Consider using typographic quotation marks here.
Context: ...ware of a particular Contributor. 1.4. "Covered Software" means Source Code Form to which the...
(EN_QUOTES)
[typographical] ~26-~26: Consider using a typographic opening quote here.
Context: ...e including portions thereof. 1.5. "Incompatible With Secondary Licenses" ...
(EN_QUOTES)
[typographical] ~26-~26: Consider using a typographic close quote here.
Context: ...5. "Incompatible With Secondary Licenses" means (a) that the initial Con...
(EN_QUOTES)
[typographical] ~36-~36: Consider using typographic quotation marks here.
Context: ... terms of a Secondary License. 1.6. "Executable Form" means any form of the work other th...
(EN_QUOTES)
[style] ~37-~37: Consider using a more formal/concise alternative here.
Context: ...le Form" means any form of the work other than Source Code Form. 1.7. "Larger Work" ...
(OTHER_THAN)
[typographical] ~39-~39: Consider using typographic quotation marks here.
Context: ...work other than Source Code Form. 1.7. "Larger Work" means a work that combines Covered ...
(EN_QUOTES)
[typographical] ~43-~43: Consider using typographic quotation marks here.
Context: ...es, that is not Covered Software. 1.8. "License" means this document. 1.9. "Licensa...
(EN_QUOTES)
[typographical] ~46-~46: Consider using typographic quotation marks here.
Context: ...License" means this document. 1.9. "Licensable" means having the right to grant, to...
(EN_QUOTES)
[style] ~48-~48: ‘any and all’ might be wordy. Consider a shorter alternative.
Context: ...e of the initial grant or subsequently, any and all of the rights conveyed by this License....
(EN_WORDINESS_PREMIUM_ANY_AND_ALL)
[typographical] ~51-~51: Consider using typographic quotation marks here.
Context: ...rights conveyed by this License. 1.10. "Modifications" means any of the following: (a...
(EN_QUOTES)
[typographical] ~61-~61: Consider using typographic quotation marks here.
Context: ...ns any Covered Software. 1.11. "Patent Claims" of a Contributor means any patent c...
(EN_QUOTES)
[typographical] ~69-~69: Consider using typographic quotation marks here.
Context: ... or its Contributor Version. 1.12. "Secondary License" means either the GNU General Public...
(EN_QUOTES)
[typographical] ~75-~75: Consider using a typographic opening quote here.
Context: ... versions of those licenses. 1.13. "Source Code Form" means the form of ...
(EN_QUOTES)
[typographical] ~75-~75: Consider using a typographic close quote here.
Context: ...e licenses. 1.13. "Source Code Form" means the form of the work preferre...
(EN_QUOTES)
[typographical] ~78-~78: Consider using typographic quotation marks here.
Context: ...ferred for making modifications. 1.14. "You" (or "Your") means an individual or ...
(EN_QUOTES)
[typographical] ~78-~78: Consider using typographic quotation marks here.
Context: ... making modifications. 1.14. "You" (or "Your") means an individual or a legal ent...
(EN_QUOTES)
[typographical] ~80-~80: Consider using typographic quotation marks here.
Context: ...r this License. For legal entities, "You" includes any entity that controls, ...
(EN_QUOTES)
[typographical] ~82-~82: Consider using typographic quotation marks here.
Context: ...u. For purposes of this definition, "control" means (a) the power, direct or indi...
(EN_QUOTES)
[style] ~108-~108: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...te The licenses granted in Section 2.1 with respect to any Contribution become effective for e...
(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
[grammar] ~109-~109: The usual preposition for “contribution” is “to”. Did you mean “Contribution to”?
Context: ... Contribution become effective for each Contribution on the date the Contributor first distribu...
(ON_THE_NOVEL)
[uncategorized] ~174-~174: Possible missing comma found.
Context: ...stribute Covered Software in Executable Form then: (a) such Covered Software must a...
(AI_HYDRA_LEO_MISSING_COMMA)
[style] ~210-~210: The serial comma (Oxford comma, Harvard comma) is missing.
Context: ...to charge a fee for, warranty, support, indemnity or liability obligations to one or more re...
(SERIAL_COMMA_ON)
[style] ~212-~212: Only include ‘own’ if you want to emphasize that something belongs to a person or thing or was done by a person or thing.
Context: ...oftware. However, You may do so only on Your own behalf, and not on behalf of any Contri...
(PRP_OWN)
[style] ~213-~213: As an alternative to the over-used intensifier ‘absolutely’, consider replacing this phrase.
Context: ...lf of any Contributor. You must make it absolutely clear that any such warranty, support, indemn...
(EN_WEAK_ADJECTIVE)
[style] ~216-~216: The serial comma (Oxford comma, Harvard comma) is missing.
Context: ...butor as a result of warranty, support, indemnity or liability terms You offer. You may incl...
(SERIAL_COMMA_ON)
[style] ~225-~225: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...y with any of the terms of this License with respect to some or all of the Covered Software due...
(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
[typographical] ~227-~227: Conjunctions like ‘and’ should not follow semicolons. Consider using a comma, or removing the conjunction.
Context: ...s License to the maximum extent possible; and (b) describe the limitations and the code...
(CONJUNCTION_AFTER_SEMICOLON)
[style] ~243-~243: ‘prior to’ might be wordy. Consider a shorter alternative.
Context: ...non-compliance by some reasonable means prior to 60 days after You have come back into c...
(EN_WORDINESS_PREMIUM_PRIOR_TO)
[style] ~248-~248: ‘prior to’ might be wordy. Consider a shorter alternative.
Context: ...h Contributor, and You become compliant prior to 30 days after Your receipt of the notic...
(EN_WORDINESS_PREMIUM_PRIOR_TO)
[style] ~255-~255: ‘any and all’ might be wordy. Consider a shorter alternative.
Context: ...tent, then the rights granted to You by any and all Contributors for the Covered Software u...
(EN_WORDINESS_PREMIUM_ANY_AND_ALL)
[style] ~260-~260: ‘prior to’ might be wordy. Consider a shorter alternative.
Context: ...or Your distributors under this License prior to termination shall survive termination. ...
(EN_WORDINESS_PREMIUM_PRIOR_TO)
[typographical] ~268-~268: Consider using typographic quotation marks here.
Context: ...re is provided under this License on an "as is" * * basis, without warranty of a...
(EN_QUOTES)
[uncategorized] ~272-~272: “to the” seems less likely than “to”.
Context: ...e or non-infringing. The entire risk as to the * * quality and performance of the...
(AI_HYDRA_LEO_CP_TO_THE_TO)
[style] ~318-~318: This phrase is redundant. Consider using “subject” to avoid wordiness.
Context: ...s the complete agreement concerning the subject matter hereof. If any provision of this Licens...
(SUBJECT_MATTER)
[style] ~331-~331: Consider using a more formal/concise alternative here.
Context: ...ept as provided in Section 10.3, no one other than the license steward has the right to mo...
(OTHER_THAN)
[style] ~331-~331: To elevate your writing, try using more concise and formal language here.
Context: ..., no one other than the license steward has the right to modify or publish new versions of th...
(RIGHT_TO_ENTITLED)
[uncategorized] ~353-~353: Possible missing preposition found.
Context: ...If You choose to distribute Source Code Form that is Incompatible With Secondary Lic...
(AI_HYDRA_LEO_MISSING_IN)
[typographical] ~357-~357: To join two clauses or introduce examples, consider using an em dash.
Context: ...his License must be attached. Exhibit A - Source Code Form License Notice --------...
(DASH_RULE)
[typographical] ~371-~371: To join two clauses or introduce examples, consider using an em dash.
Context: ...tices of copyright ownership. Exhibit B - "Incompatible With Secondary Licenses" N...
(DASH_RULE)
[typographical] ~371-~371: Consider using a typographic opening quote here.
Context: ...es of copyright ownership. Exhibit B - "Incompatible With Secondary Licenses" No...
(EN_QUOTES)
[typographical] ~371-~371: Consider using a typographic close quote here.
Context: ... - "Incompatible With Secondary Licenses" Notice --------------------------------...
(EN_QUOTES)
[typographical] ~374-~374: Consider using a typographic opening quote here.
Context: ...----------- This Source Code Form is "Incompatible With Secondary Licenses", a...
(EN_QUOTES)
[typographical] ~374-~374: Consider using a typographic close quote here.
Context: ...is "Incompatible With Secondary Licenses", as defined by the Mozilla Public Lic...
(EN_QUOTES)
tests/fixtures/components/terraform/myapp/cache.nonprod.txt
[uncategorized] ~4-~4: A punctuation mark might be missing here.
Context: ... Overcast �[38;5;240;1m .--. �[0m �[38;5;050m0�[0m(�[38;...
(AI_EN_LECTOR_MISSING_PUNCTUATION)
tests/fixtures/scenarios/hooks-test/components/terraform/hook-and-store/.terraform/providers/registry.terraform.io/hashicorp/null/3.2.3/darwin_arm64/LICENSE.txt
[typographical] ~9-~9: Consider using typographic quotation marks here.
Context: ...== 1. Definitions -------------- 1.1. "Contributor" means each individual or legal enti...
(EN_QUOTES)
[typographical] ~13-~13: Consider using typographic quotation marks here.
Context: ...ion of, or owns Covered Software. 1.2. "Contributor Version" means the combination of the Contri...
(EN_QUOTES)
[typographical] ~17-~17: Consider using typographic quotation marks here.
Context: ...cular Contributor's Contribution. 1.3. "Contribution" means Covered Software of a particu...
(EN_QUOTES)
[typographical] ~20-~20: Consider using typographic quotation marks here.
Context: ...ware of a particular Contributor. 1.4. "Covered Software" means Source Code Form to which the...
(EN_QUOTES)
[typographical] ~26-~26: Consider using a typographic opening quote here.
Context: ...e including portions thereof. 1.5. "Incompatible With Secondary Licenses" ...
(EN_QUOTES)
[typographical] ~26-~26: Consider using a typographic close quote here.
Context: ...5. "Incompatible With Secondary Licenses" means (a) that the initial Con...
(EN_QUOTES)
[typographical] ~36-~36: Consider using typographic quotation marks here.
Context: ... terms of a Secondary License. 1.6. "Executable Form" means any form of the work other th...
(EN_QUOTES)
[style] ~37-~37: Consider using a more formal/concise alternative here.
Context: ...le Form" means any form of the work other than Source Code Form. 1.7. "Larger Work" ...
(OTHER_THAN)
[typographical] ~39-~39: Consider using typographic quotation marks here.
Context: ...work other than Source Code Form. 1.7. "Larger Work" means a work that combines Covered ...
(EN_QUOTES)
[typographical] ~43-~43: Consider using typographic quotation marks here.
Context: ...es, that is not Covered Software. 1.8. "License" means this document. 1.9. "Licensa...
(EN_QUOTES)
[typographical] ~46-~46: Consider using typographic quotation marks here.
Context: ...License" means this document. 1.9. "Licensable" means having the right to grant, to...
(EN_QUOTES)
[style] ~48-~48: ‘any and all’ might be wordy. Consider a shorter alternative.
Context: ...e of the initial grant or subsequently, any and all of the rights conveyed by this License....
(EN_WORDINESS_PREMIUM_ANY_AND_ALL)
[typographical] ~51-~51: Consider using typographic quotation marks here.
Context: ...rights conveyed by this License. 1.10. "Modifications" means any of the following: (a...
(EN_QUOTES)
[typographical] ~61-~61: Consider using typographic quotation marks here.
Context: ...ns any Covered Software. 1.11. "Patent Claims" of a Contributor means any patent c...
(EN_QUOTES)
[typographical] ~69-~69: Consider using typographic quotation marks here.
Context: ... or its Contributor Version. 1.12. "Secondary License" means either the GNU General Public...
(EN_QUOTES)
[typographical] ~75-~75: Consider using a typographic opening quote here.
Context: ... versions of those licenses. 1.13. "Source Code Form" means the form of ...
(EN_QUOTES)
[typographical] ~75-~75: Consider using a typographic close quote here.
Context: ...e licenses. 1.13. "Source Code Form" means the form of the work preferre...
(EN_QUOTES)
[typographical] ~78-~78: Consider using typographic quotation marks here.
Context: ...ferred for making modifications. 1.14. "You" (or "Your") means an individual or ...
(EN_QUOTES)
[typographical] ~78-~78: Consider using typographic quotation marks here.
Context: ... making modifications. 1.14. "You" (or "Your") means an individual or a legal ent...
(EN_QUOTES)
[typographical] ~80-~80: Consider using typographic quotation marks here.
Context: ...r this License. For legal entities, "You" includes any entity that controls, ...
(EN_QUOTES)
[typographical] ~82-~82: Consider using typographic quotation marks here.
Context: ...u. For purposes of this definition, "control" means (a) the power, direct or indi...
(EN_QUOTES)
[style] ~108-~108: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...te The licenses granted in Section 2.1 with respect to any Contribution become effective for e...
(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
[grammar] ~109-~109: The usual preposition for “contribution” is “to”. Did you mean “Contribution to”?
Context: ... Contribution become effective for each Contribution on the date the Contributor first distribu...
(ON_THE_NOVEL)
[style] ~210-~210: The serial comma (Oxford comma, Harvard comma) is missing.
Context: ...to charge a fee for, warranty, support, indemnity or liability obligations to one or more re...
(SERIAL_COMMA_ON)
[style] ~212-~212: Only include ‘own’ if you want to emphasize that something belongs to a person or thing or was done by a person or thing.
Context: ...oftware. However, You may do so only on Your own behalf, and not on behalf of any Contri...
(PRP_OWN)
[style] ~213-~213: As an alternative to the over-used intensifier ‘absolutely’, consider replacing this phrase.
Context: ...lf of any Contributor. You must make it absolutely clear that any such warranty, support, indemn...
(EN_WEAK_ADJECTIVE)
[style] ~216-~216: The serial comma (Oxford comma, Harvard comma)
A377
is missing.
Context: ...butor as a result of warranty, support, indemnity or liability terms You offer. You may incl...
(SERIAL_COMMA_ON)
[style] ~225-~225: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...y with any of the terms of this License with respect to some or all of the Covered Software due...
(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
[typographical] ~227-~227: Conjunctions like ‘and’ should not follow semicolons. Consider using a comma, or removing the conjunction.
Context: ...s License to the maximum extent possible; and (b) describe the limitations and the code...
(CONJUNCTION_AFTER_SEMICOLON)
[style] ~243-~243: ‘prior to’ might be wordy. Consider a shorter alternative.
Context: ...non-compliance by some reasonable means prior to 60 days after You have come back into c...
(EN_WORDINESS_PREMIUM_PRIOR_TO)
[style] ~248-~248: ‘prior to’ might be wordy. Consider a shorter alternative.
Context: ...h Contributor, and You become compliant prior to 30 days after Your receipt of the notic...
(EN_WORDINESS_PREMIUM_PRIOR_TO)
[style] ~255-~255: ‘any and all’ might be wordy. Consider a shorter alternative.
Context: ...tent, then the rights granted to You by any and all Contributors for the Covered Software u...
(EN_WORDINESS_PREMIUM_ANY_AND_ALL)
[style] ~260-~260: ‘prior to’ might be wordy. Consider a shorter alternative.
Context: ...or Your distributors under this License prior to termination shall survive termination. ...
(EN_WORDINESS_PREMIUM_PRIOR_TO)
[typographical] ~268-~268: Consider using typographic quotation marks here.
Context: ...re is provided under this License on an "as is" * * basis, without warranty of a...
(EN_QUOTES)
[style] ~318-~318: This phrase is redundant. Consider using “subject” to avoid wordiness.
Context: ...s the complete agreement concerning the subject matter hereof. If any provision of this Licens...
(SUBJECT_MATTER)
[style] ~331-~331: Consider using a more formal/concise alternative here.
Context: ...ept as provided in Section 10.3, no one other than the license steward has the right to mo...
(OTHER_THAN)
[style] ~331-~331: To elevate your writing, try using more concise and formal language here.
Context: ..., no one other than the license steward has the right to modify or publish new versions of th...
(RIGHT_TO_ENTITLED)
[typographical] ~357-~357: To join two clauses or introduce examples, consider using an em dash.
Context: ...his License must be attached. Exhibit A - Source Code Form License Notice --------...
(DASH_RULE)
[typographical] ~371-~371: To join two clauses or introduce examples, consider using an em dash.
Context: ...tices of copyright ownership. Exhibit B - "Incompatible With Secondary Licenses" N...
(DASH_RULE)
[typographical] ~371-~371: Consider using a typographic opening quote here.
Context: ...es of copyright ownership. Exhibit B - "Incompatible With Secondary Licenses" No...
(EN_QUOTES)
[typographical] ~371-~371: Consider using a typographic close quote here.
Context: ... - "Incompatible With Secondary Licenses" Notice --------------------------------...
(EN_QUOTES)
[typographical] ~374-~374: Consider using a typographic opening quote here.
Context: ...----------- This Source Code Form is "Incompatible With Secondary Licenses", a...
(EN_QUOTES)
[typographical] ~374-~374: Consider using a typographic close quote here.
Context: ...is "Incompatible With Secondary Licenses", as defined by the Mozilla Public Lic...
(EN_QUOTES)
tests/fixtures/scenarios/vendor/components/terraform/github/stargazers/main/README.md
[uncategorized] ~9-~9: Loose punctuation mark.
Context: ...y. ## Usage ### Inputs - repository
: The GitHub repository in the format 'ow...
(UNLIKELY_OPENING_PUNCTUATION)
[uncategorized] ~13-~13: Loose punctuation mark.
Context: ...epo'. ### Outputs - stargazers_count
: The number of stargazers for the specif...
(UNLIKELY_OPENING_PUNCTUATION)
tests/fixtures/scenarios/vendor/components/terraform/weather/main/README.md
[typographical] ~3-~3: Consider using typographic quotation marks here.
Context: ...aform Weather Component This Terraform "root" module fetches weather information for ...
(EN_QUOTES)
[uncategorized] ~34-~34: Loose punctuation mark.
Context: ... where it will be deployed. - location
: Location for which the weather is repor...
(UNLIKELY_OPENING_PUNCTUATION)
[typographical] ~34-~34: Consider using typographic quotation marks here.
Context: ...ich the weather is reported. Default is "Los Angeles". - options
: Options to customize the ...
(EN_QUOTES)
[uncategorized] ~35-~35: Loose punctuation mark.
Context: ...d. Default is "Los Angeles". - options
: Options to customize the output. Defaul...
(UNLIKELY_OPENING_PUNCTUATION)
[typographical] ~35-~35: Consider using a typographic opening quote here.
Context: ...ons to customize the output. Default is "0T". - format
: Specifies the output fo...
(EN_QUOTES)
[typographical] ~35-~35: Consider using a typographic close quote here.
Context: ... to customize the output. Default is "0T". - format
: Specifies the output forma...
(EN_QUOTES)
[uncategorized] ~36-~36: Loose punctuation mark.
Context: ... the output. Default is "0T". - format
: Specifies the output format. Default is...
(UNLIKELY_OPENING_PUNCTUATION)
[typographical] ~36-~36: Consider using a typographic opening quote here.
Context: ...Specifies the output format. Default is "v2". - lang
: Language in which the wea...
(EN_QUOTES)
[typographical] ~36-~36: Consider using a typographic close quote here.
Context: ...cifies the output format. Default is "v2". - lang
: Language in which the weathe...
(EN_QUOTES)
[uncategorized] ~37-~37: Loose punctuation mark.
Context: ...output format. Default is "v2". - lang
: Language in which the weather will be d...
(UNLIKELY_OPENING_PUNCTUATION)
[typographical] ~37-~37: Consider using typographic quotation marks here.
Context: ...e weather will be displayed. Default is "en". - units
: Units in which the weather ...
(EN_QUOTES)
[uncategorized] ~38-~38: Loose punctuation mark.
Context: ...be displayed. Default is "en". - units
: Units in which the weather will be disp...
(UNLIKELY_OPENING_PUNCTUATION)
[typographical] ~38-~38: Consider using typographic quotation marks here.
Context: ...e weather will be displayed. Default is "m". ### Outputs - weather
: The fetched ...
(EN_QUOTES)
[uncategorized] ~42-~42: Loose punctuation mark.
Context: ...ther: The fetched weather data. -
url: Requested URL. -
stage`: Stage of depl...
(UNLIKELY_OPENING_PUNCTUATION)
[uncategorized] ~43-~43: Loose punctuation mark.
Context: ... data. - url
: Requested URL. - stage
: Stage of deployment. - location
: Loca...
(UNLIKELY_OPENING_PUNCTUATION)
[uncategorized] ~44-~44: Loose punctuation mark.
Context: ...tage: Stage of deployment. -
location: Location of the reported weather. -
la...
(UNLIKELY_OPENING_PUNCTUATION)
[uncategorized] ~45-~45: Loose punctuation mark.
Context: ...cation of the reported weather. - lang
: Language used for weather data. - `unit...
(UNLIKELY_OPENING_PUNCTUATION)
[uncategorized] ~46-~46: Loose punctuation mark.
Context: ...anguage used for weather data. - units
: Units of measurement for the weather da...
(UNLIKELY_OPENING_PUNCTUATION)
🪛 markdownlint-cli2 (0.17.2)
tests/fixtures/README.md
7-7: Fenced code blocks should have a language specified
null
(MD040, fenced-code-language)
tests/fixtures/scenarios/vendor/components/terraform/infra/my-vpc1/README.md
171-171: Images should have alternate text (alt text)
null
(MD045, no-alt-text)
⏰ Context from checks skipped due to timeout of 90000ms (2)
- GitHub Check: Build (windows-latest, windows)
- GitHub Check: Summary
🔇 Additional comments (116)
tests/fixtures/scenarios/mock-terraform/components/terraform/mock/versions.tf (1)
1-11
: Terraform Provider Block Configured Correctly!
The new configuration block provides a clear declaration of the required provider "local" from "hashicorp/local" with a version constraint of ">= 2.0". The syntax is clean and well-structured, adhering to standard Terraform practices. Great job keeping it straightforward and consistent!tests/fixtures/scenarios/vendor/components/terraform/infra/my-vpc1/versions.tf (1)
1-10
: Terraform Version and Providers Block is Spot-On!This new file sets clear constraints for both Terraform (>= 1.0.0) and the AWS provider (>= 4.9.0). The configuration is simple, correct, and aligns well with best practices—ensuring a reliable and compatible environment.
tests/cli_terraform_test.go (4)
36-36
: LGTM! Working directory path updated to use mock fixtures.The change from
../examples/quick-start-simple
tofixtures/scenarios/mock-terraform
aligns with best practices by using dedicated test fixtures.
47-49
: LGTM! Environment initialization flow improved.Good addition of explicit terraform initialization for both environments before running tests. This ensures a clean and consistent test environment.
54-55
: LGTM! State file paths updated consistently.The state file paths have been updated consistently throughout the test to use the new mock component structure.
Also applies to: 59-60, 68-69
82-82
: LGTM! Component name updated in commands.The component name has been consistently updated from "station" to "mock" in all relevant commands.
Also applies to: 140-140
tests/fixtures/scenarios/hooks-test/components/terraform/hook-and-store/.terraform/providers/registry.terraform.io/hashicorp/null/3.2.3/darwin_arm64/LICENSE.txt (3)
1-8
: License Header and Title Verification
The header correctly includes the copyright notice and clearly states the "Mozilla Public License Version 2.0". This introduction is vital for legal compliance, so please ensure that these lines remain unchanged.
9-60
: Definitions Section Review
The definitions provided (e.g., "Contributor", "Contribution", "Covered Software", etc.) match the standard MPL v2.0 text. Although static analysis hints suggest typographical improvements (such as using typographic quotation marks), it’s essential for legal documents to maintain the original verbiage. Therefore, we should leave this as is.🧰 Tools
🪛 LanguageTool
[typographical] ~9-~9: Consider using typographic quotation marks here.
Context: ...== 1. Definitions -------------- 1.1. "Contributor" means each individual or legal enti...(EN_QUOTES)
[typographical] ~13-~13: Consider using typographic quotation marks here.
Context: ...ion of, or owns Covered Software. 1.2. "Contributor Version" means the combination of the Contri...(EN_QUOTES)
[typographical] ~17-~17: Consider using typographic quotation marks here.
Context: ...cular Contributor's Contribution. 1.3. "Contribution" means Covered Software of a particu...(EN_QUOTES)
[typographical] ~20-~20: Consider using typographic quotation marks here.
Context: ...ware of a particular Contributor. 1.4. "Covered Software" means Source Code Form to which the...(EN_QUOTES)
[typographical] ~26-~26: Consider using a typographic opening quote here.
Context: ...e including portions thereof. 1.5. "Incompatible With Secondary Licenses" ...(EN_QUOTES)
[typographical] ~26-~26: Consider using a typographic close quote here.
Context: ...5. "Incompatible With Secondary Licenses" means (a) that the initial Con...(EN_QUOTES)
[typographical] ~36-~36: Consider using typographic quotation marks here.
Context: ... terms of a Secondary License. 1.6. "Executable Form" means any form of the work other th...(EN_QUOTES)
[style] ~37-~37: Consider using a more formal/concise alternative here.
Context: ...le Form" means any form of the work other than Source Code Form. 1.7. "Larger Work" ...(OTHER_THAN)
[typographical] ~39-~39: Consider using typographic quotation marks here.
Context: ...work other than Source Code Form. 1.7. "Larger Work" means a work that combines Covered ...(EN_QUOTES)
[typographical] ~43-~43: Consider using typographic quotation marks here.
Context: ...es, that is not Covered Software. 1.8. "License" means this document. 1.9. "Licensa...(EN_QUOTES)
[typographical] ~46-~46: Consider using typographic quotation marks here.
Context: ...License" means this document. 1.9. "Licensable" means having the right to grant, to...(EN_QUOTES)
[style] ~48-~48: ‘any and all’ might be wordy. Consider a shorter alternative.
Context: ...e of the initial grant or subsequently, any and all of the rights conveyed by this License....(EN_WORDINESS_PREMIUM_ANY_AND_ALL)
[typographical] ~51-~51: Consider using typographic quotation marks here.
Context: ...rights conveyed by this License. 1.10. "Modifications" means any of the following: (a...(EN_QUOTES)
61-376
: Comprehensive License Text Evaluation
The remainder of the document—including the license grants, limitations, conditions, and disclaimers—is a complete and faithful reproduction of the MPL v2.0. The clarity and structure meet legal distribution requirements. While several static analysis suggestions recommend minor style or typographical tweaks, modifying these could alter the legal accuracy of the license text. It’s best to preserve the text verbatim.🧰 Tools
🪛 LanguageTool
[typographical] ~61-~61: Consider using typographic quotation marks here.
Context: ...ns any Covered Software. 1.11. "Patent Claims" of a Contributor means any patent c...(EN_QUOTES)
[typographical] ~69-~69: Consider using typographic quotation marks here.
Context: ... or its Contributor Version. 1.12. "Secondary License" means either the GNU General Public...(EN_QUOTES)
[typographical] ~75-~75: Consider using a typographic opening quote here.
Context: ... versions of those licenses. 1.13. "Source Code Form" means the form of ...(EN_QUOTES)
[typographical] ~75-~75: Consider using a typographic close quote here.
Context: ...e licenses. 1.13. "Source Code Form" means the form of the work preferre...(EN_QUOTES)
[typographical] ~78-~78: Consider using typographic quotation marks here.
Context: ...ferred for making modifications. 1.14. "You" (or "Your") means an individual or ...(EN_QUOTES)
[typographical] ~78-~78: Consider using typographic quotation marks here.
Context: ... making modifications. 1.14. "You" (or "Your") means an individual or a legal ent...(EN_QUOTES)
[typographical] ~80-~80: Consider using typographic quotation marks here.
Context: ...r this License. For legal entities, "You" includes any entity that controls, ...(EN_QUOTES)
[typographical] ~82-~82: Consider using typographic quotation marks here.
Context: ...u. For purposes of this definition, "control" means (a) the power, direct or indi...(EN_QUOTES)
[style] ~108-~108: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...te The licenses granted in Section 2.1 with respect to any Contribution become effective for e...(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
[grammar] ~109-~109: The usual preposition for “contribution” is “to”. Did you mean “Contribution to”?
Context: ... Contribution become effective for each Contribution on the date the Contributor first distribu...(ON_THE_NOVEL)
[style] ~210-~210: The serial comma (Oxford comma, Harvard comma) is missing.
Context: ...to charge a fee for, warranty, support, indemnity or liability obligations to one or more re...(SERIAL_COMMA_ON)
[style] ~212-~212: Only include ‘own’ if you want to emphasize that something belongs to a person or thing or was done by a person or thing.
Context: ...oftware. However, You may do so only on Your own behalf, and not on behalf of any Contri...(PRP_OWN)
[style] ~213-~213: As an alternative to the over-used intensifier ‘absolutely’, consider replacing this phrase.
Context: ...lf of any Contributor. You must make it absolutely clear that any such warranty, support, indemn...(EN_WEAK_ADJECTIVE)
[style] ~216-~216: The serial comma (Oxford comma, Harvard comma) is missing.
Context: ...butor as a result of warranty, support, indemnity or liability terms You offer. You may incl...(SERIAL_COMMA_ON)
[style] ~225-~225: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...y with any of the terms of this License with respect to some or all of the Covered Software due...(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
[typographical] ~227-~227: Conjunctions like ‘and’ should not follow semicolons. Consider using a comma, or removing the conjunction.
Context: ...s License to the maximum extent possible; and (b) describe the limitations and the code...(CONJUNCTION_AFTER_SEMICOLON)
[style] ~243-~243: ‘prior to’ might be wordy. Consider a shorter alternative.
Context: ...non-compliance by some reasonable means prior to 60 days after You have come back into c...(EN_WORDINESS_PREMIUM_PRIOR_TO)
[style] ~248-~248: ‘prior to’ might be wordy. Consider a shorter alternative.
Context: ...h Contributor, and You become compliant prior to 30 days after Your receipt of the notic...(EN_WORDINESS_PREMIUM_PRIOR_TO)
[style] ~255-~255: ‘any and all’ might be wordy. Consider a shorter alternative.
Context: ...tent, then the rights granted to You by any and all Contributors for the Covered Software u...(EN_WORDINESS_PREMIUM_ANY_AND_ALL)
[style] ~260-~260: ‘prior to’ might be wordy. Consider a shorter alternative.
Context: ...or Your distributors under this License prior to termination shall survive termination. ...(EN_WORDINESS_PREMIUM_PRIOR_TO)
[typographical] ~268-~268: Consider using typographic quotation marks here.
Context: ...re is provided under this License on an "as is" * * basis, without warranty of a...(EN_QUOTES)
[style] ~318-~318: This phrase is redundant. Consider using “subject” to avoid wordiness.
Context: ...s the complete agreement concerning the subject matter hereof. If any provision of this Licens...(SUBJECT_MATTER)
[style] ~331-~331: Consider using a more formal/concise alternative here.
Context: ...ept as provided in Section 10.3, no one other than the license steward has the right to mo...(OTHER_THAN)
[style] ~331-~331: To elevate your writing, try using more concise and formal language here.
Context: ..., no one other than the license steward has the right to modify or publish new versions of th...(RIGHT_TO_ENTITLED)
[typographical] ~357-~357: To join two clauses or introduce examples, consider using an em dash.
Context: ...his License must be attached. Exhibit A - Source Code Form License Notice --------...(DASH_RULE)
[typographical] ~371-~371: To join two clauses or introduce examples, consider using an em dash.
Context: ...tices of copyright ownership. Exhibit B - "Incompatible With Secondary Licenses" N...(DASH_RULE)
[typographical] ~371-~371: Consider using a typographic opening quote here.
Context: ...es of copyright ownership. Exhibit B - "Incompatible With Secondary Licenses" No...(EN_QUOTES)
[typographical] ~371-~371: Consider using a typographic close quote here.
Context: ... - "Incompatible With Secondary Licenses" Notice --------------------------------...(EN_QUOTES)
[typographical] ~374-~374: Consider using a typographic opening quote here.
Context: ...----------- This Source Code Form is "Incompatible With Secondary Licenses", a...(EN_QUOTES)
[typographical] ~374-~374: Consider using a typographic close quote here.
Context: ...is "Incompatible With Secondary Licenses", as defined by the Mozilla Public Lic...(EN_QUOTES)
tests/fixtures/scenarios/vendor/components/terraform/test-components/main/variables.tf (1)
1-5
: New Variable Addition: ip_address is clear and concise.
The variable is well-defined as a string with an empty string default and a clear description indicating that it’s optional. Overall, this addition aligns with Terraform best practices.tests/fixtures/scenarios/vendor/components/terraform/test-components/main/outputs.tf (1)
1-4
: Output Declaration: metadata is implemented correctly.
The output neatly decodes the JSON response from the HTTP data source, providing a clear description. Everything looks in order here.tests/fixtures/scenarios/vendor/components/terraform/test-components/main/main.tf (1)
1-7
: HTTP Data Block: URL Construction is Spot-On.
The data block uses a neat conditional expression to construct the URL based on whether an IP address is provided. The header specification is also clear and ensures the API request returns JSON.tests/fixtures/atmos.yaml (4)
1-2
: Base Path Configuration VerifiedThe base_path is clearly defined as "./" which sets the current directory appropriately.
3-17
: Components Section is Well-StructuredThe components configuration is clear and detailed. The nested terraform block with vendor settings and command options is logically organized and sufficiently documented with inline comments.
18-26
: Stacks Configuration is ClearThe stacks section defines base_path, inclusion/exclusion patterns, and naming conventions effectively. This clear configuration should support proper stack management.
27-30
: Terraform Section Configuration Looks CorrectThe terraform section with the version constraint and download URL is well set up to ensure the correct Terraform version is used.
tests/fixtures/scenarios/vendor/components/terraform/github/stargazers/main/main.tf (1)
1-3
: Clear and Correct Data Source Configuration
The data block for the "github_repository" resource is concise and correctly references the variable "repository." Ensure that the "repository" variable is defined (as done in variables.tf) and that any runtime validations (if needed) occur upstream.tests/fixtures/scenarios/vendor/components/terraform/github/stargazers/main/variables.tf (1)
1-4
: Well-Defined Repository Variable
The "repository" variable is clearly defined with an explanatory description and the correct type (string). This setup ensures that the data source receives the expected input format.tests/fixtures/scenarios/vendor/components/terraform/github/stargazers/main/outputs.tf (1)
1-4
: Accurate Output Declaration
The output "stargazers_count" is correctly mapping the value from the data source. This configuration cleanly exposes the number of stargazers as intended by the module.tests/fixtures/components/terraform/mock/.terraform/providers/registry.terraform.io/hashicorp/local/2.5.2/darwin_arm64/LICENSE.txt (4)
1-5
: License Header and Identification
The file begins with the HashiCorp copyright notice and clearly identifies the Mozilla Public License Version 2.0. Since this is an official legal document, its formatting must remain unchanged.
6-371
: Inclusion of the Full MPL 2.0 License Text
The entire MPL 2.0 license text is included as required. While static analysis recommendations suggest typographical changes (such as using typographic quotation marks, opening/closing quotes, and adjustments in punctuation), such modifications can alter the legally binding wording. It is best to preserve the text exactly as provided by the official MPL 2.0 to ensure legal integrity.🧰 Tools
🪛 LanguageTool
[typographical] ~9-~9: Consider using typographic quotation marks here.
Context: ...== 1. Definitions -------------- 1.1. "Contributor" means each individual or legal enti...(EN_QUOTES)
[typographical] ~13-~13: Consider using typographic quotation marks here.
Context: ...ion of, or owns Covered Software. 1.2. "Contributor Version" means the combination of the Contri...(EN_QUOTES)
[typographical] ~17-~17: Consider using typographic quotation marks here.
Context: ...cular Contributor's Contribution. 1.3. "Contribution" means Covered Software of a particu...(EN_QUOTES)
[typographical] ~20-~20: Consider using typographic quotation marks here.
Context: ...ware of a particular Contributor. 1.4. "Covered Software" means Source Code Form to which the...(EN_QUOTES)
[typographical] ~26-~26: Consider using a typographic opening quote here.
Context: ...e including portions thereof. 1.5. "Incompatible With Secondary Licenses" ...(EN_QUOTES)
[typographical] ~26-~26: Consider using a typographic close quote here.
Context: ...5. "Incompatible With Secondary Licenses" means (a) that the initial Con...(EN_QUOTES)
[typographical] ~36-~36: Consider using typographic quotation marks here.
Context: ... terms of a Secondary License. 1.6. "Executable Form" means any form of the work other th...(EN_QUOTES)
[style] ~37-~37: Consider using a more formal/concise alternative here.
Context: ...le Form" means any form of the work other than Source Code Form. 1.7. "Larger Work" ...(OTHER_THAN)
[typographical] ~39-~39: Consider using typographic quotation marks here.
Context: ...work other than Source Code Form. 1.7. "Larger Work" means a work that combines Covered ...(EN_QUOTES)
[typographical] ~43-~43: Consider using typographic quotation marks here.
Context: ...es, that is not Covered Software. 1.8. "License" means this document. 1.9. "Licensa...(EN_QUOTES)
[typographical] ~46-~46: Consider using typographic quotation marks here.
Context: ...License" means this document. 1.9. "Licensable" means having the right to grant, to...(EN_QUOTES)
[style] ~48-~48: ‘any and all’ might be wordy. Consider a shorter alternative.
Context: ...e of the initial grant or subsequently, any and all of the rights conveyed by this License....(EN_WORDINESS_PREMIUM_ANY_AND_ALL)
[typographical] ~51-~51: Consider using typographic quotation marks here.
Context: ...rights conveyed by this License. 1.10. "Modifications" means any of the following: (a...(EN_QUOTES)
[typographical] ~61-~61: Consider using typographic quotation marks here.
Context: ...ns any Covered Software. 1.11. "Patent Claims" of a Contributor means any patent c...(EN_QUOTES)
[typographical] ~69-~69: Consider using typographic quotation marks here.
Context: ... or its Contributor Version. 1.12. "Secondary License" means either the GNU General Public...(EN_QUOTES)
[typographical] ~75-~75: Consider using a typographic opening quote here.
Context: ... versions of those licenses. 1.13. "Source Code Form" means the form of ...(EN_QUOTES)
[typographical] ~75-~75: Consider using a typographic close quote here.
Context: ...e licenses. 1.13. "Source Code Form" means the form of the work preferre...(EN_QUOTES)
[typographical] ~78-~78: Consider using typographic quotation marks here.
Context: ...ferred for making modifications. 1.14. "You" (or "Your") means an individual or ...(EN_QUOTES)
[typographical] ~78-~78: Consider using typographic quotation marks here.
Context: ... making modifications. 1.14. "You" (or "Your") means an individual or a legal ent...(EN_QUOTES)
[typographical] ~80-~80: Consider using typographic quotation marks here.
Context: ...r this License. For legal entities, "You" includes any entity that controls, ...(EN_QUOTES)
[typographical] ~82-~82: Consider using typographic quotation marks here.
Context: ...u. For purposes of this definition, "control" means (a) the power, direct or indi...(EN_QUOTES)
[style] ~108-~108: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...te The licenses granted in Section 2.1 with respect to any Contribution become effective for e...(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
[grammar] ~109-~109: The usual preposition for “contribution” is “to”. Did you mean “Contribution to”?
Context: ... Contribution become effective for each Contribution on the date the Contributor first distribu...(ON_THE_NOVEL)
[uncategorized] ~174-~174: Possible missing comma found.
Context: ...stribute Covered Software in Executable Form then: (a) such Covered Software must a...(AI_HYDRA_LEO_MISSING_COMMA)
[style] ~210-~210: The serial comma (Oxford comma, Harvard comma) is missing.
Context: ...to charge a fee for, warranty, support, indemnity or liability obligations to one or more re...(SERIAL_COMMA_ON)
[style] ~212-~212: Only include ‘own’ if you want to emphasize that something belongs to a person or thing or was done by a person or thing.
Context: ...oftware. However, You may do so only on Your own behalf, and not on behalf of any Contri...(PRP_OWN)
[style] ~213-~213: As an alternative to the over-used intensifier ‘absolutely’, consider replacing this phrase.
Context: ...lf of any Contributor. You must make it absolutely clear that any such warranty, support, indemn...(EN_WEAK_ADJECTIVE)
[style] ~216-~216: The serial comma (Oxford comma, Harvard comma) is missing.
Context: ...butor as a result of warranty, support, indemnity or liability terms You offer. You may incl...(SERIAL_COMMA_ON)
[style] ~225-~225: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...y with any of the terms of this License with respect to some or all of the Covered Software due...(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
[typographical] ~227-~227: Conjunctions like ‘and’ should not follow semicolons. Consider using a comma, or removing the conjunction.
Context: ...s License to the maximum extent possible; and (b) describe the limitations and the code...(CONJUNCTION_AFTER_SEMICOLON)
[style] ~243-~243: ‘prior to’ might be wordy. Consider a shorter alternative.
Context: ...non-compliance by some reasonable means prior to 60 days after You have come back into c...(EN_WORDINESS_PREMIUM_PRIOR_TO)
[style] ~248-~248: ‘prior to’ might be wordy. Consider a shorter alternative.
Context: ...h Contributor, and You become compliant prior to 30 days after Your receipt of the notic...(EN_WORDINESS_PREMIUM_PRIOR_TO)
[style] ~255-~255: ‘any and all’ might be wordy. Consider a shorter alternative.
Context: ...tent, then the rights granted to You by any and all Contributors for the Covered Software u...(EN_WORDINESS_PREMIUM_ANY_AND_ALL)
[style] ~260-~260: ‘prior to’ might be wordy. Consider a shorter alternative.
Context: ...or Your distributors under this License prior to termination shall survive termination. ...(EN_WORDINESS_PREMIUM_PRIOR_TO)
[typographical] ~268-~268: Consider using typographic quotation marks here.
Context: ...re is provided under this License on an "as is" * * basis, without warranty of a...(EN_QUOTES)
[uncategorized] ~272-~272: “to the” seems less likely than “to”.
Context: ...e or non-infringing. The entire risk as to the * * quality and performance of the...(AI_HYDRA_LEO_CP_TO_THE_TO)
[style] ~318-~318: This phrase is redundant. Consider using “subject” to avoid wordiness.
Context: ...s the complete agreement concerning the subject matter hereof. If any provision of this Licens...(SUBJECT_MATTER)
[style] ~331-~331: Consider using a more formal/concise alternative here.
Context: ...ept as provided in Section 10.3, no one other than the license steward has the right to mo...(OTHER_THAN)
[style] ~331-~331: To elevate your writing, try using more concise and formal language here.
Context: ..., no one other than the license steward has the right to modify or publish new versions of th...(RIGHT_TO_ENTITLED)
[uncategorized] ~353-~353: Possible missing preposition found.
Context: ...If You choose to distribute Source Code Form that is Incompatible With Secondary Lic...(AI_HYDRA_LEO_MISSING_IN)
[typographical] ~357-~357: To join two clauses or introduce examples, consider using an em dash.
Context: ...his License must be attached. Exhibit A - Source Code Form License Notice --------...(DASH_RULE)
[typographical] ~371-~371: To join two clauses or introduce examples, consider using an em dash.
Context: ...tices of copyright ownership. Exhibit B - "Incompatible With Secondary Licenses" N...(DASH_RULE)
[typographical] ~371-~371: Consider using a typographic opening quote here.
Context: ...es of copyright ownership. Exhibit B - "Incompatible With Secondary Licenses" No...(EN_QUOTES)
[typographical] ~371-~371: Consider using a typographic close quote here.
Context: ... - "Incompatible With Secondary Licenses" Notice --------------------------------...(EN_QUOTES)
372-376
: Exhibit Sections Verification
Both Exhibit A (Source Code Form License Notice) and Exhibit B (“Incompatible With Secondary Licenses” Notice) are correctly included. As with the rest of the document, any stylistic suggestions from static analysis should be disregarded to maintain the official, precise language of the license.🧰 Tools
🪛 LanguageTool
[typographical] ~374-~374: 6851 Consider using a typographic opening quote here.
Context: ...----------- This Source Code Form is "Incompatible With Secondary Licenses", a...(EN_QUOTES)
[typographical] ~374-~374: Consider using a typographic close quote here.
Context: ...is "Incompatible With Secondary Licenses", as defined by the Mozilla Public Lic...(EN_QUOTES)
1-376
: Overall File Integrity and Compliance
This new file properly adds the full text of the MPL 2.0 license. The content is comprehensive and mirrors the official version. Any changes suggested by static analysis regarding punctuation or typographical styles are unnecessary here, as even minor changes could unintentionally alter a legally binding document.🧰 Tools
🪛 LanguageTool
[typographical] ~9-~9: Consider using typographic quotation marks here.
Context: ...== 1. Definitions -------------- 1.1. "Contributor" means each individual or legal enti...(EN_QUOTES)
[typographical] ~13-~13: Consider using typographic quotation marks here.
Context: ...ion of, or owns Covered Software. 1.2. "Contributor Version" means the combination of the Contri...(EN_QUOTES)
[typographical] ~17-~17: Consider using typographic quotation marks here.
Context: ...cular Contributor's Contribution. 1.3. "Contribution" means Covered Software of a particu...(EN_QUOTES)
[typographical] ~20-~20: Consider using typographic quotation marks here.
Context: ...ware of a particular Contributor. 1.4. "Covered Software" means Source Code Form to which the...(EN_QUOTES)
[typographical] ~26-~26: Consider using a typographic opening quote here.
Context: ...e including portions thereof. 1.5. "Incompatible With Secondary Licenses" ...(EN_QUOTES)
[typographical] ~26-~26: Consider using a typographic close quote here.
Context: ...5. "Incompatible With Secondary Licenses" means (a) that the initial Con...(EN_QUOTES)
[typographical] ~36-~36: Consider using typographic quotation marks here.
Context: ... terms of a Secondary License. 1.6. "Executable Form" means any form of the work other th...(EN_QUOTES)
[style] ~37-~37: Consider using a more formal/concise alternative here.
Context: ...le Form" means any form of the work other than Source Code Form. 1.7. "Larger Work" ...(OTHER_THAN)
[typographical] ~39-~39: Consider using typographic quotation marks here.
Context: ...work other than Source Code Form. 1.7. "Larger Work" means a work that combines Covered ...(EN_QUOTES)
[typographical] ~43-~43: Consider using typographic quotation marks here.
Context: ...es, that is not Covered Software. 1.8. "License" means this document. 1.9. "Licensa...(EN_QUOTES)
[typographical] ~46-~46: Consider using typographic quotation marks here.
Context: ...License" means this document. 1.9. "Licensable" means having the right to grant, to...(EN_QUOTES)
[style] ~48-~48: ‘any and all’ might be wordy. Consider a shorter alternative.
Context: ...e of the initial grant or subsequently, any and all of the rights conveyed by this License....(EN_WORDINESS_PREMIUM_ANY_AND_ALL)
[typographical] ~51-~51: Consider using typographic quotation marks here.
Context: ...rights conveyed by this License. 1.10. "Modifications" means any of the following: (a...(EN_QUOTES)
[typographical] ~61-~61: Consider using typographic quotation marks here.
Context: ...ns any Covered Software. 1.11. "Patent Claims" of a Contributor means any patent c...(EN_QUOTES)
[typographical] ~69-~69: Consider using typographic quotation marks here.
Context: ... or its Contributor Version. 1.12. "Secondary License" means either the GNU General Public...(EN_QUOTES)
[typographical] ~75-~75: Consider using a typographic opening quote here.
Context: ... versions of those licenses. 1.13. "Source Code Form" means the form of ...(EN_QUOTES)
[typographical] ~75-~75: Consider using a typographic close quote here.
Context: ...e licenses. 1.13. "Source Code Form" means the form of the work preferre...(EN_QUOTES)
[typographical] ~78-~78: Consider using typographic quotation marks here.
Context: ...ferred for making modifications. 1.14. "You" (or "Your") means an individual or ...(EN_QUOTES)
[typographical] ~78-~78: Consider using typographic quotation marks here.
Context: ... making modifications. 1.14. "You" (or "Your") means an individual or a legal ent...(EN_QUOTES)
[typographical] ~80-~80: Consider using typographic quotation marks here.
Context: ...r this License. For legal entities, "You" includes any entity that controls, ...(EN_QUOTES)
[typographical] ~82-~82: Consider using typographic quotation marks here.
Context: ...u. For purposes of this definition, "control" means (a) the power, direct or indi...(EN_QUOTES)
[style] ~108-~108: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...te The licenses granted in Section 2.1 with respect to any Contribution become effective for e...(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
[grammar] ~109-~109: The usual preposition for “contribution” is “to”. Did you mean “Contribution to”?
Context: ... Contribution become effective for each Contribution on the date the Contributor first distribu...(ON_THE_NOVEL)
[uncategorized] ~174-~174: Possible missing comma found.
Context: ...stribute Covered Software in Executable Form then: (a) such Covered Software must a...(AI_HYDRA_LEO_MISSING_COMMA)
[style] ~210-~210: The serial comma (Oxford comma, Harvard comma) is missing.
Context: ...to charge a fee for, warranty, support, indemnity or liability obligations to one or more re...(SERIAL_COMMA_ON)
[style] ~212-~212: Only include ‘own’ if you want to emphasize that something belongs to a person or thing or was done by a person or thing.
Context: ...oftware. However, You may do so only on Your own behalf, and not on behalf of any Contri...(PRP_OWN)
[style] ~213-~213: As an alternative to the over-used intensifier ‘absolutely’, consider replacing this phrase.
Context: ...lf of any Contributor. You must make it absolutely clear that any such warranty, support, indemn...(EN_WEAK_ADJECTIVE)
[style] ~216-~216: The serial comma (Oxford comma, Harvard comma) is missing.
Context: ...butor as a result of warranty, support, indemnity or liability terms You offer. You may incl...(SERIAL_COMMA_ON)
[style] ~225-~225: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...y with any of the terms of this License with respect to some or all of the Covered Software due...(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
[typographical] ~227-~227: Conjunctions like ‘and’ should not follow semicolons. Consider using a comma, or removing the conjunction.
Context: ...s License to the maximum extent possible; and (b) describe the limitations and the code...(CONJUNCTION_AFTER_SEMICOLON)
[style] ~243-~243: ‘prior to’ might be wordy. Consider a shorter alternative.
Context: ...non-compliance by some reasonable means prior to 60 days after You have come back into c...(EN_WORDINESS_PREMIUM_PRIOR_TO)
[style] ~248-~248: ‘prior to’ might be wordy. Consider a shorter alternative.
Context: ...h Contributor, and You become compliant prior to 30 days after Your receipt of the notic...(EN_WORDINESS_PREMIUM_PRIOR_TO)
[style] ~255-~255: ‘any and all’ might be wordy. Consider a shorter alternative.
Context: ...tent, then the rights granted to You by any and all Contributors for the Covered Software u...(EN_WORDINESS_PREMIUM_ANY_AND_ALL)
[style] ~260-~260: ‘prior to’ might be wordy. Consider a shorter alternative.
Context: ...or Your distributors under this License prior to termination shall survive termination. ...(EN_WORDINESS_PREMIUM_PRIOR_TO)
[typographical] ~268-~268: Consider using typographic quotation marks here.
Context: ...re is provided under this License on an "as is" * * basis, without warranty of a...(EN_QUOTES)
[uncategorized] ~272-~272: “to the” seems less likely than “to”.
Context: ...e or non-infringing. The entire risk as to the * * quality and performance of the...(AI_HYDRA_LEO_CP_TO_THE_TO)
[style] ~318-~318: This phrase is redundant. Consider using “subject” to avoid wordiness.
Context: ...s the complete agreement concerning the subject matter hereof. If any provision of this Licens...(SUBJECT_MATTER)
[style] ~331-~331: Consider using a more formal/concise alternative here.
Context: ...ept as provided in Section 10.3, no one other than the license steward has the right to mo...(OTHER_THAN)
[style] ~331-~331: To elevate your writing, try using more concise and formal language here.
Context: ..., no one other than the license steward has the right to modify or publish new versions of th...(RIGHT_TO_ENTITLED)
[uncategorized] ~353-~353: Possible missing preposition found.
Context: ...If You choose to distribute Source Code Form that is Incompatible With Secondary Lic...(AI_HYDRA_LEO_MISSING_IN)
[typographical] ~357-~357: To join two clauses or introduce examples, consider using an em dash.
Context: ...his License must be attached. Exhibit A - Source Code Form License Notice --------...(DASH_RULE)
[typographical] ~371-~371: To join two clauses or introduce examples, consider using an em dash.
Context: ...tices of copyright ownership. Exhibit B - "Incompatible With Secondary Licenses" N...(DASH_RULE)
[typographical] ~371-~371: Consider using a typographic opening quote here.
Context: ...es of copyright ownership. Exhibit B - "Incompatible With Secondary Licenses" No...(EN_QUOTES)
[typographical] ~371-~371: Consider using a typographic close quote here.
Context: ... - "Incompatible With Secondary Licenses" Notice --------------------------------...(EN_QUOTES)
[typographical] ~374-~374: Consider using a typographic opening quote here.
Context: ...----------- This Source Code Form is "Incompatible With Secondary Licenses", a...(EN_QUOTES)
[typographical] ~374-~374: Consider using a typographic close quote here.
Context: ...is "Incompatible With Secondary Licenses", as defined by the Mozilla Public Lic...(EN_QUOTES)
tests/fixtures/README.md (5)
1-3
: Introduction is clear and welcoming.
The beginning of the file clearly explains the purpose of the test fixtures and sets the tone for the documentation.
19-24
: Component Reuse Section is well presented.
The explanation of managing components via direct reference and vendoring is concisely written and helps the reader understand the directory structure and reuse strategy.
25-28
: Configuration Inheritance description is clear.
The section neatly explains how test scenarios inherit from the base configuration, reducing duplication and simplifying maintenance.
29-38
: Usage instructions are straightforward and informative.
The step-by-step directions on creating new test scenarios—including the YAML code block that correctly specifies its language—provide clear guidance for users.
39-44
: Best Practices Section is comprehensive.
Providing bullet-pointed best practices for component management and configuration maintenance boosts the usefulness of this documentation.tests/fixtures/scenarios/mock-terraform/components/terraform/mock/backend.tf (1)
1-5
: Solid Terraform Backend Configuration!The local backend block is straightforward and correctly sets up a local state file for Terraform. This configuration should work well within your testing scenarios.
tests/fixtures/scenarios/mock-terraform/stacks/catalog/terraform/mock.yaml (1)
1-12
: Great Mock Terraform Catalog Configuration!The YAML structure is clear and consistent. The metadata, backend, and settings sections look well-organized and match the overall catalog design.
tests/fixtures/scenarios/mock-terraform/stacks/dev/mock.yaml (1)
1-15
: Nicely Structured Development Environment Configuration!The import and component structure for the development environment is clear and mirrors the catalog setup. The use of metadata and backend settings is consistent and easy to follow.
tests/fixtures/scenarios/mock-terraform/stacks/prod/mock.yaml (1)
1-15
: Solid Production Configuration for Terraform Mock!The production YAML file is well-structured and mirrors the development environment effectively. The clear segregation of metadata and backend details helps in maintaining consistency across environments.
tests/fixtures/scenarios/mock-terraform/atmos.yaml (2)
1-14
: Solid Inheritance and Components Setup!The inheritance and components sections offer a clean, modular approach to configuration management. The auto-approve settings in both “apply” and “clean” help streamline operations.
15-22
: Clear Stack Configuration!The stacks block is well-delineated with clear base paths, inclusion/exclusion rules, and a consistent naming pattern, ensuring predictable behavior across various environments.
tests/fixtures/scenarios/mock-terraform/components/terraform/mock/main.tf (1)
28-39
: Resource Block Looks Solid
The resource "local_file" "mock" correctly uses jsonencode to build the JSON file content, and the filename uses the standard module path. If security or file permissions matter in your testing environment, you might consider setting file mode permissions. Otherwise, this implementation is clear and meets the test fixture requirements.tests/fixtures/components/terraform/myapp/cache.nonprod.txt (2)
1-2
: Header clarity and consistency:
The header "Weather report: Stockholm" clearly indicates the purpose and location for this test fixture. Maintaining this clear label helps future users of the fixture understand its role at a glance.
4-7
: ASCII art presentation and value consistency:
The ASCII art effectively provides a vivid, colorful representation of the weather details. The ANSI escape sequences add a nice visual touch, but please verify that they render as expected across all environments where this fixture might be used. Additionally, double-check that all weather metrics (temperature, wind speed, precipitation) are consistently presented and that any ambiguous units (e.g. “10 km” on line 6) are indeed intended or clearly documented.🧰 Tools
🪛 LanguageTool
[uncategorized] ~4-~4: A punctuation mark might be missing here.
Context: ... Overcast �[38;5;240;1m .--. �[0m �[38;5;050m0�[0m(�[38;...(AI_EN_LECTOR_MISSING_PUNCTUATION)
tests/cli_test.go (5)
53-53
: LGTM! Well-structured timeout parsing implementation.The new fields and
parseTimeout
function are well-implemented with:
- Support for both duration strings and numeric seconds
- Clear error handling
- Good documentation
Also applies to: 66-66, 95-113
419-437
: Refactor duplicate timeout handling code.The timeout handling implementation is correct but appears in multiple places. Consider extracting it into a helper function.
+func setupTestContext(t *testing.T, tc TestCase) (context.Context, context.CancelFunc) { + if tc.Expect.Timeout != "" { + timeout, err := parseTimeout(tc.Expect.Timeout) + if err != nil { + t.Fatalf("Failed to parse timeout for test %s: %v", tc.Name, err) + } + if timeout > 0 { + return context.WithTimeout(context.Background(), timeout) + } + } + return context.WithCancel(context.Background()) +} -// Create a context with timeout if specified -var ctx context.Context -var cancel context.CancelFunc - -if tc.Expect.Timeout != "" { - timeout, err := parseTimeout(tc.Expect.Timeout) - if err != nil { - t.Fatalf("Failed to parse timeout for test %s: %v", tc.Name, err) - } - if timeout > 0 { - ctx, cancel = context.WithTimeout(context.Background(), timeout) - } else { - ctx, cancel = context.WithCancel(context.Background()) - } -} else { - ctx, cancel = context.WithCancel(context.Background()) -} +ctx, cancel := setupTestContext(t, tc)
439-472
: LGTM! Robust test isolation with temporary HOME directory.The implementation properly isolates tests by:
- Creating a clean temporary HOME directory
- Copying essential configuration files
- Handling platform-specific issues
- Ensuring proper cleanup
474-492
: LGTM! Improved working directory handling.The changes enhance working directory management by:
- Properly resolving absolute paths
- Adding directory cleaning functionality
- Including appropriate error handling and logging
500-501
: LGTM! Well-implemented command execution with timeout support.The changes properly integrate timeout handling in command execution:
- Uses context correctly
- Handles timeouts in both TTY and non-TTY modes
- Provides clear error messages
Also applies to: 518-524, 550-556
tests/fixtures/scenarios/vendor/components/terraform/weather/main/main.tf (2)
1-9
: Local URL Construction with Format and URL Encoding
The locals block properly constructs the URL using the format function and encodes each parameter with urlencode(). One minor note: double-check that the use of "%v" as format specifiers is supported in your Terraform version (typically "%s" is common). Otherwise, the approach is sound.
18-22
: Local File Resource for Caching HTTP Response
The resource block cleanly writes the HTTP response to a dynamically named file using the stage variable. This implementation is clear and meets the intended purpose.tests/fixtures/scenarios/vendor/components/terraform/vpc-src/main.tf (2)
11-16
: HTTP Data Source in VPC Component
The HTTP data source block in this VPC configuration correctly uses the local URL and header settings. The configuration is consistent and clear.
18-22
: Local File Resource for Caching (VPC Component)
The resource block for writing the HTTP response to a file is implemented in a straightforward manner using a dynamic filename. This meets the intended functionality well.tests/fixtures/scenarios/vendor/components/terraform/weather/main/outputs.tf (1)
1-28
: Consistent Output Variable Definitions
All outputs (weather, url, stage, location, lang, units) are clearly defined and include useful descriptions. This enhances documentation and assists users in understanding the Terraform module’s outputs. The naming and structure are consistent with the rest of the configuration.tests/fixtures/scenarios/vendor/components/terraform/vpc-src/outputs.tf (1)
1-28
: Clear and Consistent Outputs in VPC Component
The outputs in this file mirror those in the weather component, ensuring consistency across modules. The outputs are well-organized with appropriate descriptions, making it easy for users to interpret the results.F438tests/fixtures/scenarios/vendor/components/terraform/infra/my-vpc1/context.tf (21)
1-12
: File Header and InstructionsThe header comments clearly explain that this file is a copy from the upstream cloudposse/terraform-null-label repository. This provides good guidance for maintainers and users. No action is needed here.
23-46
: Module Block ConfigurationThe module "this" block correctly sets the source and version for the Cloud Posse label module. Variables are mapped cleanly from the input variables, and the overall setup is clear. Great job!
50-85
: Context Variable BlockThe "context" variable is comprehensively defined with a complete default map and a detailed description. One note: the default for labels_as_tags is set to ["unset"] here, which differs from the standalone variable's default (set to ["default"]) further down. Please review this discrepancy to ensure it’s intentional.
86-90
: Enabled Variable DefinitionThe definition of the “enabled” variable is straightforward and its description is clear. Everything looks solid.
103-107
: Namespace Variable DeclarationThe namespace variable is defined with an appropriate type and description. No issues here.
109-113
: Tenant Variable DeclarationThe tenant variable is well-documented and its configuration fits the intended use.
115-119
: Environment Variable DeclarationClear and concise; the environment variable’s definition and description meet the requirements.
121-125
: Stage Variable DeclarationThe stage variable is straightforward with a clear description, which helps with clarity.
127-135
: Name Variable DeclarationThe "name" variable includes an extended description that clarifies its purpose well. This ensures users understand how it is used.
137-144
: Delimiter Variable DeclarationThe configuration of the delimiter variable is clear. Its description appropriately explains its behavior.
146-155
: Attributes Variable DeclarationThe "attributes" variable is defined as a list of strings with a clear purpose and nicely formatted multi-line description. Looks good!
157-170
: Labels as Tags Variable DeclarationThis block declares the "labels_as_tags" variable using a set with a detailed description. Note the difference in default value compared to the same key in the "context" variable block. Consider verifying that this distinction—["default"] vs. ["unset"]—is intentional.
172-179
: Tags Variable DeclarationThe "tags" variable is simply declared with an empty map as default and a concise description. Everything is in order.
181-189
: Additional Tag Map Variable DeclarationThe "additional_tag_map" is clearly defined with a detailed explanation. This will help users understand its rare-case usage.
191-199
: Label Order Variable DeclarationThe variable "label_order" is well-documented, outlining the allowed labels and their order. The description is helpful and clear.
201-209
: Regex Replace Chars Variable DeclarationThe "regex_replace_chars" variable is defined clearly, and the helpful description explains its purpose and the fallback behavior.
211-224
: ID Length Limit Variable with ValidationThis variable includes a useful validation block that ensures the id_length_limit is appropriately set. The error message is clear and informative.
226-240
: Label Key Case Variable with ValidationThe validation logic here correctly restricts the possible values to "lower," "title," or "upper". The error message is precise, aiding in troubleshooting.
242-258
: Label Value Case Variable with ValidationSimilar to label_key_case, the "label_value_case" variable has a clear validation condition and error message, ensuring that only allowed values are used.
260-277
: Descriptor Formats Variable DeclarationThe "descriptor_formats" variable is declared with a flexible type to allow future enhancements. The multi-line description offers clarity for users on its intended use.
279-280
: File Closure and Footer CommentsThe footer comment marking the end of the copied configuration from cloudposse/terraform-null-label is a useful indicator for maintainers. It neatly concludes the file.
tests/fixtures/scenarios/vendor/components/terraform/infra/my-vpc1/remote-state.tf (1)
1-14
: Clear and Concise Module DefinitionThe new module "vpc_flow_logs_bucket" is defined clearly. The use of the count parameter based on var.vpc_flow_logs_enabled cleanly ensures that the module is only created when needed. The fallback logic using try(coalesce(...)) for the tenant parameter is acceptable, though you might consider adding a brief inline comment to explain the fallback order for future maintainers.
tests/fixtures/scenarios/vendor/components/terraform/infra/my-vpc1/vpc-flow-logs.tf (1)
1-11
: Well-Structured AWS Flow Log ResourceThe aws_flow_log resource is defined in a clear and straightforward manner. Using local.vpc_flow_logs_enabled to conditionally create the resource and referencing the flow logs bucket ARN via module.vpc_flow_logs_bucket[0].outputs.vpc_flow_logs_bucket_arn is a common pattern. Just ensure that the indexing logic remains safe even when the module is not created (i.e. when count is 0).
tests/fixtures/scenarios/vendor/components/terraform/infra/my-vpc1/providers.tf (1)
1-14
: Solid AWS Provider and Role Assumption ConfigurationThe provider "aws" block leverages a dynamic assume_role block nicely with a compact() call to conditionally assume a role only if module.iam_roles.terraform_role_arn is defined. This pattern is neat and helps maintain clarity regarding role usage.
tests/fixtures/scenarios/vendor/components/terraform/infra/my-vpc1/outputs.tf (5)
1-33
: Comprehensive Output Definitions for SubnetsThe outputs exposing public and private subnet IDs and CIDRs, as well as the combined subnets map, are well structured and include clear descriptive text. This level of detail will help users understand the resulting infrastructure.
35-44
: Detailed VPC Access InformationThe outputs for network ACLs, security groups, and VPC identifiers are clear. They enhance visibility into the VPC components created by the module.
65-85
: Route Tables and Subnet Routing OutputsOutputs for private/public route table IDs and the combined route tables map are defined in a clear and consistent manner.
87-100
: NAT and Endpoint OutputsDefining outputs for NAT gateway/instance IDs and public IPs, as well as for AWS Shield protections and VPC endpoints, provides valuable insights post-deployment. Everything looks in order.
102-131
: Availability Zone and Subnet Mapping OutputsOutputs mapping availability zones and associating them to private/public subnets enhance the transparency of the subnets' distribution. The naming is consistent and the descriptions are thorough.
tests/fixtures/scenarios/vendor/components/terraform/infra/my-vpc1/variables.tf (22)
1-4
: Essential Region VariableThe region variable is straightforward and well-documented.
6-18
: Well-Described Availability ZonesThe explanation for availability_zones is very detailed and reminds users about the importance of order stability—a good practice for predictable deployments.
20-29
: Clear AZ IDs VariableThe variable for availability_zone_ids is defined clearly; it offers users an alternative way to specify zones.
31-38
: Primary CIDR Block ConfigurationBoth methods for defining the primary IPv4 CIDR block (directly or via IPAM association) are covered well. The documentation makes the conflict expectations clear.
40-51
: Object Definition for IPAM AssociationThe object structure for ipv4_primary_cidr_block_association is precise and well-commented.
53-65
: Additional CIDR Block Associations Defined ThoroughlyThe map object for additional CIDR associations is clear in its purpose and usage.
67-74
: Timeouts for CIDR AssociationsTimeout settings are defined clearly, which will aid in troubleshooting resource creation or deletion delays.
76-90
: Robust IPv4 CIDRs Block with ValidationDefining ipv4_cidrs as a list of objects and restricting the list to one item via validation is a neat safeguard. This ensures predictable input.
92-96
: IPv6 CIDR Block ToggleThe boolean flag for assigning an AWS-generated IPv6 CIDR block is clear.
98-105
: Public Subnets ToggleThe public_subnets_enabled variable is well explained with its implications clearly stated.
107-117
: NAT Gateways and Instances ConfigurationThe variables for NAT gateway and instance enablement, along with instance type, are set up correctly.
119-123
: Configuring Instance Public IP Assignmentmap_public_ip_on_launch is straightforward and its description is adequate.
125-129
: Subnet Type Tag Key RequirementThe variable for subnet_type_tag_key is clearly required without a default, ensuring that users provide the needed tag.
136-140
: Control Maximum Subnet CountThe max_subnet_count variable is clear in its purpose. Its description lays out the deployment strategy expected when left at default or explicitly set.
142-146
: Enabling VPC Flow LogsThe vpc_flow_logs_enabled variable is clear and follows the overall consistency of the configuration.
154-158
: Destination Type for Flow LogsThe vpc_flow_logs_log_destination_type is clear and set to a sensible default ("s3").
160-164
: Flow Logs Bucket Environment NameThis variable is defined as a string with an empty default, which is acceptable if the environment is meant to be provided explicitly.
166-170
: Flow Logs Bucket Stage NameSimilarly, vpc_flow_logs_bucket_stage_name is clearly defined and documented.
172-180
: Optional Tenant Name for Flow Logs BucketThe vpc_flow_logs_bucket_tenant_name variable is well-documented, allowing for a null value when the tenant label is not used.
182-186
: NAT EIP AWS Shield Protection FlagThe variable controlling AWS Shield Advanced protection for NAT EIPs is clear and straightforward.
188-192
: Gateway VPC Endpoints ConfigurationThe gateway_vpc_endpoints variable is defined as a set with a clear description. Good to go.
194-198
: Interface VPC Endpoints SetupThe interface_vpc_endpoints variable is similarly set up clearly.
tests/fixtures/scenarios/vendor/components/terraform/infra/my-vpc1/main.tf (13)
1-7
: Initialization and Flag Definitions:
The locals block is initialized clearly with key flags. Using “local.enabled” to gate the NAT EIP Shield and VPC Flow Logs flags is consistent.
16-22
: Availability Zones Formatting:
This segment conditionally verifies and reformats the availability zones based on whether the first element’s substring equals the region. The logic is solid, but please double-check that this transformation always meets your use cases.
24-32
: Determining short_region and zone IDs:
The “short_region” extraction and the corresponding formatting for “availability_zone_ids” mirror the earlier logic for availability zones. Ensure that the source mapping in module “utils.region_az_alt_code_maps” exists and returns expected results.
46-50
: Gateway Endpoint Map Construction:
The use of a for-expression to construct the “gateway_endpoint_map” is neat and easy to follow. Ensure that module “subnets.private_route_table_ids” is reliably populated as expected.
52-65
: Interface Endpoint Configuration:
This block documents the logic for assigning security groups to endpoint interfaces depending on whether a single or multiple groups are used. The inline comment explains the rationale well. Confirm that the key “VPC Endpoint interfaces” is consistently used across modules for accurate mapping.
68-71
: Module "utils" Declaration:
The declaration using source "cloudposse/utils/aws" at version "1.3.0" is appropriate and clear.
73-91
: Module "vpc" Configuration:
The VPC module is configured with the primary CIDR block(s) and associated timeouts. All necessary parameters such as DNS support and context propagation are present.
93-125
: Module "endpoint_security_groups":
The use of for_each with a conditional based on the length of interface VPC endpoints is clever. The rules_map configuration is clear; just ensure that “try(length(var.interface_vpc_endpoints), 0)” behaves as expected if the variable is unset.
127-138
: Module "vpc_endpoints":
The vpc_endpoints module correctly aggregates gateway and interface endpoints. The enabled condition is logical.
140-161
: Module "subnets":
The subnets module configuration passes along all required variables, including CIDR blocks and tagging. The structure is clear and modular.
163-165
: AWS Caller Identity Data Source:
Using a conditional “count” to conditionally fetch the AWS caller identity if NAT EIP Shield protection is enabled is a sound approach.
167-171
: AWS EIP Data Source:
This for_each construct for fetching EIP details when protection is enabled is well-formed. Ensure that “module.subnets.nat_ips” returns a set of public IPs as expected.
173-178
: AWS Shield Protection Resource:
The resource block correctly creates AWS Shield protections for NAT EIPs by dynamically generating the ARN. Verify that “data.aws_caller_identity.current” is non-empty when protection is enabled to avoid index issues.tests/fixtures/scenarios/vendor/components/terraform/infra/my-vpc1/README.md (4)
1-3
: Component Introduction:
The README’s title and introductory description clearly state the component’s purpose. This sets a good context for users.
5-9
: Usage Overview and Stack Level Declaration:
The “Usage” section is concise and correctly indicates that the stack operates at a regional level. The instructions are clear.
11-38
: Usage Example Snippet:
The YAML snippet illustrating component usage is well formatted and provides practical examples for setting variables (e.g., enabling NAT gateways and VPC flow logs). Ensure that variable names such as “nat_gateway_enabled” and “max_subnet_count” align with what is defined in the Terraform configuration.
40-54
: Import and Component Inheritance Example:
The secondary YAML snippet shows how to import and inherit defaults from a catalog, which is useful for users. The structure is straightforward and instructive.
* updates * updates * updates * updates * updates * updates * Update internal/exec/terraform_outputs.go Co-authored-by: Erik Osterman (CEO @ Cloud Posse) <erik@cloudposse.com> * Update internal/exec/terraform_outputs.go Co-authored-by: Erik Osterman (CEO @ Cloud Posse) <erik@cloudposse.com> * Update internal/exec/terraform_outputs.go Co-authored-by: Erik Osterman (CEO @ Cloud Posse) <erik@cloudposse.com> * Update internal/exec/terraform_outputs.go Co-authored-by: Erik Osterman (CEO @ Cloud Posse) <erik@cloudposse.com> * Update internal/exec/terraform_outputs.go Co-authored-by: Erik Osterman (CEO @ Cloud Posse) <erik@cloudposse.com> * Update internal/exec/terraform_outputs.go Co-authored-by: Erik Osterman (CEO @ Cloud Posse) <erik@cloudposse.com> * Update internal/exec/terraform_outputs.go Co-authored-by: Erik Osterman (CEO @ Cloud Posse) <erik@cloudposse.com> * Update internal/exec/terraform_outputs.go Co-authored-by: Erik Osterman (CEO @ Cloud Posse) <erik@cloudposse.com> * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates --------- Co-authored-by: Erik Osterman (CEO @ Cloud Posse) <erik@cloudposse.com>
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
🔭 Outside diff range comments (1)
pkg/utils/map_utils.go (1)
45-55
: Add error handling for non-string keys and nil input.The function silently skips non-string keys, which could lead to unexpected data loss. Consider these improvements:
-// MapOfInterfaceKeysToMapOfStringKeys converts map[any]any to map[string]any +// MapOfInterfaceKeysToMapOfStringKeys converts map[any]any to map[string]any. +// It returns an error if any key cannot be converted to string. +// Returns empty map for nil input. -func MapOfInterfaceKeysToMapOfStringKeys(input map[any]any) map[string]any { +func MapOfInterfaceKeysToMapOfStringKeys(input map[any]any) (map[string]any, error) { + if input == nil { + return make(map[string]any), nil + } converted := make(map[string]any, len(input)) for key, value := range input { strKey, ok := key.(string) - if ok { - converted[strKey] = value + if !ok { + return nil, fmt.Errorf("key %v cannot be converted to string", key) } + converted[strKey] = value } - return converted + return converted, nil }
🧹 Nitpick comments (2)
pkg/utils/map_utils.go (1)
38-43
: Consider adding nil check and examples.The implementation is clean and efficient! A few suggestions to make it even more robust:
// MapOfInterfacesToMapOfStrings converts map[string]any to map[string]string +// +// Example: +// input := map[string]any{"count": 42, "name": "test"} +// result := MapOfInterfacesToMapOfStrings(input) +// // result = map[string]string{"count": "42", "name": "test"} func MapOfInterfacesToMapOfStrings(input map[string]any) map[string]string { + if input == nil { + return make(map[string]string) + } return lo.MapEntries(input, func(key string, value any) (string, string) { return key, fmt.Sprintf("%v", value) }) }internal/exec/terraform_utils.go (1)
46-59
: Consider adding error handling for path conversion.While the path handling is good, consider adding error handling for the
filepath.Join
operation when converting relative paths to absolute.if !filepath.IsAbs(tfDataDir) { - tfDataDir = filepath.Join(componentPath, tfDataDir) + absPath, err := filepath.Abs(filepath.Join(componentPath, tfDataDir)) + if err != nil { + l.Debug("Failed to convert path to absolute", "path", tfDataDir, "error", err) + // Fall back to the joined path + tfDataDir = filepath.Join(componentPath, tfDataDir) + } else { + tfDataDir = absPath + } }
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (1)
go.sum
is excluded by!**/*.sum
📒 Files selected for processing (9)
examples/quick-start-advanced/Dockerfile
(1 hunks)go.mod
(1 hunks)internal/exec/spinner_utils.go
(2 hunks)internal/exec/terraform_outputs.go
(10 hunks)internal/exec/terraform_utils.go
(4 hunks)internal/exec/validate_stacks.go
(1 hunks)pkg/utils/map_utils.go
(2 hunks)tests/fixtures/scenarios/complete/stacks/catalog/terraform/template-functions-test/defaults.yaml
(1 hunks)tests/test-cases/atmos-functions.yaml
(3 hunks)
✅ Files skipped from review due to trivial changes (1)
- go.mod
🚧 Files skipped from review as they are similar to previous changes (1)
- tests/test-cases/atmos-functions.yaml
🧰 Additional context used
🧠 Learnings (2)
internal/exec/terraform_utils.go (1)
Learnt from: aknysh
PR: cloudposse/atmos#759
File: internal/exec/terraform.go:366-368
Timestamp: 2024-11-12T05:52:05.088Z
Learning: In `internal/exec/terraform.go`, the workspace cleaning code under both the general execution path and within the `case "init":` block is intentionally duplicated because the code execution paths are different. The `.terraform/environment` file should be deleted before executing `terraform init` in both scenarios to ensure a clean state.
internal/exec/terraform_outputs.go (1)
Learnt from: aknysh
PR: cloudposse/atmos#810
File: internal/exec/terraform_utils.go:40-213
Timestamp: 2024-12-03T05:18:49.169Z
Learning: In the context of the Atmos project, it's acceptable for functions like `execTerraformOutput` to remain as single functions if they perform a single purpose, such as retrieving Terraform outputs for a component in a stack, even if the function is lengthy.
⏰ Context from checks skipped due to timeout of 90000ms (2)
- GitHub Check: Build (windows-latest, windows)
- GitHub Check: Summary
🔇 Additional comments (10)
tests/fixtures/scenarios/complete/stacks/catalog/terraform/template-functions-test/defaults.yaml (1)
35-37
: Added Environment Variables Enhance Test Configuration
The newenv
section withTEST1
set toa
andTEST2
set tob
is correctly integrated into the configuration. This addition improves consistency with other test cases that utilize environment variables, supporting better configuration management and test isolation.examples/quick-start-advanced/Dockerfile (1)
2-2
: Update GEODESIC VersionThe GEODESIC_VERSION argument is now set to 4.0.1, ensuring the Docker build uses the latest Geodesic release. This update aligns with our objective of leveraging the latest features and improvements, and it should help support enhanced logging and version check functionalities elsewhere in the codebase.
pkg/utils/map_utils.go (1)
4-4
: LGTM! Import addition is well-placed.The
fmt
package import is necessary for string formatting in the new functions.internal/exec/spinner_utils.go (3)
44-63
: LGTM! Well-structured spinner initialization with TTY support.The function properly handles TTY detection and gracefully falls back to basic output when no terminal is attached.
65-75
: LGTM! Safe goroutine management with proper cleanup.The function correctly defers channel closure and handles spinner execution errors.
77-81
: LGTM! Clean spinner termination with synchronization.The function ensures proper cleanup by waiting for the spinner goroutine to complete.
internal/exec/terraform_utils.go (1)
29- DE95 59
: LGTM! Robust environment variable and path handling.The code properly handles the
TF_DATA_DIR
environment variable with a sensible default and ensures paths are absolute and clean.internal/exec/terraform_outputs.go (2)
128-140
: LGTM! Proper environment variable handling from env section.The code correctly sets environment variables from the
env
section with appropriate type conversion and error handling.
241-249
: LGTM! Clean spinner integration with proper resource management.The spinner initialization and cleanup is handled correctly with proper channel management.
internal/exec/validate_stacks.go (1)
31-37
: LGTM! Clean spinner integration with proper resource management.The code correctly initializes, runs, and cleans up the spinner using the new utilities.
@Cerebrovinny this PR is too messed up to continue |
what
clean
flag to remove untracked files before running tests in workdirEvidence:

wrong/invalid flag passed:

Env variable invalid:

why
Improved error messages
Better output clarity when theres an issue on the ATMOS_LOGS_LEVEL as env variable or when it's passed as a flag
references
Summary by CodeRabbit