package profile

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

// RuntimeDir returns the directory used for process-lifetime runtime state.
func RuntimeDir() string {
	return filepath.Join(ConfigDir(), "run")
}

// EnsureRuntimeDir creates RuntimeDir and ensures it is a private directory.
func EnsureRuntimeDir() (string, error) {
	dir := RuntimeDir()
	if err := os.MkdirAll(dir, 0o700); err != nil {
		return "", fmt.Errorf("profile: create runtime directory %s: %w", dir, err)
	}
	info, err := os.Stat(dir)
	if err != nil {
		return "", fmt.Errorf("profile: inspect runtime directory %s: %w", dir, err)
	}
	if !info.IsDir() {
		return "", fmt.Errorf("profile: runtime path %s is not a directory", dir)
	}
	if err := SecureRuntimeDir(dir); err != nil {
		return "", fmt.Errorf("profile: secure runtime directory %s: %w", dir, err)
	}
	return dir, nil
}
