You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

96 lines
2.4 KiB
JavaScript

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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}`);