UNPKG

4.65 kBJavaScriptView Raw
1#!/usr/bin/env node
2'use strict';
3Object.defineProperty(exports, "__esModule", { value: true });
4var cp = require("child_process");
5var fs = require("fs");
6var path = require("path");
7var async = require("async");
8var cwd = process.cwd();
9var userHomeDir = path.resolve(process.env.HOME);
10var sumanHome = path.resolve(userHomeDir + '/.suman');
11var findSumanExec = path.resolve(sumanHome + '/find-local-suman-executable.js');
12var sumanClis = path.resolve(sumanHome + '/suman-clis.sh');
13var sumanGlobalConfig = path.resolve(sumanHome + '/suman.global.conf.json');
14var sumanCompletion = path.resolve(sumanHome + '/suman-completion.sh');
15var findProjectRootDest = path.resolve(sumanHome + '/find-project-root.js');
16var sumanDebugLog = path.resolve(sumanHome + '/logs/suman-postinstall-debug.log');
17var dbPath = path.resolve(sumanHome + '/database/exec_db');
18var createTables = path.resolve(__dirname + '/create-tables.sh');
19var queue = path.resolve(process.env.HOME + '/.suman/install-queue.txt');
20var logInfo = function () {
21 var args = [];
22 for (var _i = 0; _i < arguments.length; _i++) {
23 args[_i] = arguments[_i];
24 }
25 var data = Array.from(args).join(' ');
26 try {
27 fs.appendFileSync(sumanDebugLog, data);
28 }
29 catch (err) {
30 console.error(err.message || err);
31 }
32};
33logInfo(' => In Suman postinstall script, cwd => ', cwd);
34logInfo(' => In Suman postinstall script => ', __filename);
35logInfo(' => Suman home dir path => ', sumanHome);
36logInfo(' => Suman post-install script run on ' + new Date() + ', from directory (cwd) =>');
37logInfo(cwd);
38var runDatabaseInstalls = function (err) {
39 var logerr = false;
40 if (err) {
41 logInfo(' => Suman post-install initial routine experienced an error =>');
42 logInfo(String(err.stack || err));
43 }
44 var n = cp.spawn('bash', [createTables], {
45 env: Object.assign({}, process.env, {
46 SUMAN_DATABASE_PATH: dbPath
47 })
48 });
49 n.stderr.setEncoding('utf8');
50 n.stderr.on('data', logInfo);
51 n.stderr.pipe(process.stderr);
52 n.once('close', function (code) {
53 n.unref();
54 if (code > 0) {
55 console.error(' => Suman SQLite routine completed with a non-zero exit code.');
56 }
57 try {
58 if (fs.existsSync(sumanHome)) {
59 }
60 else {
61 console.error(' => Warning => ~/.suman dir does not exist!');
62 }
63 }
64 catch (err) {
65 console.error(err.stack || err);
66 }
67 finally {
68 process.exit(0);
69 }
70 });
71};
72var wrapErr = function (cb, fn) {
73 return function (err) {
74 if (err)
75 return cb(err);
76 return fn.apply(this, Array.from(arguments).slice(1));
77 };
78};
79async.parallel({
80 updateSumanClis: function (cb) {
81 var p = path.resolve(__dirname + '/suman-clis.sh');
82 fs.readFile(p, wrapErr(cb, function (data) {
83 fs.writeFile(sumanClis, data, { flag: 'w', mode: 511 }, cb);
84 }));
85 },
86 createGlobalConfigFile: function (cb) {
87 var p = path.resolve(__dirname + '/suman.global.conf.json');
88 fs.readFile(p, wrapErr(cb, function (data) {
89 fs.writeFile(sumanGlobalConfig, data, { flag: 'wx', mode: 511 }, function (err) {
90 if (err && !/EEXIST/i.test(String(err.message))) {
91 return cb(err);
92 }
93 cb(null);
94 });
95 }));
96 },
97 updateSumanCompletion: function (cb) {
98 var p = path.resolve(__dirname + '/suman-completion.sh');
99 fs.readFile(p, wrapErr(cb, function (data) {
100 fs.writeFile(sumanCompletion, data, { flag: 'w', mode: 511 }, cb);
101 }));
102 },
103 updateFindSumanExec: function (cb) {
104 var p = path.resolve(__dirname + '/find-local-suman-executable.js');
105 fs.readFile(p, wrapErr(cb, function (data) {
106 fs.writeFile(findSumanExec, data, { flag: 'w', mode: 511 }, cb);
107 }));
108 },
109 appendToQueue: function (cb) {
110 fs.appendFile(queue, '', cb);
111 },
112 updateFindProjectRoot: function (cb) {
113 var p = path.resolve(__dirname + '/find-project-root.js');
114 fs.readFile(p, wrapErr(cb, function (data) {
115 fs.writeFile(findProjectRootDest, data, { flag: 'w', mode: 511 }, cb);
116 }));
117 }
118}, function (err) {
119 err && console.error(err.stack || err);
120 try {
121 if (!fs.existsSync(sumanHome)) {
122 console.error(' => Warning => ~/.suman dir does not exist!');
123 }
124 }
125 catch (err) {
126 console.error(err.stack || err);
127 }
128 finally {
129 process.exit(0);
130 }
131});