repomix
Version:
A tool to pack repository contents to single file for AI consumption
31 lines (30 loc) • 1.57 kB
JavaScript
import fs from 'node:fs/promises';
import path from 'node:path';
import { RepomixError } from '../../shared/errorHandle.js';
export const writeSkillOutput = async (output, skillDir, deps = {
mkdir: fs.mkdir,
writeFile: fs.writeFile,
}) => {
const referencesDir = path.join(skillDir, 'references');
try {
await deps.mkdir(referencesDir, { recursive: true });
const skillMdPath = path.join(skillDir, 'SKILL.md');
await deps.writeFile(skillMdPath, output.skillMd, 'utf-8');
await deps.writeFile(path.join(referencesDir, 'summary.md'), output.references.summary, 'utf-8');
await deps.writeFile(path.join(referencesDir, 'project-structure.md'), output.references.structure, 'utf-8');
await deps.writeFile(path.join(referencesDir, 'files.md'), output.references.files, 'utf-8');
if (output.references.techStack) {
await deps.writeFile(path.join(referencesDir, 'tech-stacks.md'), output.references.techStack, 'utf-8');
}
return skillDir;
}
catch (error) {
const nodeError = error;
if (nodeError.code === 'EPERM' || nodeError.code === 'EACCES') {
throw new RepomixError(`Failed to write skill output to ${skillDir}: Permission denied. Please check directory permissions.`, { cause: error instanceof Error ? error : undefined });
}
throw new RepomixError(`Failed to write skill output: ${error instanceof Error ? error.message : String(error)}`, {
cause: error instanceof Error ? error : undefined,
});
}
};