package util

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

// ExpandVariables expands known variables in a path or pattern.
// Supported variables:
// - ${HOME}: User home directory
// - ${CWD}: Current working directory
// - ${TMPDIR}: Temporary directory
func ExpandVariables(pattern string) (string, error) {
	result := pattern

	// Get home directory
	home, err := os.UserHomeDir()
	if err != nil {
		return "", err
	}

	// Get current working directory
	cwd, err := os.Getwd()
	if err != nil {
		return "", err
	}

	// Get temp directory
	tmpDir := os.TempDir()

	// Replace variables
	replacer := strings.NewReplacer(
		"${HOME}", home,
		"${CWD}", cwd,
		"${TMPDIR}", tmpDir,
	)

	result = replacer.Replace(result)

	// Clean up path (resolve .., ., etc.)
	result = filepath.Clean(result)

	return result, nil
}

// ContainsGlob returns true if the pattern contains glob wildcards.
func ContainsGlob(pattern string) bool {
	return strings.Contains(pattern, "*") ||
		strings.Contains(pattern, "?") ||
		strings.Contains(pattern, "[")
}
