package packs

import (
	_ "embed"
	"encoding/json"
	"fmt"
)

//go:embed compatibility/platform_compatibility.json
var platformCompatibilityJSON []byte

func validatePlatformCompatibilityDeclarations() error {
	if _, err := loadPlatformCompatibilityDeclarations(); err != nil {
		return fmt.Errorf("platform compatibility declarations: %w", err)
	}
	return nil
}

func loadPlatformCompatibilityDeclarations() (compatibilityDeclarationSet, error) {
	fileDecls := compatibilityDeclarationSet{}
	if err := json.Unmarshal(platformCompatibilityJSON, &fileDecls); err != nil {
		return compatibilityDeclarationSet{}, fmt.Errorf("parse platform compatibility declarations: %w", err)
	}
	systemDecls, err := compatibilityDeclarationsFromSystemTables()
	if err != nil {
		return compatibilityDeclarationSet{}, err
	}
	return mergeCompatibilityDeclarationSets(fileDecls, systemDecls)
}
