mirror of
https://github.com/pbakaus/impeccable.git
synced 2026-09-11 21:57:14 +03:00
Add a first-class OpenCode command bridge across builds, installs, updates, linked installs, and pinned shortcuts. Preserve current provider behavior while backfilling missing or drifted command files.\n\nAI assistance: contributor and maintainer work used AI tools as disclosed in the PR discussion and commits.
28 lines
1.1 KiB
JavaScript
28 lines
1.1 KiB
JavaScript
/**
|
|
* Mirror generated provider command files (e.g. OpenCode's
|
|
* commands/impeccable.md) from dist/ into the tracked root harness folders.
|
|
* Without this, the release sync ships skills/agents/hooks but no slash
|
|
* command bridge, so direct GitHub, npx-skills, and submodule installs of
|
|
* OpenCode stay bridge-less (#483). Per-entry copy like the skills sync:
|
|
* the destination directory is never removed, so repo-local or pinned
|
|
* command files are preserved.
|
|
*/
|
|
import fs from 'node:fs';
|
|
import path from 'node:path';
|
|
|
|
export function syncRootCommands(distDir, rootDir, providers) {
|
|
const synced = [];
|
|
for (const { provider, configDir } of providers) {
|
|
const src = path.join(distDir, provider, configDir, 'commands');
|
|
if (!fs.existsSync(src)) continue;
|
|
const dest = path.join(rootDir, configDir, 'commands');
|
|
fs.mkdirSync(dest, { recursive: true });
|
|
for (const entry of fs.readdirSync(src, { withFileTypes: true })) {
|
|
if (!entry.isFile()) continue;
|
|
fs.copyFileSync(path.join(src, entry.name), path.join(dest, entry.name));
|
|
}
|
|
synced.push(configDir);
|
|
}
|
|
return synced;
|
|
}
|