search

package
v1.2.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 4, 2026 License: MIT Imports: 12 Imported by: 0

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

func NewMatcher(term string) (*Matcher, error)

NewMatcher crea un Matcher y valida la sintaxis del patrón.

func (*Matcher) Match

func (m *Matcher) Match(name string) bool

Match indica si name coincide con el término de búsqueda.

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.

func Size added in v1.2.0

func Size(ctx context.Context, root string) SizeInfo

Size calcula cuánto ocupan los archivos de root y de todas sus subcarpetas, incluidas las ocultas. Los enlaces y uniones no se siguen, para no contar dos veces el mismo contenido. Si ctx se cancela, 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

func Start(ctx context.Context, opts Options) (<-chan Result, *Stats)

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.

func (*Stats) Denied

func (s *Stats) Denied() int64

Denied devuelve el número de carpetas que no se pudieron leer (normalmente por falta de permisos).

func (*Stats) Scanned

func (s *Stats) Scanned() int64

Scanned devuelve el número de carpetas cuyo contenido se ha leído.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL