UNPKG

projecthor

Version:

Save, manage, and run project setup commands automatically from the CLI.

46 lines (45 loc) 1.57 kB
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;