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 } }