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

