q/src/scanner/queueDirectory.go

43 lines
825 B
Go

package scanner
import (
"path/filepath"
"strings"
"git.akyoto.dev/cli/q/src/config"
"git.akyoto.dev/cli/q/src/fs"
)
// queueDirectory queues an entire directory to be scanned.
func (s *Scanner) queueDirectory(directory string, pkg string) {
_, loaded := s.queued.LoadOrStore(directory, nil)
if loaded {
return
}
err := fs.Walk(directory, func(name string) {
if !strings.HasSuffix(name, ".q") {
return
}
if strings.HasSuffix(name, "_linux.q") && config.TargetOS != config.Linux {
return
}
if strings.HasSuffix(name, "_mac.q") && config.TargetOS != config.Mac {
return
}
if strings.HasSuffix(name, "_windows.q") && config.TargetOS != config.Windows {
return
}
fullPath := filepath.Join(directory, name)
s.queueFile(fullPath, pkg)
})
if err != nil {
s.errors <- err
}
}