43 lines
825 B
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
|
|
}
|
|
}
|