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

@ -4,8 +4,36 @@ import * as toml from "@std/toml";
export const configPath = os.homedir() + "/.config/project-cli/";
export interface Project {
name: string;
}
export interface Configuration {
projectsDirectory: string;
cloningCommand: string;
}
export function getProjects(): Project[] {
const projectsString = fs
.readFileSync(configPath + "projects.json")
.toString();
return JSON.parse(projectsString) as Project[];
}
export function getConfiguration(): Configuration {
return toml.parse(
fs.readFileSync(configPath + "config.toml").toString(),
) as unknown as Configuration;
}
export function addProject(project: Project) {
let projects = getProjects();
if (projects.length == undefined) {
saveProjects([project]);
} else {
projects.push(project);
saveProjects(projects);
}
}
export function generateDefaultConfig() {
@ -14,10 +42,19 @@ export function generateDefaultConfig() {
const defaultConfig: Configuration = {
projectsDirectory: os.homedir() + "/projects",
cloningCommand: "git clone %s %n",
};
const configString = toml.stringify(
defaultConfig as unknown as Record<string, unknown>,
);
fs.writeFileSync(configPath + "config.toml", configString);
const projects: Project[] = [];
saveProjects(projects);
}
function saveProjects(projects: Project[]) {
const projectsString = JSON.stringify(projects);
fs.writeFileSync(configPath + "projects.json", projectsString);
}