75 lines
2 KiB
TypeScript
75 lines
2 KiB
TypeScript
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());
|