mirror of
https://github.com/openclaw/openclaw.git
synced 2026-04-18 10:47:27 +00:00
refactor(status): share emoji/homepage resolver
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
import path from "node:path";
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import { resolveEmojiAndHomepage } from "../shared/entry-metadata.js";
|
||||
import { evaluateRequirementsFromMetadata } from "../shared/requirements.js";
|
||||
import { CONFIG_DIR } from "../utils.js";
|
||||
import {
|
||||
@@ -183,13 +184,10 @@ function buildSkillStatus(
|
||||
const allowBundled = resolveBundledAllowlist(config);
|
||||
const blockedByAllowlist = !isBundledSkillAllowed(entry, allowBundled);
|
||||
const always = entry.metadata?.always === true;
|
||||
const emoji = entry.metadata?.emoji ?? entry.frontmatter.emoji;
|
||||
const homepageRaw =
|
||||
entry.metadata?.homepage ??
|
||||
entry.frontmatter.homepage ??
|
||||
entry.frontmatter.website ??
|
||||
entry.frontmatter.url;
|
||||
const homepage = homepageRaw?.trim() ? homepageRaw.trim() : undefined;
|
||||
const { emoji, homepage } = resolveEmojiAndHomepage({
|
||||
metadata: entry.metadata,
|
||||
frontmatter: entry.frontmatter,
|
||||
});
|
||||
const bundled =
|
||||
bundledNames && bundledNames.size > 0
|
||||
? bundledNames.has(entry.skill.name)
|
||||
|
||||
@@ -1,6 +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 { evaluateRequirementsFromMetadata } from "../shared/requirements.js";
|
||||
import { CONFIG_DIR } from "../utils.js";
|
||||
import { hasBinary, isConfigPathTruthy, resolveHookConfig } from "./config.js";
|
||||
@@ -100,13 +101,10 @@ function buildHookStatus(
|
||||
const managedByPlugin = entry.hook.source === "openclaw-plugin";
|
||||
const disabled = managedByPlugin ? false : hookConfig?.enabled === false;
|
||||
const always = entry.metadata?.always === true;
|
||||
const emoji = entry.metadata?.emoji ?? entry.frontmatter.emoji;
|
||||
const homepageRaw =
|
||||
entry.metadata?.homepage ??
|
||||
entry.frontmatter.homepage ??
|
||||
entry.frontmatter.website ??
|
||||
entry.frontmatter.url;
|
||||
const homepage = homepageRaw?.trim() ? homepageRaw.trim() : undefined;
|
||||
const { emoji, homepage } = resolveEmojiAndHomepage({
|
||||
metadata: entry.metadata,
|
||||
frontmatter: entry.frontmatter,
|
||||
});
|
||||
const events = entry.metadata?.events ?? [];
|
||||
|
||||
const {
|
||||
|
||||
18
src/shared/entry-metadata.ts
Normal file
18
src/shared/entry-metadata.ts
Normal file
@@ -0,0 +1,18 @@
|
||||
export function resolveEmojiAndHomepage(params: {
|
||||
metadata?: { emoji?: string; homepage?: string } | null;
|
||||
frontmatter?: {
|
||||
emoji?: string;
|
||||
homepage?: string;
|
||||
website?: string;
|
||||
url?: string;
|
||||
} | null;
|
||||
}): { emoji?: string; homepage?: string } {
|
||||
const emoji = params.metadata?.emoji ?? params.frontmatter?.emoji;
|
||||
const homepageRaw =
|
||||
params.metadata?.homepage ??
|
||||
params.frontmatter?.homepage ??
|
||||
params.frontmatter?.website ??
|
||||
params.frontmatter?.url;
|
||||
const homepage = homepageRaw?.trim() ? homepageRaw.trim() : undefined;
|
||||
return { ...(emoji ? { emoji } : {}), ...(homepage ? { homepage } : {}) };
|
||||
}
|
||||
Reference in New Issue
Block a user