mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-05 19:40:21 +00:00
refactor(shared): share entry requirements evaluation
This commit is contained in:
committed by
Shadow
parent
a5b87338e5
commit
137079fc21
@@ -1,8 +1,7 @@
|
||||
import path from "node:path";
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import type { HookEligibilityContext, HookEntry, HookInstallSpec } from "./types.js";
|
||||
import { resolveEmojiAndHomepage } from "../shared/entry-metadata.js";
|
||||
import { evaluateRequirementsFromMetadataWithRemote } from "../shared/requirements.js";
|
||||
import { evaluateEntryMetadataRequirements } from "../shared/entry-status.js";
|
||||
import { CONFIG_DIR } from "../utils.js";
|
||||
import { hasBinary, isConfigPathTruthy, resolveHookConfig } from "./config.js";
|
||||
import { loadWorkspaceHookEntries } from "./workspace.js";
|
||||
@@ -101,26 +100,19 @@ function buildHookStatus(
|
||||
const managedByPlugin = entry.hook.source === "openclaw-plugin";
|
||||
const disabled = managedByPlugin ? false : hookConfig?.enabled === false;
|
||||
const always = entry.metadata?.always === true;
|
||||
const { emoji, homepage } = resolveEmojiAndHomepage({
|
||||
metadata: entry.metadata,
|
||||
frontmatter: entry.frontmatter,
|
||||
});
|
||||
const events = entry.metadata?.events ?? [];
|
||||
|
||||
const {
|
||||
required,
|
||||
missing,
|
||||
eligible: requirementsSatisfied,
|
||||
configChecks,
|
||||
} = evaluateRequirementsFromMetadataWithRemote({
|
||||
always,
|
||||
metadata: entry.metadata,
|
||||
hasLocalBin: hasBinary,
|
||||
localPlatform: process.platform,
|
||||
remote: eligibility?.remote,
|
||||
isEnvSatisfied: (envName) => Boolean(process.env[envName] || hookConfig?.env?.[envName]),
|
||||
isConfigSatisfied: (pathStr) => isConfigPathTruthy(config, pathStr),
|
||||
});
|
||||
const { emoji, homepage, required, missing, requirementsSatisfied, configChecks } =
|
||||
evaluateEntryMetadataRequirements({
|
||||
always,
|
||||
metadata: entry.metadata,
|
||||
frontmatter: entry.frontmatter,
|
||||
hasLocalBin: hasBinary,
|
||||
localPlatform: process.platform,
|
||||
remote: eligibility?.remote,
|
||||
isEnvSatisfied: (envName) => Boolean(process.env[envName] || hookConfig?.env?.[envName]),
|
||||
isConfigSatisfied: (pathStr) => isConfigPathTruthy(config, pathStr),
|
||||
});
|
||||
|
||||
const eligible = !disabled && requirementsSatisfied;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user