UNPKG

mib-cli

Version:

CLI tool to manage projects

79 lines (69 loc) 1.45 kB
const util = require('util'); const delimiter = require('./delimiter'); const config = require('./config'); const NAME = 'mib-projects'; /* * projects : { name : {url, path} } * */ module.exports = (function() { let self = this; let cache = { cwd: process.cwd(), } function getRaw() { let json = self.storage.getItem(NAME); return json ? JSON.parse(json) : {}; }; function get(project) { let projects = getRaw(); return projects[project]; }; function save(projects) { self.storage.setItem(NAME, JSON.stringify(projects)); }; return { getRaw, get, exists(project) { let projects = getRaw(); return projects.hasOwnProperty(project); }, getNames() { let projects = getRaw(); return Object.keys(projects); }, go(project) { if(project) { let target = get(project); if(target) { cache.cwd = config.cwd(); process.chdir(target.path); delimiter.refresh(); } else { self.vorpal.log(self.chalk.red(project + ' doesn\'t exist !')); } } }, back() { process.chdir(cache.cwd); delimiter.refresh(); }, push(project) { let projects = getRaw(); projects[project.name] = project; save(projects); return true; }, remove(name) { let projects = getRaw(); delete projects[name]; save(projects); }, setVorpal(vorpal) { self.vorpal = vorpal; self.storage = vorpal.localStorage; self.chalk = vorpal.chalk; } } })();