filetime: support windows paths (#2118)

This commit is contained in:
Jan-Otto Kröpke
2025-07-13 02:01:44 +02:00
committed by GitHub
parent 52056a5cd9
commit ab7db07836

View File

@@ -19,6 +19,7 @@ package filetime
import ( import (
"fmt" "fmt"
"io/fs"
"log/slog" "log/slog"
"os" "os"
"path/filepath" "path/filepath"
@@ -139,16 +140,11 @@ func (c *Collector) Collect(ch chan<- prometheus.Metric) error {
} }
func (c *Collector) collectGlobFilePath(ch chan<- prometheus.Metric, filePattern string) error { func (c *Collector) collectGlobFilePath(ch chan<- prometheus.Metric, filePattern string) error {
basePath, pattern := doublestar.SplitPattern(filePattern) basePath, pattern := doublestar.SplitPattern(filepath.ToSlash(filePattern))
basePathFS := os.DirFS(basePath) basePathFS := os.DirFS(basePath)
matches, err := doublestar.Glob(basePathFS, pattern, doublestar.WithFilesOnly(), doublestar.WithCaseInsensitive()) err := doublestar.GlobWalk(basePathFS, pattern, func(path string, d fs.DirEntry) error {
if err != nil { filePath := filepath.Join(basePath, path)
return fmt.Errorf("failed to glob: %w", err)
}
for _, match := range matches {
filePath := filepath.Join(basePath, match)
fileInfo, err := os.Stat(filePath) fileInfo, err := os.Stat(filePath)
if err != nil { if err != nil {
@@ -157,7 +153,7 @@ func (c *Collector) collectGlobFilePath(ch chan<- prometheus.Metric, filePattern
slog.Any("err", err), slog.Any("err", err),
) )
continue return nil
} }
ch <- prometheus.MustNewConstMetric( ch <- prometheus.MustNewConstMetric(
@@ -166,6 +162,11 @@ func (c *Collector) collectGlobFilePath(ch chan<- prometheus.Metric, filePattern
float64(fileInfo.ModTime().UTC().UnixMicro())/1e6, float64(fileInfo.ModTime().UTC().UnixMicro())/1e6,
filePath, filePath,
) )
return nil
}, doublestar.WithFilesOnly(), doublestar.WithCaseInsensitive())
if err != nil {
return fmt.Errorf("failed to glob: %w", err)
} }
return nil return nil