c9-core/plugins/c9.cli.open/restart.js

114 wiersze
3.4 KiB
JavaScript
Czysty Zwykły widok Historia

2015-02-10 19:41:24 +00:00
define(function(require, exports, module) {
main.consumes = ["Plugin", "cli_commands", "proc"];
main.provides = ["restart"];
return main;
function main(options, imports, register) {
var Plugin = imports.Plugin;
var cmd = imports.cli_commands;
var proc = imports.proc;
var fs = require("fs");
var PATH = require("path");
/***** Initialization *****/
var plugin = new Plugin("Ajax.org", main.consumes);
// var emit = plugin.getEmitter();
var loaded;
function load(){
if (loaded) return;
loaded = true;
cmd.addCommand({
name: "restart",
info: " Restarts the currently running Cloud9",
options: {},
exec: function(argv) {
restart(function(err, success) {
console.log(err || success);
process.exit();
});
}
});
}
/***** Methods *****/
function restart(callback) {
if (options.platform == "darwin") {
fs.readFile(process.env.HOME + "/.c9/pid", function(err, data) {
if (err) return callback("Cloud9 is Not Running");
data = String(data).split(":");
var pid = data[0];
var path = data[1];
// Kill existing process
proc.execFile("kill", {
args: ["-9", pid]
}, function(err, stdout, stderr) {
if (err)
return callback("Could not kill Cloud9");
// Start new process
proc.spawn("open", {
args: ["-b", "io.c9.desktop", "--args", "-w", path],
detached: true
}, function(err, child) {
if (err)
return callback(false);
// required so the parent can exit
child.unref && child.unref();
callback(null, "Restarted Cloud9");
});
});
});
}
else if (options.platform == "linux") {
}
else if (options.platform == "windows") {
}
else {
callback(false);
}
}
/***** Lifecycle *****/
plugin.on("load", function(){
load();
});
plugin.on("enable", function(){
});
plugin.on("disable", function(){
});
plugin.on("unload", function(){
loaded = false;
});
/***** Register and define API *****/
/**
* Finds or lists files and/or lines based on their filename or contents
**/
plugin.freezePublicAPI({
/**
*
*/
restart: restart
});
register(null, {
restart: plugin
});
}
});