import fs from "fs"; import { confirm, select, input } from "@inquirer/prompts"; import { exit } from "process"; import { addProject, configPath, generateDefaultConfig, getConfiguration, getProjects, type Project, } from "./configuration/configuration"; import { execSync } from "child_process"; if (!fs.existsSync(configPath + "config.toml")) { const createConfig = await confirm({ message: "No cofig has been found. Would you like to generate a new one?", }); if (createConfig) { generateDefaultConfig(); } else { console.log( "This project can not run without the config. Either create it yourself or generate the default.", ); exit(1); } } if ( !getProjects() || getProjects().length == 0 || getProjects().length == undefined ) { const anwser = await select({ message: "Create a new Project", choices: ["Clone a project with git", "Create a new empty Project"], }); if (anwser == "Clone a project with git") { const repoUrl = await input({ message: "What is the url of the repo?" }); const wantsCustomName = await confirm({ message: "Would you like to give this project a custom name?", default: false, }); let customName = ""; if (wantsCustomName) { customName = await input({ message: "What would you like the custom name to be?", }); } execSync( "cd " + getConfiguration().projectsDirectory + " && " + getConfiguration() .cloningCommand.replace("%s", repoUrl) .replace("%n", customName), ); const newProject: Project = { name: customName, }; addProject(newProject); } else if (anwser == "Create a new empty Project") { const name = await input({ message: "What would you like to call the project?", }); fs.mkdirSync(getConfiguration().projectsDirectory + "/" + name); const newProject: Project = { name: name, }; addProject(newProject); } } console.log(getProjects());