diff --git a/internal/shaderlister/main.go b/internal/shaderlister/main.go index 02e95646e..522f05847 100644 --- a/internal/shaderlister/main.go +++ b/internal/shaderlister/main.go @@ -51,7 +51,8 @@ func main() { type Shader struct { Package string - File string + GoFile string `json:",omitempty"` + KageFile string `json:",omitempty"` Source string SourceHash string GLSL *GLSL `json:",omitempty"` @@ -236,7 +237,8 @@ func appendShaderSources(shaders []Shader, pkg *packages.Package) ([]Shader, err return nil } visitedPaths[path] = struct{}{} - shaders, err = appendShaderFromFile(shaders, pkg.PkgPath, path) + goFile := pkg.Fset.Position(c.Pos()).Filename + shaders, err = appendShaderFromFile(shaders, pkg.PkgPath, goFile, path) if err != nil { return err } @@ -258,7 +260,8 @@ func appendShaderSources(shaders []Shader, pkg *packages.Package) ([]Shader, err continue } visitedPaths[path] = struct{}{} - shaders, err = appendShaderFromFile(shaders, pkg.PkgPath, path) + goFile := pkg.Fset.Position(c.Pos()).Filename + shaders, err = appendShaderFromFile(shaders, pkg.PkgPath, goFile, path) if err != nil { return nil, err } @@ -395,7 +398,7 @@ func appendShaderSources(shaders []Shader, pkg *packages.Package) ([]Shader, err shaders = append(shaders, Shader{ Package: pkg.PkgPath, - File: pkg.Fset.Position(spec.Pos()).Filename, + GoFile: pkg.Fset.Position(spec.Pos()).Filename, Source: constant.StringVal(val), }) return false @@ -408,15 +411,16 @@ func appendShaderSources(shaders []Shader, pkg *packages.Package) ([]Shader, err return shaders, nil } -func appendShaderFromFile(shaders []Shader, pkgPath string, filePath string) ([]Shader, error) { - content, err := os.ReadFile(filePath) +func appendShaderFromFile(shaders []Shader, pkgPath string, goFile string, kageFile string) ([]Shader, error) { + content, err := os.ReadFile(kageFile) if err != nil { return nil, err } shaders = append(shaders, Shader{ - Package: pkgPath, - File: filePath, - Source: string(content), + Package: pkgPath, + GoFile: goFile, + KageFile: kageFile, + Source: string(content), }) return shaders, nil } diff --git a/internal/shaderlister/shaderlister_test.go b/internal/shaderlister/shaderlister_test.go index 8bdbdf55d..75f4b2f14 100644 --- a/internal/shaderlister/shaderlister_test.go +++ b/internal/shaderlister/shaderlister_test.go @@ -50,7 +50,8 @@ func TestRun(t *testing.T) { type shader struct { Package string - File string + GoFile string + KageFile string Source string SourceHash string } @@ -89,9 +90,10 @@ func TestRun(t *testing.T) { if s.shader.Package == "" { t.Errorf("s.Package is empty: %v", s) } - if s.shader.File == "" { + if s.shader.GoFile == "" { t.Errorf("s.File is empty: %v", s) } + // KageFile can be empty. hash, err := graphics.CalcSourceHash([]byte(s.shader.Source)) if err != nil { t.Fatal(err)