From 1b73798fde4f728366c30e9c5f80526f96ad98f2 Mon Sep 17 00:00:00 2001 From: Radek Simko Date: Mon, 27 Jun 2022 12:39:15 +0100 Subject: [PATCH] fix: load hidden files --- .../langserver/handlers/command/validate.go | 2 +- internal/langserver/handlers/hooks_module.go | 2 +- internal/terraform/ast/module.go | 20 ++++++++++++++----- internal/terraform/ast/variables.go | 10 ---------- 4 files changed, 17 insertions(+), 17 deletions(-) diff --git a/internal/langserver/handlers/command/validate.go b/internal/langserver/handlers/command/validate.go index f3b00ae45..e27afadce 100644 --- a/internal/langserver/handlers/command/validate.go +++ b/internal/langserver/handlers/command/validate.go @@ -68,7 +68,7 @@ func (h *CmdHandler) TerraformValidateHandler(ctx context.Context, args cmd.Comm validateDiags := diagnostics.HCLDiagsFromJSON(jsonDiags) diags.EmptyRootDiagnostic() diags.Append("terraform validate", validateDiags) - diags.Append("HCL", mod.ModuleDiagnostics.AsMap()) + diags.Append("HCL", mod.ModuleDiagnostics.AutoloadedOnly().AsMap()) diags.Append("HCL", mod.VarsDiagnostics.AutoloadedOnly().AsMap()) notifier.PublishHCLDiags(ctx, mod.Path, diags) diff --git a/internal/langserver/handlers/hooks_module.go b/internal/langserver/handlers/hooks_module.go index d6fa15981..c49ea21fa 100644 --- a/internal/langserver/handlers/hooks_module.go +++ b/internal/langserver/handlers/hooks_module.go @@ -128,7 +128,7 @@ func updateDiagnostics(dNotifier *diagnostics.Notifier) notifier.Hook { defer dNotifier.PublishHCLDiags(ctx, mod.Path, diags) if mod != nil { - diags.Append("HCL", mod.ModuleDiagnostics.AsMap()) + diags.Append("HCL", mod.ModuleDiagnostics.AutoloadedOnly().AsMap()) diags.Append("HCL", mod.VarsDiagnostics.AutoloadedOnly().AsMap()) } } diff --git a/internal/terraform/ast/module.go b/internal/terraform/ast/module.go index 4d6da63bd..59d7ebf44 100644 --- a/internal/terraform/ast/module.go +++ b/internal/terraform/ast/module.go @@ -16,18 +16,18 @@ func (mf ModFilename) IsJSON() bool { return strings.HasSuffix(string(mf), ".json") } -func IsModuleFilename(name string) bool { - if isIgnoredFile(name) { - // See https://github.com/hashicorp/terraform/blob/d35bc05/internal/configs/parser_config_dir.go#L107 - return false - } +func (mf ModFilename) IsIgnored() bool { + return isIgnoredFile(string(mf)) +} +func IsModuleFilename(name string) bool { return strings.HasSuffix(name, ".tf") || strings.HasSuffix(name, ".tf.json") } // isIgnoredFile returns true if the given filename (which must not have a // directory path ahead of it) should be ignored as e.g. an editor swap file. +// See https://github.com/hashicorp/terraform/blob/d35bc05/internal/configs/parser_config_dir.go#L107 func isIgnoredFile(name string) bool { return strings.HasPrefix(name, ".") || // Unix-like hidden files strings.HasSuffix(name, "~") || // vim @@ -62,6 +62,16 @@ func ModDiagsFromMap(m map[string]hcl.Diagnostics) ModDiags { return mf } +func (md ModDiags) AutoloadedOnly() ModDiags { + diags := make(ModDiags) + for name, f := range md { + if !name.IsIgnored() { + diags[name] = f + } + } + return diags +} + func (md ModDiags) AsMap() map[string]hcl.Diagnostics { m := make(map[string]hcl.Diagnostics, len(md)) for name, diags := range md { diff --git a/internal/terraform/ast/variables.go b/internal/terraform/ast/variables.go index af0197903..278a9aba4 100644 --- a/internal/terraform/ast/variables.go +++ b/internal/terraform/ast/variables.go @@ -69,16 +69,6 @@ func (vd VarsDiags) AutoloadedOnly() VarsDiags { return diags } -func (vd VarsDiags) ForFile(name VarsFilename) VarsDiags { - diags := make(VarsDiags) - for fName, f := range vd { - if fName == name { - diags[fName] = f - } - } - return diags -} - func (vd VarsDiags) AsMap() map[string]hcl.Diagnostics { m := make(map[string]hcl.Diagnostics, len(vd)) for name, diags := range vd {