diff --git a/script/shared/icon-utils.ts b/script/shared/icon-utils.ts new file mode 100644 index 0000000..c743440 --- /dev/null +++ b/script/shared/icon-utils.ts @@ -0,0 +1,12 @@ +export function normalizeSvgIconName(iconName?: string): string | undefined { + if (!iconName || iconName.startsWith("octicon")) { + return iconName; + } + + if (iconName.startsWith("lucide ")) { + const lucideName = iconName.slice("lucide ".length).split(".")[0].trim(); + return lucideName ? `lucide-${lucideName}` : undefined; + } + + return iconName; +} diff --git a/script/sync-ghes/index.ts b/script/sync-ghes/index.ts index 5d24914..072132d 100755 --- a/script/sync-ghes/index.ts +++ b/script/sync-ghes/index.ts @@ -3,6 +3,7 @@ import { promises as fs } from "fs"; import { safeLoad } from "js-yaml"; import { basename, extname, join } from "path"; import { exec } from "./exec"; +import { normalizeSvgIconName } from "../shared/icon-utils"; interface WorkflowDesc { folder: string; @@ -30,19 +31,6 @@ interface WorkflowsCheckResult { incompatibleWorkflows: WorkflowDesc[]; } -function normalizeSvgIconName(iconName?: string): string | undefined { - if (!iconName || iconName.startsWith("octicon")) { - return iconName; - } - - if (iconName.startsWith("lucide ")) { - const lucideName = iconName.slice("lucide ".length).split(".")[0].trim(); - return lucideName ? `lucide-${lucideName}` : undefined; - } - - return iconName; -} - async function checkWorkflows( folders: string[], enabledActions: string[], diff --git a/script/validate-data/index.ts b/script/validate-data/index.ts index 7e1d724..798d973 100755 --- a/script/validate-data/index.ts +++ b/script/validate-data/index.ts @@ -4,6 +4,7 @@ import { safeLoad } from "js-yaml"; import { basename, extname, join, dirname } from "path"; import { Validator as validator } from "jsonschema"; import { endGroup, error, info, setFailed, startGroup } from '@actions/core'; +import { normalizeSvgIconName } from '../shared/icon-utils'; interface WorkflowWithErrors { id: string; @@ -128,15 +129,7 @@ async function checkWorkflow(workflowPath: string, propertiesPath: string, allow if (properties.iconName) { if(! /^octicon\s+/.test(properties.iconName)) { - let svgIconName: string | undefined = properties.iconName - if (properties.iconName.startsWith("lucide ")) { - const lucideName = properties.iconName.slice("lucide ".length).split(".")[0].trim() - if(!lucideName) { - svgIconName = undefined - } else { - svgIconName = `lucide-${lucideName}` - } - } + const svgIconName = normalizeSvgIconName(properties.iconName); if(!svgIconName) { workflowErrors.errors.push(`No icon named ${properties.iconName} found`)