// 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!`));