UNPKG

repomix

Version:

A tool to pack repository contents to single file for AI consumption

31 lines (30 loc) 1.57 kB
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, }); } };