Documentation
¶
Overview ¶
Package search implementa el recorrido concurrente de directorios: la búsqueda de carpetas (Start) y el cálculo de su tamaño (Size). Ambos reparten el trabajo entre un número acotado de goroutines (ver pool).
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
// Exclude son nombres de carpeta que ni se emiten ni se recorren (sin
// distinguir mayúsculas ni acentos), como node_modules.
Exclude []string
// 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 Sizer ¶ added in v1.2.6
type Sizer struct {
// contains filtered or unexported fields
}
Sizer calcula el tamaño de varias carpetas a la vez con un único grupo de goroutines (ver pool). Cada carpeta empieza a medirse en cuanto se añade, así que se pueden ir añadiendo mientras sigue una búsqueda, y las carpetas pequeñas no dejan núcleos ociosos.
func NewSizer ¶ added in v1.2.6
NewSizer crea un Sizer. Si ctx se cancela, las mediciones en curso se detienen y Wait devuelve lo sumado hasta ese momento.
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.