diff --git a/src/data.go b/src/data.go index 87126972..ecb89779 100644 --- a/src/data.go +++ b/src/data.go @@ -5,22 +5,32 @@ import ( "io/ioutil" "log" "strings" - + "os" "github.com/hashicorp/hcl" "github.com/hashicorp/hcl/hcl/ast" ) // GetResources retrieves all the resources in a tf file -func GetResources(file fs.FileInfo, dirname string) []Resource { +func GetResources(file fs.FileInfo, dirname string) ([]Resource, error ){ var results []Resource - src, err := ioutil.ReadFile(dirname + file.Name()) + fullfile:=dirname + string(os.PathSeparator)+ file.Name() + + src, err := ioutil.ReadFile(fullfile) + if err != nil { log.Fatal(err) } - myCode, _ := hcl.Parse(string(src)) + myCode, err := hcl.Parse(string(src)) + + if err != nil { + log.Printf("failed to parse %s", fullfile ) + log.Print(err) + return nil, err + } + Tree := myCode.Node.(*ast.ObjectList) for _, item := range Tree.Items { @@ -32,7 +42,7 @@ func GetResources(file fs.FileInfo, dirname string) []Resource { } // resources, filename, code - return results + return results, nil } // GetProvider retrieves the provider from the resource diff --git a/src/scan.go b/src/scan.go index 21dd7a27..7eac7dfc 100644 --- a/src/scan.go +++ b/src/scan.go @@ -3,13 +3,25 @@ package pike import ( "io/fs" "io/ioutil" + "log" + "os" "path/filepath" + "strings" ) // Scan looks for resources in a given directory func Scan(dirname string) error { - files, err2 := GetTF(dirname) + fulldir, err:=filepath.Abs(dirname) + fulldir=strings.TrimSuffix(fulldir, string(os.PathSeparator)) + + if err != nil { + return err + } + + log.Print(fulldir) + + files, err2 := GetTF(fulldir) if err2 != nil { return err2 } @@ -18,7 +30,11 @@ func Scan(dirname string) error { for _, file := range files { - resources := GetResources(file, dirname) + resources, err := GetResources(file, fulldir) + + if err != nil { + continue + } for _, resource := range resources { hcltype := GetHCLType(resource) diff --git a/todo.md b/todo.md index 8aa9ecd9..586093f8 100644 --- a/todo.md +++ b/todo.md @@ -33,3 +33,6 @@ nat_gateway handle 2022/07/24 07:00:37 data aws_caller_identity not found + +parse/ignore variables hcl.parse the correct parser? +https://discuss.hashicorp.com/t/parse-hcl-treating-variables-or-functions-as-raw-strings-hashicorp-hcl/5859/2