Terraform: `tofu -chdir=<dir> validate` / `fmt -check` with -chdir before the subcommand is not matched; .tftpl/.tpl templates are unrecognised; clowdhaus/terraform-min-max versions
维护者通常 1 天内回复
还没有人认领这个 Issue。
评估
- 难度
- 3/5
- 预计耗时
- 1-2 天
- 新手友好度
- 45/100
调研方向
Start in project_validator/ecosystems/terraform.py: the _CLI tuple near line 34, the flagged(*_commands("fmt")) rule near lines 47-50, the analyses=when(starts(*_commands("validate")...)) rule near line 63, and the source_suffixes/ambiguous_suffixes mapping near lines 171-172. Done means tofu -chdir=<dir> validate and fmt -check in a GitLab job are recognised, and .tftpl/.tpl files are classed as templates rather than unrecognised. The min/max version expression case is a separate, larger design question.
由索引模型根据 Issue 内容生成。
描述
kubespray's seven GitLab jobs run OpenTofu validate and fmt -check -diff as tofu -chdir="contrib/terraform/$PROVIDER" validate; starts(("tofu", "validate")) fails because -chdir= precedes the subcommand → code-formatting and static-analysis FAIL. .tftpl is Terraform's documented template suffix (templatefile()), .tpl the older convention. The terraform-aws-modules' min/max Terraform versions come from clowdhaus/terraform-min-max (two versions) and read as "0 Terraform versions".
Evidence from the corpus audit
kubernetes-sigs/kubespray / code-formatting, static-analysis (Terraform)
- kind: FALSE_NEGATIVE
- actual:
code-formattingFAIL "Terraform: CI never runs terraform fmt; its formatting is not enforced";
static-analysisFAIL "Terraform: no static analyzer runs";.map.jsonjobs
.gitlab-ci/terraform.yml: terraform_validate (openstack|aws|exoscale|hetzner|vsphere|opennebula|upcloud)all have
ecosystems: []. - expected: PASS for both: seven GitLab CI jobs run OpenTofu
validateandfmt -check -diffon every
contrib/terraform/<provider>. The validator supportstofu(terraform.py:34: _CLI = ("terraform", "tofu"))
but matchesstarts(("tofu", "validate"))/flagged(("tofu", "fmt"), checks=("-check",)), and here the global
option-chdir=<dir>sits betweentofuand the subcommand. - evidence:
.gitlab-ci/terraform.yml:19:- tofu -chdir="contrib/terraform/$PROVIDER" init;
:26:- tofu -chdir="contrib/terraform/$PROVIDER" validate;
:27:- tofu -chdir="contrib/terraform/$PROVIDER" fmt -check -diff;.gitlab-ci.yml:68-71:include:...
- .gitlab-ci/terraform.yml(the jobs were read: they appear in.map.json).
Validator:project_validator/ecosystems/terraform.py:47-50:flagged(*_commands("fmt"), checks=("-check",));
:63:analyses=when(starts(*_commands("validate"), ("terraform_validate",)), analysed). - repro:
main.tf+.gitlab-ci.ymljobscript: - tofu -chdir=infra validate/- tofu -chdir=infra fmt -check
(same forterraform -chdir=infra validate). - confidence: high
terraform-aws-modules/terraform-aws-vpc, -eks, -lambda / platform-matrix, detection (ci)
- kind: UNSUPPORTED
- actual: FAIL:
platform-matrix: CI covers 0 OS(es) (none), 0 Terraform version(s) (none)...Min TF pre-commit (matrix computed by an expression): linux / no Terraform version - expected: ERROR: the Terraform version is an expression from
clowdhaus/terraform-min-max(min and max ofrequired_version, i.e. 2 versions); the composite action and the min-max action are the standard CI of the ~60 terraform-aws-modules repositories and deserve either modelling or an honest "unknown". - evidence:
.github/workflows/pre-commit.yml:79:terraform-version: ${{ steps.minMax.outputs.minVersion }},:169:terraform-version: ${{ steps.minMax.outputs.maxVersion }};versions.tf:2:required_version = ">= 1.0". - repro: the same workflow; expect "Terraform version: unknown (an expression)" rather than "no Terraform version".
- confidence: medium
terraform-google-modules/terraform-google-kubernetes-engine, terraform-aws-modules/terraform-aws-eks / detection (suffixes)
- kind: UNSUPPORTED
- actual: map
unrecognised_suffixes: [{".tmpl": 16}, {".tftpl": 1}](GKE),[{".tpl": 8}](eks) - expected:
.tftplis Terraform's documented template-file suffix (fortemplatefile()), and.tplis its older convention; a Terraform profile should claim them (as templates, roletemplate). - evidence:
examples/safer_cluster_iap_bastion/templates/startup-script.tftpl; ekstemplates/al2023_user_data.tpl. Validator:ecosystems/terraform.py:171-172:source_suffixes={".tf": ..., ".tofu": ..., ".tfvars": ...},ambiguous_suffixes={".hcl": TERRAFORM}. - repro:
templates/x.tftplin a Terraform project; expect it recognised, not listed as unrecognised. - confidence: medium
Found by the regression-corpus audit (235 real repositories, one or more per ecosystem profile; corpus and expected results in corpus/). Evidence is quoted from the audited checkouts at the commits pinned in corpus/projects.toml; <checkouts>/<owner>__<repo> is such a checkout.
🤖 Generated with Claude Code
- 主要语言
- Python
- 星标
- 4
- 派生
- 1
- 平均合并
- 10 小时 41 分钟
- 30 天内合并 PR
- 79
环境准备
这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
cpp-best-practices/project_validator 的其他 Issue
-
难度 2/5 1-3 小时 新手友好度 62/100
cpp-best-practices/project_validator#267 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 68/100
cpp-best-practices/project_validator#263 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 62/100
cpp-best-practices/project_validator#260 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 74/100
cpp-best-practices/project_validator#259 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 65/100
cpp-best-practices/project_validator#255 ·
维护者通常 1 天内回复
查看 cpp-best-practices/project_validator 的全部 Issue
相似的 Issue
-
plot_graph crashes when a mesh node has no m2m edge可能已有人在做 @tygvi 今天认领。 未关闭
难度 2/5 1-3 小时 新手友好度 78/100
mllam/neural-lam#883 · 1 条评论 ·
维护者通常 2 天内回复
-
enhancement possible-duplicate
难度 1/5 1-3 小时 新手友好度 78/100
AOSSIE-Org/PictoPy#1715 · 2 条评论 ·
维护者通常 6 天内回复
-
SQLite connector omits generated columns from the catalog, and drops relationships sourced on them未关闭
难度 2/5 1-3 小时 新手友好度 72/100
NVIDIA/auto-ontology#511 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 72/100
ethereum/execution-specs#3996 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 72/100
Project-N-E-K-O/N.E.K.O#3725 ·
维护者通常 1 天内回复