installer.js 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423
  1. // Generated by IcedCoffeeScript 1.7.1-g
  2. (function() {
  3. var BaseCommand, GPG, GetIndex, Installer, KeySetup, KeyUpgrade, SoftwareUpgrade, chain, check_node_async, colors, constants, find_and_set_cmd, fullname, iced, keyring, log, make_esc, mkdir_p, npm, path, request, __iced_k, __iced_k_noop, _ref, _ref1,
  4. __hasProp = {}.hasOwnProperty,
  5. __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };
  6. iced = require('iced-runtime');
  7. __iced_k = __iced_k_noop = function() {};
  8. BaseCommand = require('./base').BaseCommand;
  9. _ref = require('gpg-wrapper'), find_and_set_cmd = _ref.find_and_set_cmd, keyring = _ref.keyring, GPG = _ref.GPG;
  10. _ref1 = require('iced-error'), chain = _ref1.chain, make_esc = _ref1.make_esc;
  11. request = require('./request');
  12. fullname = require('./package').fullname;
  13. constants = require('./constants').constants;
  14. KeySetup = require('./key_setup').KeySetup;
  15. KeyUpgrade = require('./key_upgrade').KeyUpgrade;
  16. GetIndex = require('./get_index').GetIndex;
  17. SoftwareUpgrade = require('./software_upgrade').SoftwareUpgrade;
  18. log = require('./log');
  19. npm = require('./npm');
  20. mkdir_p = require('iced-utils').fs.mkdir_p;
  21. path = require('path');
  22. colors = require('colors');
  23. check_node_async = require('badnode').check_node_async;
  24. exports.Installer = Installer = (function(_super) {
  25. __extends(Installer, _super);
  26. function Installer(argv) {
  27. Installer.__super__.constructor.call(this, argv);
  28. }
  29. Installer.prototype.cleanup = function(cb) {
  30. var e2, ___iced_passed_deferral, __iced_deferrals, __iced_k;
  31. __iced_k = __iced_k_noop;
  32. ___iced_passed_deferral = iced.findDeferral(arguments);
  33. (function(_this) {
  34. return (function(__iced_k) {
  35. __iced_deferrals = new iced.Deferrals(__iced_k, {
  36. parent: ___iced_passed_deferral,
  37. filename: "/Users/max/src/keybase/node-installer/src/installer.iced",
  38. funcname: "Installer.cleanup"
  39. });
  40. _this.config.cleanup(__iced_deferrals.defer({
  41. assign_fn: (function() {
  42. return function() {
  43. return e2 = arguments[0];
  44. };
  45. })(),
  46. lineno: 28
  47. }));
  48. __iced_deferrals._fulfill();
  49. });
  50. })(this)((function(_this) {
  51. return function() {
  52. if (typeof e2 !== "undefined" && e2 !== null) {
  53. log.error("In cleanup: " + e2);
  54. }
  55. if ((typeof err === "undefined" || err === null) && (_this["package"] != null)) {
  56. log.info("Succesful install: " + (_this["package"].filename()));
  57. }
  58. return cb();
  59. };
  60. })(this));
  61. };
  62. Installer.prototype.make_install_dir = function(cb) {
  63. var err, made, p, ___iced_passed_deferral, __iced_deferrals, __iced_k;
  64. __iced_k = __iced_k_noop;
  65. ___iced_passed_deferral = iced.findDeferral(arguments);
  66. err = null;
  67. (function(_this) {
  68. return (function(__iced_k) {
  69. if (((p = _this.config.install_prefix()) != null) && p.length) {
  70. (function(__iced_k) {
  71. __iced_deferrals = new iced.Deferrals(__iced_k, {
  72. parent: ___iced_passed_deferral,
  73. filename: "/Users/max/src/keybase/node-installer/src/installer.iced",
  74. funcname: "Installer.make_install_dir"
  75. });
  76. mkdir_p(p, 0x1ed, __iced_deferrals.defer({
  77. assign_fn: (function() {
  78. return function() {
  79. err = arguments[0];
  80. return made = arguments[1];
  81. };
  82. })(),
  83. lineno: 39
  84. }));
  85. __iced_deferrals._fulfill();
  86. })(function() {
  87. return __iced_k((err == null) && made ? log.warn("Created install directory: " + p) : void 0);
  88. });
  89. } else {
  90. return __iced_k();
  91. }
  92. });
  93. })(this)((function(_this) {
  94. return function() {
  95. return cb(err);
  96. };
  97. })(this));
  98. };
  99. Installer.prototype.test_gpg = function(cb) {
  100. var alt, cmd, err, lines, version, ___iced_passed_deferral, __iced_deferrals, __iced_k;
  101. __iced_k = __iced_k_noop;
  102. ___iced_passed_deferral = iced.findDeferral(arguments);
  103. alt = this.config.set_alt_gpg();
  104. log.debug("+ Installer::test_gpg");
  105. (function(_this) {
  106. return (function(__iced_k) {
  107. __iced_deferrals = new iced.Deferrals(__iced_k, {
  108. parent: ___iced_passed_deferral,
  109. filename: "/Users/max/src/keybase/node-installer/src/installer.iced",
  110. funcname: "Installer.test_gpg"
  111. });
  112. find_and_set_cmd(alt, __iced_deferrals.defer({
  113. assign_fn: (function() {
  114. return function() {
  115. err = arguments[0];
  116. version = arguments[1];
  117. return cmd = arguments[2];
  118. };
  119. })(),
  120. lineno: 49
  121. }));
  122. __iced_deferrals._fulfill();
  123. });
  124. })(this)((function(_this) {
  125. return function() {
  126. if (typeof err !== "undefined" && err !== null) {
  127. lines = [];
  128. if (alt != null) {
  129. lines.push("The GPG command you specified `" + alt + "` wasn't found; see this page for help installing `gpg`:");
  130. } else {
  131. lines.push("The commands `gpg2` and `gpg` weren't found; you need to install it. See this page for more info:");
  132. }
  133. lines.push("\t https://keybase.io/docs/command_line/prerequisites");
  134. err = new Error(lines.join("\n"));
  135. } else {
  136. log.debug("| Found '" + cmd + "' @ " + version);
  137. }
  138. log.debug("- Installer::test_gpg -> " + (err != null ? 'FAILED' : 'OK'));
  139. return cb(err);
  140. };
  141. })(this));
  142. };
  143. Installer.prototype.test_npm = function(cb) {
  144. var c, cmd, err, ___iced_passed_deferral, __iced_deferrals, __iced_k;
  145. __iced_k = __iced_k_noop;
  146. ___iced_passed_deferral = iced.findDeferral(arguments);
  147. cmd = this.config.get_cmd('npm');
  148. log.debug("+ Installer::test_npm");
  149. (function(_this) {
  150. return (function(__iced_k) {
  151. __iced_deferrals = new iced.Deferrals(__iced_k, {
  152. parent: ___iced_passed_deferral,
  153. filename: "/Users/max/src/keybase/node-installer/src/installer.iced",
  154. funcname: "Installer.test_npm"
  155. });
  156. npm.check(__iced_deferrals.defer({
  157. assign_fn: (function() {
  158. return function() {
  159. return err = arguments[0];
  160. };
  161. })(),
  162. lineno: 74
  163. }));
  164. __iced_deferrals._fulfill();
  165. });
  166. })(this)((function(_this) {
  167. return function() {
  168. if (typeof err === "undefined" || err === null) {
  169. } else if ((c = _this.config.get_alt_cmd('npm')) != null) {
  170. err = new Error("The npm command you specified `" + c + "` wasn't found");
  171. } else {
  172. err = new Error("Couldn't find an `npm` command in your path");
  173. }
  174. log.debug("- Installer::test_npm -> " + (err != null ? 'FAILED' : 'OK'));
  175. return cb(err);
  176. };
  177. })(this));
  178. };
  179. Installer.prototype.test_npm_install = function(cb) {
  180. var err, ___iced_passed_deferral, __iced_deferrals, __iced_k;
  181. __iced_k = __iced_k_noop;
  182. ___iced_passed_deferral = iced.findDeferral(arguments);
  183. (function(_this) {
  184. return (function(__iced_k) {
  185. __iced_deferrals = new iced.Deferrals(__iced_k, {
  186. parent: ___iced_passed_deferral,
  187. filename: "/Users/max/src/keybase/node-installer/src/installer.iced",
  188. funcname: "Installer.test_npm_install"
  189. });
  190. npm.test_install(__iced_deferrals.defer({
  191. assign_fn: (function(__slot_1) {
  192. return function() {
  193. err = arguments[0];
  194. return __slot_1._install_prefix = arguments[1];
  195. };
  196. })(_this),
  197. lineno: 86
  198. }));
  199. __iced_deferrals._fulfill();
  200. });
  201. })(this)((function(_this) {
  202. return function() {
  203. return cb(err);
  204. };
  205. })(this));
  206. };
  207. Installer.prototype.welcome_message = function(cb) {
  208. var cmd, dir;
  209. dir = path.join(this._install_prefix, "bin");
  210. cmd = path.join(dir, "keybase");
  211. console.log("=====================================================================\n\nWelcome to keybase.io!\n\nYou have successfully installed the command-line client to\n\n====> " + (colors.bold(cmd)) + " <=======\n\nPlease make sure " + (colors.bold(dir)) + " is in your PATH.\n\nIf you're new to the service run:\n\n $ keybase signup # signup for a new account\n $ keybase push # to push your public key to the server\n -- or --\n $ keybase gen # generate a new key and push it\n\nIf you already signed up via the Web or another keybase client, try:\n\n $ keybase login # establish a session with the server, and pull down keys\n\nOnce you're configured, you can:\n\n $ keybase prove twitter # prove your twitter identity\n $ keybase id max # to identify a friend\n $ keybase track max # to track them and write a proof to the server\n\nAnd then attempt crypto actions like enc/dec/verify/sign. See `keybase --help` for\nmore details.\n");
  212. return cb(null);
  213. };
  214. Installer.prototype.run = function(cb) {
  215. var esc, ___iced_passed_deferral, __iced_deferrals, __iced_k;
  216. __iced_k = __iced_k_noop;
  217. ___iced_passed_deferral = iced.findDeferral(arguments);
  218. log.debug("+ Installer::run");
  219. cb = chain(cb, this.cleanup.bind(this));
  220. esc = make_esc(cb, "Installer::run");
  221. (function(_this) {
  222. return (function(__iced_k) {
  223. __iced_deferrals = new iced.Deferrals(__iced_k, {
  224. parent: ___iced_passed_deferral,
  225. filename: "/Users/max/src/keybase/node-installer/src/installer.iced",
  226. funcname: "Installer.run"
  227. });
  228. check_node_async(null, esc(__iced_deferrals.defer({
  229. lineno: 135
  230. })));
  231. __iced_deferrals._fulfill();
  232. });
  233. })(this)((function(_this) {
  234. return function() {
  235. (function(__iced_k) {
  236. __iced_deferrals = new iced.Deferrals(__iced_k, {
  237. parent: ___iced_passed_deferral,
  238. filename: "/Users/max/src/keybase/node-installer/src/installer.iced",
  239. funcname: "Installer.run"
  240. });
  241. _this.test_gpg(esc(__iced_deferrals.defer({
  242. lineno: 136
  243. })));
  244. __iced_deferrals._fulfill();
  245. })(function() {
  246. _this.config.set_alt_npm();
  247. npm.set_config(_this.config);
  248. (function(__iced_k) {
  249. __iced_deferrals = new iced.Deferrals(__iced_k, {
  250. parent: ___iced_passed_deferral,
  251. filename: "/Users/max/src/keybase/node-installer/src/installer.iced",
  252. funcname: "Installer.run"
  253. });
  254. _this.make_install_dir(esc(__iced_deferrals.defer({
  255. lineno: 141
  256. })));
  257. __iced_deferrals._fulfill();
  258. })(function() {
  259. (function(__iced_k) {
  260. __iced_deferrals = new iced.Deferrals(__iced_k, {
  261. parent: ___iced_passed_deferral,
  262. filename: "/Users/max/src/keybase/node-installer/src/installer.iced",
  263. funcname: "Installer.run"
  264. });
  265. _this.test_npm(esc(__iced_deferrals.defer({
  266. lineno: 142
  267. })));
  268. __iced_deferrals._fulfill();
  269. })(function() {
  270. (function(__iced_k) {
  271. __iced_deferrals = new iced.Deferrals(__iced_k, {
  272. parent: ___iced_passed_deferral,
  273. filename: "/Users/max/src/keybase/node-installer/src/installer.iced",
  274. funcname: "Installer.run"
  275. });
  276. _this.test_npm_install(esc(__iced_deferrals.defer({
  277. lineno: 143
  278. })));
  279. __iced_deferrals._fulfill();
  280. })(function() {
  281. _this.config.set_actual_prefix(_this._install_prefix);
  282. (function(__iced_k) {
  283. __iced_deferrals = new iced.Deferrals(__iced_k, {
  284. parent: ___iced_passed_deferral,
  285. filename: "/Users/max/src/keybase/node-installer/src/installer.iced",
  286. funcname: "Installer.run"
  287. });
  288. _this.config.make_tmpdir(esc(__iced_deferrals.defer({
  289. lineno: 147
  290. })));
  291. __iced_deferrals._fulfill();
  292. })(function() {
  293. (function(__iced_k) {
  294. __iced_deferrals = new iced.Deferrals(__iced_k, {
  295. parent: ___iced_passed_deferral,
  296. filename: "/Users/max/src/keybase/node-installer/src/installer.iced",
  297. funcname: "Installer.run"
  298. });
  299. _this.config.init_keyring(esc(__iced_deferrals.defer({
  300. lineno: 148
  301. })));
  302. __iced_deferrals._fulfill();
  303. })(function() {
  304. (function(__iced_k) {
  305. __iced_deferrals = new iced.Deferrals(__iced_k, {
  306. parent: ___iced_passed_deferral,
  307. filename: "/Users/max/src/keybase/node-installer/src/installer.iced",
  308. funcname: "Installer.run"
  309. });
  310. _this.key_setup(esc(__iced_deferrals.defer({
  311. lineno: 149
  312. })));
  313. __iced_deferrals._fulfill();
  314. })(function() {
  315. (function(__iced_k) {
  316. __iced_deferrals = new iced.Deferrals(__iced_k, {
  317. parent: ___iced_passed_deferral,
  318. filename: "/Users/max/src/keybase/node-installer/src/installer.iced",
  319. funcname: "Installer.run"
  320. });
  321. _this.get_index(esc(__iced_deferrals.defer({
  322. lineno: 150
  323. })));
  324. __iced_deferrals._fulfill();
  325. })(function() {
  326. (function(__iced_k) {
  327. __iced_deferrals = new iced.Deferrals(__iced_k, {
  328. parent: ___iced_passed_deferral,
  329. filename: "/Users/max/src/keybase/node-installer/src/installer.iced",
  330. funcname: "Installer.run"
  331. });
  332. _this.key_upgrade(esc(__iced_deferrals.defer({
  333. lineno: 151
  334. })));
  335. __iced_deferrals._fulfill();
  336. })(function() {
  337. (function(__iced_k) {
  338. __iced_deferrals = new iced.Deferrals(__iced_k, {
  339. parent: ___iced_passed_deferral,
  340. filename: "/Users/max/src/keybase/node-installer/src/installer.iced",
  341. funcname: "Installer.run"
  342. });
  343. _this.software_upgrade(esc(__iced_deferrals.defer({
  344. lineno: 152
  345. })));
  346. __iced_deferrals._fulfill();
  347. })(function() {
  348. (function(__iced_k) {
  349. __iced_deferrals = new iced.Deferrals(__iced_k, {
  350. parent: ___iced_passed_deferral,
  351. filename: "/Users/max/src/keybase/node-installer/src/installer.iced",
  352. funcname: "Installer.run"
  353. });
  354. _this.welcome_message(esc(__iced_deferrals.defer({
  355. lineno: 153
  356. })));
  357. __iced_deferrals._fulfill();
  358. })(function() {
  359. log.debug("- Installer::run");
  360. return cb(null);
  361. });
  362. });
  363. });
  364. });
  365. });
  366. });
  367. });
  368. });
  369. });
  370. });
  371. });
  372. };
  373. })(this));
  374. };
  375. Installer.prototype.key_setup = function(cb) {
  376. return (new KeySetup(this.config)).run(cb);
  377. };
  378. Installer.prototype.get_index = function(cb) {
  379. return (new GetIndex(this.config)).run(cb);
  380. };
  381. Installer.prototype.key_upgrade = function(cb) {
  382. return (new KeyUpgrade(this.config)).run(cb);
  383. };
  384. Installer.prototype.software_upgrade = function(cb) {
  385. return (new SoftwareUpgrade(this.config)).run(cb);
  386. };
  387. return Installer;
  388. })(BaseCommand);
  389. }).call(this);