import { resolveEmojiAndHomepage } from "./entry-metadata.js"; import { evaluateRequirementsFromMetadataWithRemote, type RequirementConfigCheck, type Requirements, type RequirementsMetadata, } from "./requirements.js"; export function evaluateEntryMetadataRequirements(params: { always: boolean; metadata?: (RequirementsMetadata & { emoji?: string; homepage?: string }) | null; frontmatter?: { emoji?: string; homepage?: string; website?: string; url?: string; } | null; hasLocalBin: (bin: string) => boolean; localPlatform: string; remote?: { hasBin?: (bin: string) => boolean; hasAnyBin?: (bins: string[]) => boolean; platforms?: string[]; }; isEnvSatisfied: (envName: string) => boolean; isConfigSatisfied: (pathStr: string) => boolean; }): { emoji?: string; homepage?: string; required: Requirements; missing: Requirements; requirementsSatisfied: boolean; configChecks: RequirementConfigCheck[]; } { const { emoji, homepage } = resolveEmojiAndHomepage({ metadata: params.metadata, frontmatter: params.frontmatter, }); const { required, missing, eligible, configChecks } = evaluateRequirementsFromMetadataWithRemote({ always: params.always, metadata: params.metadata ?? undefined, hasLocalBin: params.hasLocalBin, localPlatform: params.localPlatform, remote: params.remote, isEnvSatisfied: params.isEnvSatisfied, isConfigSatisfied: params.isConfigSatisfied, }); return { ...(emoji ? { emoji } : {}), ...(homepage ? { homepage } : {}), required, missing, requirementsSatisfied: eligible, configChecks, }; }