package common

import (
	"crypto/sha256"
	"encoding/hex"
	"os"
	"time"
)

type AgentFile struct {
	Path         string    `json:"path"`
	Size         int64     `json:"size"`
	ModifiedTime time.Time `json:"modified_time"`
	Version      string    `json:"version,omitempty"`
	Checksum     string    `json:"checksum"`
	Required     bool      `json:"required"`
	Migrate      bool      `json:"migrate"`
	Description  string    `json:"description"`
}

// CalculateChecksum computes SHA256 checksum of a file
func CalculateChecksum(filePath string) (string, error) {
	data, err := os.ReadFile(filePath)
	if err != nil {
		return "", err
	}
	hash := sha256.Sum256(data)
	return hex.EncodeToString(hash[:]), nil
}

// IsRequiredFile determines if a file is required for agent operation
func IsRequiredFile(path string) bool {
	requiredFiles := []string{
		"/etc/redflag/agent/config.json",  // Agent config in nested structure
		"/usr/local/bin/redflag-agent",
		"/etc/systemd/system/redflag-agent.service",
	}
	for _, rf := range requiredFiles {
		if path == rf {
			return true
		}
	}
	return false
}
