package fs

import (
	"fmt"
	"os"
	"path/filepath"
)

// CaseInsensitive tests if a storage path is case-insensitive.
func CaseInsensitive(storagePath string) (result bool, err error) {
	tmpName := filepath.Join(storagePath, ".caseTest.tmp")

	if err = os.WriteFile(tmpName, []byte("{}"), ModeFile); err != nil {
		return false, fmt.Errorf("%s not writable", filepath.Base(storagePath))
	}

	defer os.Remove(tmpName)

	result = FileExists(filepath.Join(storagePath, ".CASETEST.TMP"))

	return result, err
}

// IgnoreCase enables the case-insensitive mode.
func IgnoreCase() {
	ignoreCase = true
	FileTypes = Extensions.Types(true)
}
