projecthor
Version:
Save, manage, and run project setup commands automatically from the CLI.
46 lines (45 loc) • 1.57 kB
JavaScript
import { JSONFileSyncPreset } from 'lowdb/node';
import os from 'os';
import fs from 'fs';
import { join } from 'path';
function getDBDir() {
const dir = join(os.homedir(), '.projecthor');
if (!fs.existsSync(dir)) {
fs.mkdirSync(dir, { recursive: true });
}
return join(dir, 'projects.json');
}
const defaultProjects = { defaultFolder: '', projects: [] };
const dbDir = getDBDir();
const db = JSONFileSyncPreset(dbDir, defaultProjects);
export function saveProject(project) {
db.update(({ projects }) => projects.push(project));
db.write();
}
export function getProjects() {
return db.data.projects;
}
export function isExistingProject(projectName) {
return getProjects().some(project => project.name === projectName);
}
export function existProjectFolder(projectName) {
return fs.existsSync(getProjects().find(project => project.name === projectName).folder); // Using '!' because project must exist because of previous 'isExistingProject' check
}
export function getProjectFolder(projectName) {
return getProjects().find(project => project.name === projectName).folder;
}
export function getDefaultFolder() {
return db.data.defaultFolder;
}
export function alreadyExist(project) {
return getProjects().some(p => p.name === project.name);
}
export function setDefaultFolder(path) {
db.data.defaultFolder = path;
db.write();
}
export function deleteProject(targetProject) {
db.data.projects = db.data.projects.filter(project => project.name !== targetProject.name);
db.write();
}
export default db;