locafero – github.com/sagikazarmark/locafero Index | Examples | Files

package locafero

import "github.com/sagikazarmark/locafero"

Package locafero looks for files and directories in an {fs.Fs} filesystem.

Index

Examples

Functions

func NameWithExtensions

func NameWithExtensions(baseName string, extensions ...string) []string

NameWithExtensions creates a list of names from a base name and a list of extensions.

TODO: find a better name for this function.

func NameWithOptionalExtensions

func NameWithOptionalExtensions(baseName string, extensions ...string) []string

NameWithOptionalExtensions creates a list of names from a base name and a list of extensions, plus it adds the base name (without any extensions) to the end of the list.

TODO: find a better name for this function.

Types

type FileType

type FileType int

FileType represents the kind of entries Finder can return.

const (
	FileTypeAll FileType = iota
	FileTypeFile
	FileTypeDir
)

FileType represents the kind of entries Finder can return.

type Finder

type Finder struct {
	// Paths represents a list of locations that the [Finder] will search in.
	//
	// They are essentially the root directories or starting points for the search.
	//
	// Examples:
	//   - home/user
	//   - etc
	Paths []string

	// Names are specific entries that the [Finder] will look for within the given Paths.
	//
	// It provides the capability to search for entries with depth,
	// meaning it can target deeper locations within the directory structure.
	//
	// It also supports glob syntax (as defined by [filepath.Match]), offering greater flexibility in search patterns.
	//
	// Examples:
	//   - config.yaml
	//   - home/*/config.yaml
	//   - home/*/config.*
	Names []string

	// Type restricts the kind of entries returned by the [Finder].
	//
	// This parameter helps in differentiating and filtering out files from directories or vice versa.
	Type FileType
}

Finder looks for files and directories in an afero.Fs filesystem.

func (Finder) Find

func (f Finder) Find(fsys afero.Fs) ([]string, error)

Find looks for files and directories in an afero.Fs filesystem.

Example

Code:

{
	fsys := afero.NewBasePathFs(afero.NewOsFs(), "testdata")

	finder := Finder{
		Paths: []string{
			"/home/user",
			"/etc",
		},
		Names: []string{"config.*"},
		Type:  FileTypeFile,
	}

	results, err := finder.Find(fsys)
	if err != nil {
		panic(err)
	}

	fmt.Println("On Unix:", results)

	// Output:
	// On Unix: [/home/user/config.yaml /etc/config.yaml]
}

Output:

On Unix: [/home/user/config.yaml /etc/config.yaml]

Source Files

file_type.go finder.go glob.go helpers.go

Version
v0.9.0 (latest)
Published
Mar 26, 2025
Platform
linux/amd64
Imports
7 packages
Last checked
1 day ago

Tools for package owners.