mirror of
https://github.com/openclaw/openclaw.git
synced 2026-08-12 21:53:00 -06:00
ci(labeler): fix dead rules, cover all plugin dirs, drop vendored artifacts (#121348)
* ci(labeler): fix dead rules and cover unlabeled plugin dirs * chore: drop vendored swabble workflow and empty ActivityWidget asset catalog
This commit is contained in:
committed by
GitHub
parent
2873fbbc56
commit
3156b67708
+123
-12
@@ -44,7 +44,6 @@
|
||||
"channel: feishu":
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- "src/feishu/**"
|
||||
- "extensions/feishu/**"
|
||||
- "docs/channels/feishu.md"
|
||||
"channel: googlechat":
|
||||
@@ -306,7 +305,6 @@
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- "Dockerfile"
|
||||
- "Dockerfile.*"
|
||||
- "docker-compose.yml"
|
||||
- ".dockerignore"
|
||||
- "deploy/fly.private.toml"
|
||||
@@ -368,6 +366,10 @@
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- "extensions/llama-cpp/**"
|
||||
"extensions: active-memory":
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- "extensions/active-memory/**"
|
||||
"extensions: memory-core":
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
@@ -380,6 +382,10 @@
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- "extensions/memory-wiki/**"
|
||||
"extensions: media-understanding-core":
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- "extensions/media-understanding-core/**"
|
||||
"extensions: oc-path":
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
@@ -413,10 +419,20 @@
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- "extensions/webhooks/**"
|
||||
"extensions: web-readability":
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- "extensions/web-readability/**"
|
||||
- "docs/plugins/reference/web-readability.md"
|
||||
"extensions: device-pair":
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- "extensions/device-pair/**"
|
||||
"extensions: document-extract":
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- "extensions/document-extract/**"
|
||||
- "docs/plugins/reference/document-extract.md"
|
||||
"extensions: duckduckgo":
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
@@ -448,6 +464,12 @@
|
||||
- any-glob-to-any-file:
|
||||
- "extensions/clawrouter/**"
|
||||
- "docs/providers/clawrouter.md"
|
||||
"extensions: clickclack":
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- "extensions/clickclack/**"
|
||||
- "docs/plugins/reference/clickclack.md"
|
||||
- "docs/channels/clickclack.md"
|
||||
"extensions: crabbox":
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
@@ -456,6 +478,12 @@
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- "extensions/deepseek/**"
|
||||
"extensions: deepgram":
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- "extensions/deepgram/**"
|
||||
- "docs/providers/deepgram.md"
|
||||
- "docs/plugins/reference/deepgram.md"
|
||||
"extensions: deepinfra":
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
@@ -489,10 +517,18 @@
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- "extensions/cloudflare-ai-gateway/**"
|
||||
"extensions: minimax-portal-auth":
|
||||
"extensions: cohere":
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- "extensions/minimax-portal-auth/**"
|
||||
- "extensions/cohere/**"
|
||||
- "docs/providers/cohere.md"
|
||||
- "docs/plugins/reference/cohere.md"
|
||||
"extensions: comfy":
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- "extensions/comfy/**"
|
||||
- "docs/providers/comfy.md"
|
||||
- "docs/plugins/reference/comfy.md"
|
||||
"extensions: huggingface":
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
@@ -502,6 +538,10 @@
|
||||
- any-glob-to-any-file:
|
||||
- "extensions/inworld/**"
|
||||
- "docs/providers/inworld.md"
|
||||
"extensions: image-generation-core":
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- "extensions/image-generation-core/**"
|
||||
"extensions: fish-audio":
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
@@ -557,10 +597,6 @@
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- "extensions/minimax/**"
|
||||
"extensions: modelstudio":
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- "extensions/modelstudio/**"
|
||||
"extensions: moonshot":
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
@@ -574,14 +610,27 @@
|
||||
- any-glob-to-any-file:
|
||||
- "extensions/novita/**"
|
||||
- "docs/providers/novita.md"
|
||||
"extensions: phone-control":
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- "extensions/phone-control/**"
|
||||
"extensions: qianfan":
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- "extensions/qianfan/**"
|
||||
"extensions: qwen":
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- "extensions/qwen/**"
|
||||
- "docs/providers/qwen.md"
|
||||
- "docs/plugins/reference/qwen.md"
|
||||
"extensions: runway":
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- "extensions/runway/**"
|
||||
- "docs/providers/runway.md"
|
||||
- "docs/plugins/reference/runway.md"
|
||||
"extensions: searxng":
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- "extensions/searxng/**"
|
||||
- "docs/plugins/reference/searxng.md"
|
||||
"extensions: senseaudio":
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
@@ -616,10 +665,25 @@
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- "extensions/vercel-ai-gateway/**"
|
||||
"extensions: video-generation-core":
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- "extensions/video-generation-core/**"
|
||||
"extensions: volcengine":
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- "extensions/volcengine/**"
|
||||
"extensions: voyage":
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- "extensions/voyage/**"
|
||||
- "docs/plugins/reference/voyage.md"
|
||||
"extensions: vydra":
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- "extensions/vydra/**"
|
||||
- "docs/providers/vydra.md"
|
||||
- "docs/plugins/reference/vydra.md"
|
||||
"extensions: xiaomi":
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
@@ -632,10 +696,27 @@
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- "extensions/gradium/**"
|
||||
"extensions: groq":
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- "extensions/groq/**"
|
||||
- "docs/providers/groq.md"
|
||||
- "docs/plugins/reference/groq.md"
|
||||
"extensions: alibaba":
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- "extensions/alibaba/**"
|
||||
- "docs/providers/alibaba.md"
|
||||
- "docs/plugins/reference/alibaba.md"
|
||||
"extensions: amazon-bedrock":
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- "extensions/amazon-bedrock/**"
|
||||
"extensions: amazon-bedrock-mantle":
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- "extensions/amazon-bedrock-mantle/**"
|
||||
- "docs/plugins/reference/amazon-bedrock-mantle.md"
|
||||
"extensions: anthropic-vertex":
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
@@ -644,6 +725,16 @@
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- "extensions/brave/**"
|
||||
"extensions: browser":
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- "extensions/browser/**"
|
||||
- "docs/plugins/reference/browser.md"
|
||||
"extensions: canvas":
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- "extensions/canvas/**"
|
||||
- "docs/plugins/reference/canvas.md"
|
||||
"extensions: chutes":
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
@@ -657,10 +748,21 @@
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- "extensions/elevenlabs/**"
|
||||
"extensions: exa":
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- "extensions/exa/**"
|
||||
- "docs/plugins/reference/exa.md"
|
||||
"extensions: firecrawl":
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- "extensions/firecrawl/**"
|
||||
"extensions: fireworks":
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- "extensions/fireworks/**"
|
||||
- "docs/providers/fireworks.md"
|
||||
- "docs/plugins/reference/fireworks.md"
|
||||
"extensions: github-copilot":
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
@@ -673,6 +775,11 @@
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- "extensions/microsoft/**"
|
||||
"extensions: microsoft-foundry":
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- "extensions/microsoft-foundry/**"
|
||||
- "docs/plugins/reference/microsoft-foundry.md"
|
||||
"extensions: mistral":
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
@@ -709,6 +816,10 @@
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- "extensions/sglang/**"
|
||||
"extensions: test-support":
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- "extensions/test-support/**"
|
||||
"extensions: vllm":
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
{
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
-54
@@ -1,54 +0,0 @@
|
||||
name: CI
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
pull_request:
|
||||
|
||||
jobs:
|
||||
build-and-test:
|
||||
runs-on: macos-15
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
working-directory: swabble
|
||||
steps:
|
||||
- name: Checkout swabble
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
path: swabble
|
||||
|
||||
- name: Select Xcode 26.1 (prefer 26.1.1)
|
||||
run: |
|
||||
set -euo pipefail
|
||||
# pick the newest installed 26.1.x, fallback to newest 26.x
|
||||
CANDIDATE="$(ls -d /Applications/Xcode_26.1*.app 2>/dev/null | sort -V | tail -1 || true)"
|
||||
if [[ -z "$CANDIDATE" ]]; then
|
||||
CANDIDATE="$(ls -d /Applications/Xcode_26*.app 2>/dev/null | sort -V | tail -1 || true)"
|
||||
fi
|
||||
if [[ -z "$CANDIDATE" ]]; then
|
||||
echo "No Xcode 26.x found on runner" >&2
|
||||
exit 1
|
||||
fi
|
||||
echo "Selecting $CANDIDATE"
|
||||
sudo xcode-select -s "$CANDIDATE"
|
||||
xcodebuild -version
|
||||
|
||||
- name: Show Swift version
|
||||
run: swift --version
|
||||
|
||||
- name: Install tooling
|
||||
run: |
|
||||
brew update
|
||||
brew install swiftlint swiftformat
|
||||
|
||||
- name: Format check
|
||||
run: |
|
||||
./scripts/format.sh
|
||||
git diff --exit-code
|
||||
|
||||
- name: Lint
|
||||
run: ./scripts/lint.sh
|
||||
|
||||
- name: Test
|
||||
run: swift test --parallel
|
||||
@@ -0,0 +1,38 @@
|
||||
import { readdirSync, readFileSync } from "node:fs";
|
||||
import path from "node:path";
|
||||
import { fileURLToPath } from "node:url";
|
||||
import { describe, expect, it } from "vitest";
|
||||
import { parse } from "yaml";
|
||||
|
||||
type LabelerRule = Array<{
|
||||
"changed-files"?: Array<{
|
||||
"any-glob-to-any-file"?: string[];
|
||||
}>;
|
||||
}>;
|
||||
|
||||
const repoRoot = path.resolve(fileURLToPath(new URL("../..", import.meta.url)));
|
||||
const extensionsRoot = path.join(repoRoot, "extensions");
|
||||
const labelerPath = path.join(repoRoot, ".github/labeler.yml");
|
||||
|
||||
const extensionDirectories = readdirSync(extensionsRoot, { withFileTypes: true })
|
||||
.filter((entry) => entry.isDirectory())
|
||||
.map((entry) => entry.name)
|
||||
.sort();
|
||||
const extensionDirectorySet = new Set(extensionDirectories);
|
||||
const labeler = parse(readFileSync(labelerPath, "utf8")) as Record<string, LabelerRule>;
|
||||
const extensionGlobDirectories = Object.values(labeler)
|
||||
.flatMap((rules) => rules)
|
||||
.flatMap((rule) => rule["changed-files"] ?? [])
|
||||
.flatMap((changedFiles) => changedFiles["any-glob-to-any-file"] ?? [])
|
||||
.flatMap((glob) => glob.match(/^extensions\/([^/]+)\//)?.[1] ?? []);
|
||||
const coveredExtensionDirectories = new Set(extensionGlobDirectories);
|
||||
|
||||
describe("labeler extension coverage", () => {
|
||||
it("covers every extension directory", () => {
|
||||
expect(extensionDirectories.filter((dir) => !coveredExtensionDirectories.has(dir))).toEqual([]);
|
||||
});
|
||||
|
||||
it("references only existing extension directories", () => {
|
||||
expect(extensionGlobDirectories.filter((dir) => !extensionDirectorySet.has(dir))).toEqual([]);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user