import fs from "fs"; import path from "path"; const defaultPath = "./lib/"; const componentFolderPath = process.argv[3] ? process.argv[3] : defaultPath; const componentName = process.argv[2]; if (!componentName) { console.error("Please provide a module name."); process.exit(1); } const folderPath = path.join(componentFolderPath, componentName); const componentFilePath = path.join(folderPath, `${componentName}.ts`); const testFile = path.join(folderPath, `${componentName}.test.ts`); const readmeFile = path.join(folderPath, `readme.md`); const indexPath = path.join(folderPath, "index.ts"); if (!fs.existsSync(folderPath)) { fs.mkdirSync(folderPath, { recursive: true }); } const componentContent = `export function ${componentName}() { //your code here }; `; fs.writeFileSync(componentFilePath, componentContent); const testContent = `import { describe, it, expect } from "vitest"; import { ${componentName} } from "./${componentName}.ts"; describe("${componentName}", () => { let sortedArray = [-12, 1, 4, 6, 22]; it("${componentName}", () => { expect(${componentName}(sortedArray, 4)).toBe(2); }); it("${componentName}", () => { expect(${componentName}(sortedArray, 3)).toBe(-1); }); }); `; fs.writeFileSync(testFile, testContent); const indexContent = `import { ${componentName} } from "./${componentName}"; export default ${componentName}; `; fs.writeFileSync(indexPath, indexContent); const readmeContent = `# ${componentName} ## описание задачи ## тест кейсы ## текстовое описание решения ## ассимптотическая оценка | Description | Estimation | | ----------- | ---------- | | time: | O(n) | | mem: | O(n) | ## time | Description | Time | | ------------------------------------------- | ----- | | анализ и сбор информации | 00:00 | | обдумываение решения и формулировка решения | 00:00 | | имплементация | 00:00 | | исправление ошибок | 00:00 | | полное время затраченое на решение | 00:00 | ## журнал ошибок ## code ### typescript ts `; fs.writeFileSync(readmeFile, readmeContent); console.log(`Component ${componentName} created successfully at ${folderPath}`);