spotty
Version:
Lookup the current process's TTY device
346 lines (327 loc) • 11.5 kB
JavaScript
// Generated by IcedCoffeeScript 1.8.0-c
(function() {
var TtyLookup, fs, iced, make_esc, path, stateq, tty, __iced_k, __iced_k_noop;
iced = require('iced-runtime');
__iced_k = __iced_k_noop = function() {};
fs = require('fs');
tty = require('tty');
path = require('path');
make_esc = require('iced-error').make_esc;
stateq = function(s1, s2) {
var f, _i, _len, _ref;
_ref = ['dev', 'rdev', 'ino'];
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
f = _ref[_i];
if (s1[f] !== s2[f]) {
return false;
}
}
return true;
};
TtyLookup = (function() {
function TtyLookup(_arg) {
this.fd = _arg.fd;
this.fd || (this.fd = 0);
}
TtyLookup.prototype.assert_tty = function(cb) {
var err;
err = null;
if (!tty.isatty(this.fd)) {
err = new Error("stdin is not a tty");
}
return cb(err);
};
TtyLookup.prototype.os_check = function(cb) {
var err, _ref;
err = null;
if ((_ref = process.platform) !== 'darwin' && _ref !== 'linux') {
err = new Error("can only run on Linux and OSX");
}
return cb(err);
};
TtyLookup.prototype.find_tty_in = function(_arg, cb) {
var dir, err, esc, file, files, regex, ret, ___iced_passed_deferral, __iced_deferrals, __iced_k;
__iced_k = __iced_k_noop;
___iced_passed_deferral = iced.findDeferral(arguments);
dir = _arg.dir, regex = _arg.regex;
ret = null;
esc = make_esc(cb, "find_tty_in");
(function(_this) {
return (function(__iced_k) {
__iced_deferrals = new iced.Deferrals(__iced_k, {
parent: ___iced_passed_deferral,
filename: "/Users/max/src/keybase/node-spotty/src/index.iced",
funcname: "TtyLookup.find_tty_in"
});
fs.readdir(dir, esc(__iced_deferrals.defer({
assign_fn: (function() {
return function() {
return files = arguments[0];
};
})(),
lineno: 41
})));
__iced_deferrals._fulfill();
});
})(this)((function(_this) {
return function() {
(function(__iced_k) {
var _i, _len, _ref, _results, _while;
_ref = files;
_len = _ref.length;
_i = 0;
_results = [];
_while = function(__iced_k) {
var _break, _continue, _next;
_break = function() {
return __iced_k(_results);
};
_continue = function() {
return iced.trampoline(function() {
++_i;
return _while(__iced_k);
});
};
_next = function(__iced_next_arg) {
_results.push(__iced_next_arg);
return _continue();
};
if (!(_i < _len)) {
return _break();
} else {
file = _ref[_i];
(function(__iced_k) {
if (file.match(regex)) {
(function(__iced_k) {
__iced_deferrals = new iced.Deferrals(__iced_k, {
parent: ___iced_passed_deferral,
filename: "/Users/max/src/keybase/node-spotty/src/index.iced",
funcname: "TtyLookup.find_tty_in"
});
_this.try_file({
dir: dir,
file: file
}, __iced_deferrals.defer({
assign_fn: (function() {
return function() {
err = arguments[0];
return ret = arguments[1];
};
})(),
lineno: 44
}));
__iced_deferrals._fulfill();
})(function() {
(function(__iced_k) {
if (ret != null) {
(function(__iced_k) {
_break()
})(__iced_k);
} else {
return __iced_k();
}
})(__iced_k);
});
} else {
return __iced_k();
}
})(_next);
}
};
_while(__iced_k);
})(function() {
return cb(null, ret);
});
};
})(this));
};
TtyLookup.prototype.try_file = function(_arg, cb) {
var dir, err, file, p, ret, stat, ___iced_passed_deferral, __iced_deferrals, __iced_k;
__iced_k = __iced_k_noop;
___iced_passed_deferral = iced.findDeferral(arguments);
dir = _arg.dir, file = _arg.file;
p = path.join(dir, file);
ret = null;
(function(_this) {
return (function(__iced_k) {
__iced_deferrals = new iced.Deferrals(__iced_k, {
parent: ___iced_passed_deferral,
filename: "/Users/max/src/keybase/node-spotty/src/index.iced",
funcname: "TtyLookup.try_file"
});
fs.stat(p, __iced_deferrals.defer({
assign_fn: (function() {
return function() {
err = arguments[0];
return stat = arguments[1];
};
})(),
lineno: 53
}));
__iced_deferrals._fulfill();
});
})(this)((function(_this) {
return function() {
if ((typeof err === "undefined" || err === null) && stateq(stat, _this._stat)) {
ret = p;
}
return cb(err, ret);
};
})(this));
};
TtyLookup.prototype.find_tty = function(cb) {
var err, res, ___iced_passed_deferral, __iced_deferrals, __iced_k;
__iced_k = __iced_k_noop;
___iced_passed_deferral = iced.findDeferral(arguments);
(function(_this) {
return (function(__iced_k) {
__iced_deferrals = new iced.Deferrals(__iced_k, {
parent: ___iced_passed_deferral,
filename: "/Users/max/src/keybase/node-spotty/src/index.iced",
funcname: "TtyLookup.find_tty"
});
_this.find_tty_in({
dir: "/dev",
regex: /^tty[A-Za-z0-9]+$/
}, __iced_deferrals.defer({
assign_fn: (function() {
return function() {
err = arguments[0];
return res = arguments[1];
};
})(),
lineno: 60
}));
__iced_deferrals._fulfill();
});
})(this)((function(_this) {
return function() {
(function(__iced_k) {
if (typeof res === "undefined" || res === null) {
(function(__iced_k) {
__iced_deferrals = new iced.Deferrals(__iced_k, {
parent: ___iced_passed_deferral,
filename: "/Users/max/src/keybase/node-spotty/src/index.iced",
funcname: "TtyLookup.find_tty"
});
_this.find_tty_in({
dir: "/dev/pts",
regex: /^[0-9]+$/
}, __iced_deferrals.defer({
assign_fn: (function() {
return function() {
err = arguments[0];
return res = arguments[1];
};
})(),
lineno: 62
}));
__iced_deferrals._fulfill();
})(__iced_k);
} else {
return __iced_k();
}
})(function() {
return cb(err, res);
});
};
})(this));
};
TtyLookup.prototype.stat_fd = function(cb) {
var err, ___iced_passed_deferral, __iced_deferrals, __iced_k;
__iced_k = __iced_k_noop;
___iced_passed_deferral = iced.findDeferral(arguments);
(function(_this) {
return (function(__iced_k) {
__iced_deferrals = new iced.Deferrals(__iced_k, {
parent: ___iced_passed_deferral,
filename: "/Users/max/src/keybase/node-spotty/src/index.iced",
funcname: "TtyLookup.stat_fd"
});
fs.fstat(_this.fd, __iced_deferrals.defer({
assign_fn: (function(__slot_1) {
return function() {
err = arguments[0];
return __slot_1._stat = arguments[1];
};
})(_this),
lineno: 68
}));
__iced_deferrals._fulfill();
});
})(this)((function(_this) {
return function() {
return cb(err);
};
})(this));
};
TtyLookup.prototype.run = function(cb) {
var esc, res, ___iced_passed_deferral, __iced_deferrals, __iced_k;
__iced_k = __iced_k_noop;
___iced_passed_deferral = iced.findDeferral(arguments);
esc = make_esc(cb, "TtyLookup.run");
(function(_this) {
return (function(__iced_k) {
__iced_deferrals = new iced.Deferrals(__iced_k, {
parent: ___iced_passed_deferral,
filename: "/Users/max/src/keybase/node-spotty/src/index.iced",
funcname: "TtyLookup.run"
});
_this.assert_tty(esc(__iced_deferrals.defer({
lineno: 75
})));
__iced_deferrals._fulfill();
});
})(this)((function(_this) {
return function() {
(function(__iced_k) {
__iced_deferrals = new iced.Deferrals(__iced_k, {
parent: ___iced_passed_deferral,
filename: "/Users/max/src/keybase/node-spotty/src/index.iced",
funcname: "TtyLookup.run"
});
_this.os_check(esc(__iced_deferrals.defer({
lineno: 76
})));
__iced_deferrals._fulfill();
})(function() {
(function(__iced_k) {
__iced_deferrals = new iced.Deferrals(__iced_k, {
parent: ___iced_passed_deferral,
filename: "/Users/max/src/keybase/node-spotty/src/index.iced",
funcname: "TtyLookup.run"
});
_this.stat_fd(esc(__iced_deferrals.defer({
lineno: 77
})));
__iced_deferrals._fulfill();
})(function() {
(function(__iced_k) {
__iced_deferrals = new iced.Deferrals(__iced_k, {
parent: ___iced_passed_deferral,
filename: "/Users/max/src/keybase/node-spotty/src/index.iced",
funcname: "TtyLookup.run"
});
_this.find_tty(esc(__iced_deferrals.defer({
assign_fn: (function() {
return function() {
return res = arguments[0];
};
})(),
lineno: 78
})));
__iced_deferrals._fulfill();
})(function() {
return cb(null, res);
});
});
});
};
})(this));
};
return TtyLookup;
})();
exports.tty = function(cb) {
return (new TtyLookup({})).run(cb);
};
}).call(this);