UNPKG

hirse.ungit

Version:

Run and view Ungit in Brackets. Ungit is a "Clean and intuitive UI that makes it easy to understand git." Requires Git and npm to be installed, works together with Brackets-Git.

109 lines (96 loc) 2.86 kB
/* eslint-env node */ "use strict"; var DOMAIN_NAME = "hirseUngit"; var isWin = /^win/.test(process.platform); var childProcess = require("child_process"); var _domainManager; var child; function start() { var args = ["--no-b", "--maxNAutoRestartOnCrash=0", "--ungitVersionCheckOverride"]; child = childProcess.fork("node_modules/ungit/bin/ungit", args, { cwd: __dirname, silent: true }); child.stdout.on("data", function (buffer) { _domainManager.emitEvent(DOMAIN_NAME, "out", buffer.toString()); }); child.stderr.on("data", function (buffer) { _domainManager.emitEvent(DOMAIN_NAME, "stderr", buffer.toString()); }); child.on("error", function (code) { _domainManager.emitEvent(DOMAIN_NAME, "error", code); }); child.on("close", function (code) { child = null; _domainManager.emitEvent(DOMAIN_NAME, "close", code); }); } function kill() { if (child) { if (isWin) { childProcess.spawn("taskkill", ["/pid", child.pid, "/t", "/f"]); } else { child.kill(); } } } function init(domainManager) { _domainManager = domainManager; if (!domainManager.hasDomain(DOMAIN_NAME)) { domainManager.registerDomain(DOMAIN_NAME, { major: 0, minor: 1 }); } domainManager.registerCommand( DOMAIN_NAME, // domain name "start", // command name start, // command handler function false, // this command is synchronous in Node "Starts the ungit process" ); domainManager.registerCommand( DOMAIN_NAME, // domain name "kill", // command name kill, // command handler function false, // this command is synchronous in Node "Kills the ungit process" ); domainManager.registerEvent( DOMAIN_NAME, // domain name "out", // event name [{ name: "mesage", type: "string", description: "Message body" }] ); domainManager.registerEvent( DOMAIN_NAME, // domain name "stderr", // event name [{ name: "mesage", type: "string", description: "message body" }] ); domainManager.registerEvent( DOMAIN_NAME, // domain name "error", // event name [{ name: "code", type: "string", description: "Exit code" }] ); domainManager.registerEvent( DOMAIN_NAME, // domain name "close", // event name [{ name: "code", type: "string", description: "Exit code" }] ); } exports.init = init;