feat: Add basic project creation
All checks were successful
Release / Release (push) Successful in 32s

This commit is contained in:
Jan K9f 2025-06-19 13:48:36 +02:00
commit fb23f6fd8b
Signed by: jank
GPG key ID: 22BEAC760B3333D6
2 changed files with 90 additions and 1 deletions

View file

@ -1,10 +1,15 @@
import fs from "fs";
import { confirm } from "@inquirer/prompts";
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({
@ -21,3 +26,50 @@ if (!fs.existsSync(configPath + "config.toml")) {
}
}
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());