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
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 45/100
Línea de trabajo
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.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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
- Lenguaje dominante
- Python
- Estrellas
- 4
- Forks
- 1
- Merge medio
- 10 h 41 min
- PR fusionados (30 d)
- 79
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de cpp-best-practices/project_validator
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
cpp-best-practices/project_validator#267 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
cpp-best-practices/project_validator#263 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
cpp-best-practices/project_validator#260 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
cpp-best-practices/project_validator#259 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
cpp-best-practices/project_validator#255 ·
Los mantenedores suelen responder en 1 día
Todos los issues de cpp-best-practices/project_validator
Issues similares
-
plot_graph crashes when a mesh node has no m2m edgePosiblemente ocupada @tygvi la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
mllam/neural-lam#883 · 1 comentario ·
Los mantenedores suelen responder en 2 días
-
enhancement possible-duplicate
Dificultad 1/5 1-3 horas Aptitud para principiantes 78/100
AOSSIE-Org/PictoPy#1715 · 2 comentarios ·
Los mantenedores suelen responder en 6 días
-
SQLite connector omits generated columns from the catalog, and drops relationships sourced on themAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
NVIDIA/auto-ontology#511 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
ethereum/execution-specs#3996 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Project-N-E-K-O/N.E.K.O#3725 ·
Los mantenedores suelen responder en 1 día