mirror of
https://github.com/turbot/steampipe.git
synced 2026-02-22 05:00:21 -05:00
40 lines
1.1 KiB
Go
40 lines
1.1 KiB
Go
package parse
|
|
|
|
import (
|
|
"strings"
|
|
|
|
"github.com/hashicorp/hcl/v2"
|
|
"github.com/turbot/steampipe/pkg/steampipeconfig/modconfig"
|
|
)
|
|
|
|
func GetMetadataForParsedResource(resourceName string, srcRange hcl.Range, fileData map[string][]byte, mod *modconfig.Mod) (*modconfig.ResourceMetadata, error) {
|
|
// convert the name into a short name
|
|
parsedName, err := modconfig.ParseResourceName(resourceName)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
m := &modconfig.ResourceMetadata{
|
|
ResourceName: parsedName.Name,
|
|
FileName: srcRange.Filename,
|
|
StartLineNumber: srcRange.Start.Line,
|
|
EndLineNumber: srcRange.End.Line,
|
|
IsAutoGenerated: false,
|
|
SourceDefinition: getSourceDefinition(srcRange, fileData),
|
|
}
|
|
// update the 'ModName' and 'ModShortName' fields
|
|
m.SetMod(mod)
|
|
return m, nil
|
|
}
|
|
|
|
func getSourceDefinition(sourceRange hcl.Range, fileData map[string][]byte) string {
|
|
filename := sourceRange.Filename
|
|
fileBytes, ok := fileData[filename]
|
|
if !ok {
|
|
return ""
|
|
}
|
|
|
|
source := strings.Join(
|
|
strings.Split(string(fileBytes), "\n")[sourceRange.Start.Line-1:sourceRange.End.Line], "\n")
|
|
return source
|
|
}
|