// Name: Combine Draft Design Files // Description: Combine specific markdown files into a draft design file // Author: User import '@johnlindquist/kit' import path from 'path'let droppedFiles = await drop({ placeholder: 'Drop files to combine' }) if (!droppedFiles || droppedFiles.length === 0) { exit() } interface FileGroup { baseName: string files: string[] } const fileGroups: FileGroup[] = []; const baseNameMap: Map<string, FileGroup> = new Map(); for (const droppedFile of droppedFiles) { const filePath = droppedFile.path; const parsedPath = path.parse(filePath); const baseName = parsedPath.name.replace(/-[^-]+$/, ''); // Remove last dash and following part if (!baseNameMap.has(baseName)) { const newGroup: FileGroup = { baseName, files: [], }; fileGroups.push(newGroup); baseNameMap.set(baseName, newGroup); } baseNameMap.get(baseName)?.files.push(filePath); } for (const group of fileGroups) { const { baseName, files } = group; let combinedContent = ''; const targetFiles = [ '01-tip-ideas.md', '03-supportive-information.md', '05-part-task-practice.md', '06-ubd-1-1.md', ]; for (const targetFile of targetFiles) { const fileToRead = files.find(file => path.basename(file) === `${baseName}-${targetFile}`); if (fileToRead) { const content = await readFile(fileToRead, 'utf-8'); combinedContent += `---\n# ${path.basename(fileToRead)}\n---\n` + content + '\n\n'; } } if (combinedContent) { const outputFilePath = path.join(path.dirname(files[0]), `${baseName}-draft-design.md`); await writeFile(outputFilePath, combinedContent.trim()); console.log(`Combined file created: ${outputFilePath}`); } } await div(md(`Draft design files combined successfully!`));