ember-cli
Version:
Command line tool for developing ambitious ember.js apps
43 lines (33 loc) • 920 B
JavaScript
;
const Promise = require('rsvp').Promise;
const spawn = require('child_process').spawn;
function openEditor(file) {
if (!openEditor.canEdit()) {
throw new Error('EDITOR environment variable is not set');
}
if (!file) {
throw new Error('No `file` option provided');
}
let editorArgs = openEditor._env().EDITOR.split(' ');
let editor = editorArgs.shift();
let editProcess = openEditor._spawn(editor, [file].concat(editorArgs), { stdio: 'inherit' });
return new Promise((resolve, reject) => {
editProcess.on('close', code => {
if (code === 0) {
resolve();
} else {
reject();
}
});
});
}
openEditor.canEdit = function() {
return openEditor._env().EDITOR !== undefined;
};
openEditor._env = function() {
return process.env;
};
openEditor._spawn = function() {
return spawn.apply(this, arguments);
};
module.exports = openEditor;