mib-cli
Version:
CLI tool to manage projects
79 lines (69 loc) • 1.45 kB
JavaScript
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;
}
}
})();