Documentation
¶
Overview ¶
Package search implementa el recorrido concurrente de directorios.
El recorrido usa un número acotado de goroutines: cada subdirectorio se entrega a una goroutine nueva si hay un "slot" libre en el semáforo; si no, la goroutine actual lo procesa en línea (en profundidad). Así nunca hay más de Workers goroutines activas, no puede producirse un interbloqueo y los núcleos se mantienen ocupados mientras quede trabajo pendiente.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func DefaultWorkers ¶
func DefaultWorkers() int
DefaultWorkers devuelve el grado de concurrencia por defecto. Leer directorios es una operación dominada por E/S, así que conviene tener más goroutines que núcleos.
Types ¶
type Matcher ¶
type Matcher struct {
// contains filtered or unexported fields
}
Matcher compara nombres de carpeta con un término de búsqueda, sin distinguir mayúsculas de minúsculas (igual que el sistema de archivos de Windows) ni acentos: "cancion" coincide con "Canción" y "ano" con "Año".
- Sin comodines, el término se busca como subcadena: "proy" coincide con "Proyectos" y con "mi-proyecto".
- Con comodines (* ? [..]) el patrón debe cubrir el nombre completo: "proy*" coincide con "Proyectos" pero no con "mi-proyecto".
func NewMatcher ¶
NewMatcher crea un Matcher y valida la sintaxis del patrón.
type Options ¶
type Options struct {
// Root es el directorio desde el que comienza el recorrido. Debe ser una
// ruta ya resuelta (sin variables de entorno).
Root string
// Matcher decide qué nombres de carpeta coinciden. Si es nil coinciden
// todas, lo que sirve para listar proyectos o filtrar solo por fecha.
Matcher *Matcher
// IncludeHidden incluye carpetas ocultas y de sistema.
IncludeHidden bool
// Projects busca carpetas de proyectos (las que contienen .git, go.mod,
// package.json...) en lugar de carpetas cualesquiera. El interior de un
// proyecto no se recorre, y la raíz nunca cuenta como proyecto.
Projects bool
// ModifiedAfter y ModifiedBefore, si no son cero, limitan los resultados
// a las carpetas modificadas en el intervalo [ModifiedAfter,
// ModifiedBefore).
ModifiedAfter, ModifiedBefore time.Time
// Prune evita recorrer el interior de las carpetas encontradas; por
// ejemplo, para no contar dos veces los node_modules anidados.
Prune bool
// Workers es el máximo de goroutines de recorrido simultáneas.
// Si es <= 0 se usa DefaultWorkers().
Workers int
}
Options configura una búsqueda.
type Result ¶ added in v1.2.0
type Result struct {
Path string
// Project es el tipo de proyecto ("Go", "Node.js, Git"...) en el modo
// proyectos; en el resto de búsquedas está vacío.
Project string
}
Result es una carpeta encontrada.
type SizeInfo ¶ added in v1.2.0
type SizeInfo struct {
Bytes int64 // suma del tamaño de los archivos
Files int64 // número de archivos
Denied int64 // carpetas que no se pudieron leer
}
SizeInfo es el resultado de Size.
type Stats ¶
type Stats struct {
// contains filtered or unexported fields
}
Stats contiene los contadores de una búsqueda. Sus valores son definitivos una vez que el canal de resultados se ha cerrado.
func Start ¶
Start inicia la búsqueda en segundo plano y devuelve un canal por el que se emite cada carpeta encontrada. El canal se cierra al terminar el recorrido o al cancelarse ctx.