package watcher

import (
	"os"
	"path/filepath"
	"strings"

	"github.com/fsnotify/fsnotify"
)

func simulateInitialCreates(dirName string, eventChan chan<- fsnotify.Event) error {
	dir, err := os.ReadDir(dirName)
	if err != nil {
		return err
	}

	for _, file := range dir {
		eventChan <- fsnotify.Event{
			Name: filepath.Join(dirName, file.Name()),
			Op:   fsnotify.Create,
		}
	}

	return nil
}

func sliceToMap[T comparable](sl []T) map[T]interface{} {
	m := make(map[T]interface{})

	for _, k := range sl {
		m[k] = nil
	}

	return m
}

func hasSlicePrefix(s string, sl []string) bool {
	for _, prefix := range sl {
		if strings.HasPrefix(s, prefix) {
			return true
		}
	}
	return false
}
