import inquirer from 'inquirer' import { Languages } from './Languages/LanguageHandler' import { ProblemSet } from './CodeforcesScraper' import CreateProblemFile from './CreateProblemFile' import CreateExampleFiles from './CreateExampleFiles' export default async function(): Promise { const responses = await inquirer.prompt([ { name: "problemSetId", type: "number", message: "Problem Set ID" }, { name: "language", type: "list", message: "Select a programming language", choices() { return Object.keys(Languages) } }, { name: "writeHeaderComments", type: "confirm", message: "Write header comments?", default: true }, { name: "generateTemplate", type: "confirm", message: "Generate template?", default: true, when(responses) { return Languages[responses.language].template !== null } }, { name: "fetchExamples", type: "confirm", message: "Fetch example inputs and outputs?", default: true } ]) const { problemSetId, language, writeHeaderComments, generateTemplate } = responses const selectedLanguage = Languages[language] const optionalResponses: { [key: string]: any } = await inquirer.prompt( selectedLanguage.getOptions(responses) ) const problemSet = new ProblemSet(problemSetId) await problemSet.fetchProblems() await problemSet.fetchAllExamples() for(const problem of problemSet.problems) { await CreateExampleFiles(problem) await CreateProblemFile(problem, selectedLanguage, writeHeaderComments, generateTemplate) } selectedLanguage.handleOptions(problemSet, optionalResponses) }