| // Copyright 2016 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| var pty = require("pty.js"); |
| |
| function Terminal(notify) |
| { |
| this._notify = notify; |
| } |
| |
| Terminal.prototype = { |
| init: function(params) |
| { |
| this._term = pty.spawn(process.platform === "win32" ? "cmd.exe" : "bash", [], { |
| name: "xterm-color", |
| cols: params.cols || 80, |
| rows: params.rows || 24, |
| cwd: process.env.PWD, |
| env: process.env |
| }); |
| |
| this._term.on("data", data => { |
| if (this._notify) |
| this._notify("data", { data: data }); |
| }); |
| return Promise.resolve({}); |
| }, |
| |
| resize: function(params) |
| { |
| if (this._term) |
| this._term.resize(params.cols, params.rows); |
| return Promise.resolve({}); |
| }, |
| |
| write: function(params) |
| { |
| this._term.write(params.data); |
| return Promise.resolve({}); |
| }, |
| |
| dispose: function(params) |
| { |
| this._notify = null; |
| if (this._term) |
| process.kill(this._term.pid); |
| return Promise.resolve({}); |
| }, |
| } |
| |
| exports.Terminal = Terminal; |