package infra

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

// WriteDockerfile escribe content en dir/Dockerfile.
// Crea el directorio si no existe. Retorna el path absoluto del archivo escrito.
func WriteDockerfile(dir, content string) (string, error) {
	absDir, err := filepath.Abs(dir)
	if err != nil {
		return "", fmt.Errorf("write_dockerfile: resolver path %s: %w", dir, err)
	}

	if err := os.MkdirAll(absDir, 0o755); err != nil {
		return "", fmt.Errorf("write_dockerfile: crear directorio %s: %w", absDir, err)
	}

	dockerfilePath := filepath.Join(absDir, "Dockerfile")
	if err := os.WriteFile(dockerfilePath, []byte(content), 0o644); err != nil {
		return "", fmt.Errorf("write_dockerfile: escribir %s: %w", dockerfilePath, err)
	}

	return dockerfilePath, nil
}
