runlify 0.0.1 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/bin/runlify +0 -3
  2. package/build/package.json +72 -0
  3. package/build/{cli.js → src/cli.js} +14 -2
  4. package/build/src/commands/availableEnvironments.js +74 -0
  5. package/build/src/commands/env.js +84 -0
  6. package/build/{commands → src/commands}/generate.js +1 -1
  7. package/build/src/commands/init.js +70 -0
  8. package/build/src/commands/login.js +67 -0
  9. package/build/src/commands/logout.js +67 -0
  10. package/build/src/commands/readEnv.js +60 -0
  11. package/build/{commands → src/commands}/runlify.js +2 -2
  12. package/build/src/commands/showEnvironmentVariables.js +62 -0
  13. package/build/src/commands/showToken.js +62 -0
  14. package/build/src/commands/tryGetMeta.js +59 -0
  15. package/build/src/commands/writeToken.js +86 -0
  16. package/build/{extensions → src/extensions}/cli-extension.js +1 -1
  17. package/build/src/services/getConfigService.js +53 -0
  18. package/build/src/services/getEnvService.js +122 -0
  19. package/build/src/services/getMetaService.js +83 -0
  20. package/build/{types.js → src/types.js} +1 -1
  21. package/build/src/utils/TermSignals.js +117 -0
  22. package/build/src/utils/getAuth.js +122 -0
  23. package/build/src/utils/getPkgManager.js +29 -0
  24. package/build/src/utils/notifyUpdate.js +69 -0
  25. package/build/templates/src/templates/runlify.developer.example.json.ejs +3 -0
  26. package/build/templates/src/templates/runlify.json.ejs +6 -0
  27. package/build/types/{cli.d.ts → src/cli.d.ts} +0 -0
  28. package/build/types/{commands/generate.d.ts → src/commands/availableEnvironments.d.ts} +0 -0
  29. package/build/types/{commands/runlify.d.ts → src/commands/env.d.ts} +0 -0
  30. package/build/types/{extensions/cli-extension.d.ts → src/commands/generate.d.ts} +0 -0
  31. package/build/types/src/commands/init.d.ts +1 -0
  32. package/build/types/src/commands/login.d.ts +1 -0
  33. package/build/types/src/commands/logout.d.ts +1 -0
  34. package/build/types/src/commands/readEnv.d.ts +1 -0
  35. package/build/types/src/commands/runlify.d.ts +1 -0
  36. package/build/types/src/commands/showEnvironmentVariables.d.ts +1 -0
  37. package/build/types/src/commands/showToken.d.ts +1 -0
  38. package/build/types/src/commands/tryGetMeta.d.ts +1 -0
  39. package/build/types/src/commands/writeToken.d.ts +1 -0
  40. package/build/types/src/extensions/cli-extension.d.ts +1 -0
  41. package/build/types/src/services/getConfigService.d.ts +10 -0
  42. package/build/types/src/services/getEnvService.d.ts +8 -0
  43. package/build/types/src/services/getMetaService.d.ts +5 -0
  44. package/build/types/{types.d.ts → src/types.d.ts} +0 -0
  45. package/build/types/src/utils/TermSignals.d.ts +28 -0
  46. package/build/types/src/utils/getAuth.d.ts +7 -0
  47. package/build/types/src/utils/getPkgManager.d.ts +3 -0
  48. package/build/types/src/utils/notifyUpdate.d.ts +2 -0
  49. package/package.json +16 -7
@@ -0,0 +1,117 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ // file from env-cmd package
4
+ var SIGNALS_TO_HANDLE = ['SIGINT', 'SIGTERM', 'SIGHUP'];
5
+ var TermSignals = /** @class */ (function () {
6
+ function TermSignals(options) {
7
+ if (options === void 0) { options = {}; }
8
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
9
+ this.terminateSpawnedProcessFuncHandlers = {};
10
+ this.verbose = false;
11
+ this._exitCalled = false;
12
+ this.verbose = options.verbose === true;
13
+ }
14
+ TermSignals.prototype.handleTermSignals = function (proc) {
15
+ var _this = this;
16
+ // Terminate child process if parent process receives termination events
17
+ SIGNALS_TO_HANDLE.forEach(function (signal) {
18
+ _this.terminateSpawnedProcessFuncHandlers[signal] = function (signal, code) {
19
+ _this._removeProcessListeners();
20
+ if (!_this._exitCalled) {
21
+ if (_this.verbose) {
22
+ console.info('Parent process exited with signal: ' +
23
+ signal.toString() +
24
+ '. Terminating child process...');
25
+ }
26
+ // Mark shared state so we do not run into a signal/exit loop
27
+ _this._exitCalled = true;
28
+ // Use the signal code if it is an error code
29
+ var correctSignal = void 0;
30
+ if (typeof signal === 'number') {
31
+ if (signal > (code !== null && code !== void 0 ? code : 0)) {
32
+ code = signal;
33
+ correctSignal = 'SIGINT';
34
+ }
35
+ }
36
+ else {
37
+ correctSignal = signal;
38
+ }
39
+ // Kill the child process
40
+ proc.kill(correctSignal !== null && correctSignal !== void 0 ? correctSignal : code);
41
+ // Terminate the parent process
42
+ _this._terminateProcess(code, correctSignal);
43
+ }
44
+ };
45
+ process.once(signal, _this.terminateSpawnedProcessFuncHandlers[signal]);
46
+ });
47
+ process.once('exit', this.terminateSpawnedProcessFuncHandlers.SIGTERM);
48
+ // Terminate parent process if child process receives termination events
49
+ proc.on('exit', function (code, signal) {
50
+ _this._removeProcessListeners();
51
+ if (!_this._exitCalled) {
52
+ if (_this.verbose) {
53
+ console.info("Child process exited with code: ".concat((code !== null && code !== void 0 ? code : '').toString(), " and signal:") +
54
+ (signal !== null && signal !== void 0 ? signal : '').toString() +
55
+ '. Terminating parent process...');
56
+ }
57
+ // Mark shared state so we do not run into a signal/exit loop
58
+ _this._exitCalled = true;
59
+ // Use the signal code if it is an error code
60
+ var correctSignal = void 0;
61
+ if (typeof signal === 'number') {
62
+ if (signal > (code !== null && code !== void 0 ? code : 0)) {
63
+ code = signal;
64
+ correctSignal = 'SIGINT';
65
+ }
66
+ }
67
+ else {
68
+ correctSignal = signal !== null && signal !== void 0 ? signal : undefined;
69
+ }
70
+ // Terminate the parent process
71
+ _this._terminateProcess(code, correctSignal);
72
+ }
73
+ });
74
+ };
75
+ /**
76
+ * Enables catching of unhandled exceptions
77
+ */
78
+ TermSignals.prototype.handleUncaughtExceptions = function () {
79
+ var _this = this;
80
+ process.on('uncaughtException', function (e) {
81
+ return _this._uncaughtExceptionHandler(e);
82
+ });
83
+ };
84
+ /**
85
+ * Terminate parent process helper
86
+ */
87
+ TermSignals.prototype._terminateProcess = function (code, signal) {
88
+ if (signal !== undefined) {
89
+ process.kill(process.pid, signal);
90
+ return;
91
+ }
92
+ if (code !== undefined) {
93
+ return process.exit(code);
94
+ }
95
+ throw new Error('Unable to terminate parent process successfully');
96
+ };
97
+ /**
98
+ * Exit event listener clean up helper
99
+ */
100
+ TermSignals.prototype._removeProcessListeners = function () {
101
+ var _this = this;
102
+ SIGNALS_TO_HANDLE.forEach(function (signal) {
103
+ process.removeListener(signal, _this.terminateSpawnedProcessFuncHandlers[signal]);
104
+ });
105
+ process.removeListener('exit', this.terminateSpawnedProcessFuncHandlers.SIGTERM);
106
+ };
107
+ /**
108
+ * General exception handler
109
+ */
110
+ TermSignals.prototype._uncaughtExceptionHandler = function (e) {
111
+ console.error(e.message);
112
+ process.exit(1);
113
+ };
114
+ return TermSignals;
115
+ }());
116
+ exports.default = TermSignals;
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGVybVNpZ25hbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvVGVybVNpZ25hbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFFQSw0QkFBNEI7QUFFNUIsSUFBTSxpQkFBaUIsR0FBcUIsQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFBO0FBRTNFO0lBTUUscUJBQVksT0FBbUM7UUFBbkMsd0JBQUEsRUFBQSxZQUFtQztRQUwvQyw4REFBOEQ7UUFDN0Msd0NBQW1DLEdBQXdCLEVBQUUsQ0FBQTtRQUM3RCxZQUFPLEdBQVksS0FBSyxDQUFBO1FBQ2xDLGdCQUFXLEdBQUcsS0FBSyxDQUFBO1FBR3hCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sS0FBSyxJQUFJLENBQUE7SUFDekMsQ0FBQztJQUVNLHVDQUFpQixHQUF4QixVQUF5QixJQUFrQjtRQUEzQyxpQkF5RUM7UUF4RUMsd0VBQXdFO1FBQ3hFLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxVQUFDLE1BQU07WUFDL0IsS0FBSSxDQUFDLG1DQUFtQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLFVBQ2pELE1BQStCLEVBQy9CLElBQVk7Z0JBRVosS0FBSSxDQUFDLHVCQUF1QixFQUFFLENBQUE7Z0JBQzlCLElBQUksQ0FBQyxLQUFJLENBQUMsV0FBVyxFQUFFO29CQUNyQixJQUFJLEtBQUksQ0FBQyxPQUFPLEVBQUU7d0JBQ2hCLE9BQU8sQ0FBQyxJQUFJLENBQ1YscUNBQXFDOzRCQUNuQyxNQUFNLENBQUMsUUFBUSxFQUFFOzRCQUNqQixnQ0FBZ0MsQ0FDbkMsQ0FBQTtxQkFDRjtvQkFDRCw2REFBNkQ7b0JBQzdELEtBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFBO29CQUN2Qiw2Q0FBNkM7b0JBQzdDLElBQUksYUFBYSxTQUE0QixDQUFBO29CQUM3QyxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsRUFBRTt3QkFDOUIs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
@@ -0,0 +1,122 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (_) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ var getConfigService_1 = require("../services/getConfigService");
40
+ // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
41
+ var getAuth = function (toolbox) {
42
+ var _a = (0, getConfigService_1.default)(toolbox), setConfigValue = _a.setConfigValue, getConfigValue = _a.getConfigValue;
43
+ var _b = toolbox.print, info = _b.info, error = _b.error;
44
+ var login = function () { return __awaiter(void 0, void 0, void 0, function () {
45
+ var login, password, endpoint, http, res, tokenEntity;
46
+ return __generator(this, function (_a) {
47
+ switch (_a.label) {
48
+ case 0: return [4 /*yield*/, toolbox.prompt.ask({
49
+ name: 'login',
50
+ type: 'input',
51
+ message: 'login',
52
+ })];
53
+ case 1:
54
+ login = (_a.sent()).login;
55
+ info(login);
56
+ return [4 /*yield*/, toolbox.prompt.ask({
57
+ name: 'password',
58
+ type: 'password',
59
+ message: 'password',
60
+ })];
61
+ case 2:
62
+ password = (_a.sent()).password;
63
+ info(password);
64
+ endpoint = 'http://localhost:3000';
65
+ info(endpoint);
66
+ return [4 /*yield*/, toolbox.http.create({ baseURL: endpoint })];
67
+ case 3:
68
+ http = _a.sent();
69
+ return [4 /*yield*/, http.post('/rest/cli/login', {
70
+ login: login,
71
+ password: password,
72
+ name: 'runlify',
73
+ })];
74
+ case 4:
75
+ res = _a.sent();
76
+ if (res.status === 401) {
77
+ error('Wrong login, password or you do not have permission to login by cli');
78
+ process.exit();
79
+ }
80
+ tokenEntity = res.data.data;
81
+ info('tokenEntity');
82
+ info(tokenEntity);
83
+ setConfigValue('token', tokenEntity.token);
84
+ return [2 /*return*/];
85
+ }
86
+ });
87
+ }); };
88
+ var logout = function () { return __awaiter(void 0, void 0, void 0, function () {
89
+ var token, endpoint, http, res;
90
+ return __generator(this, function (_a) {
91
+ switch (_a.label) {
92
+ case 0:
93
+ token = getConfigValue('token');
94
+ info("token: ".concat(token));
95
+ endpoint = 'http://localhost:3000';
96
+ return [4 /*yield*/, toolbox.http.create({ baseURL: endpoint })];
97
+ case 1:
98
+ http = _a.sent();
99
+ return [4 /*yield*/, http.post('/rest/cli/logout', {}, {
100
+ headers: {
101
+ authorization: token,
102
+ },
103
+ })];
104
+ case 2:
105
+ res = _a.sent();
106
+ info(res);
107
+ removeToken();
108
+ return [2 /*return*/];
109
+ }
110
+ });
111
+ }); };
112
+ var removeToken = function () {
113
+ setConfigValue('token', undefined);
114
+ };
115
+ return {
116
+ login: login,
117
+ logout: logout,
118
+ removeToken: removeToken,
119
+ };
120
+ };
121
+ exports.default = getAuth;
122
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0QXV0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy9nZXRBdXRoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsaUVBQTJEO0FBRTNELDZFQUE2RTtBQUM3RSxJQUFNLE9BQU8sR0FBRyxVQUFDLE9BQXVCO0lBQ2hDLElBQUEsS0FBcUMsSUFBQSwwQkFBZ0IsRUFBQyxPQUFPLENBQUMsRUFBNUQsY0FBYyxvQkFBQSxFQUFFLGNBQWMsb0JBQThCLENBQUE7SUFFbEUsSUFBQSxLQUNFLE9BQU8sTUFEYSxFQUFiLElBQUksVUFBQSxFQUFFLEtBQUssV0FBRSxDQUNiO0lBRVgsSUFBTSxLQUFLLEdBQUc7Ozs7d0JBQ00scUJBQU0sT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7d0JBQ3pDLElBQUksRUFBRSxPQUFPO3dCQUNiLElBQUksRUFBRSxPQUFPO3dCQUNiLE9BQU8sRUFBRSxPQUFPO3FCQUNqQixDQUFDLEVBQUE7O29CQUpNLEtBQUssR0FBSyxDQUFBLFNBSWhCLENBQUEsTUFKVztvQkFLYixJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7b0JBRVUscUJBQU0sT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7NEJBQzVDLElBQUksRUFBRSxVQUFVOzRCQUNoQixJQUFJLEVBQUUsVUFBVTs0QkFDaEIsT0FBTyxFQUFFLFVBQVU7eUJBQ3BCLENBQUMsRUFBQTs7b0JBSk0sUUFBUSxHQUFLLENBQUEsU0FJbkIsQ0FBQSxTQUpjO29CQUtoQixJQUFJLENBQUMsUUFBUSxDQUFDLENBQUE7b0JBRVIsUUFBUSxHQUFHLHVCQUF1QixDQUFBO29CQUN4QyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUE7b0JBRUQscUJBQU0sT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBQTs7b0JBQXZELElBQUksR0FBRyxTQUFnRDtvQkFDakQscUJBQU0sSUFBSSxDQUFDLElBQUksQ0FBTSxpQkFBaUIsRUFBRTs0QkFDbEQsS0FBSyxPQUFBOzRCQUNMLFFBQVEsVUFBQTs0QkFDUixJQUFJLEVBQUUsU0FBUzt5QkFDaEIsQ0FBQyxFQUFBOztvQkFKSSxHQUFHLEdBQUcsU0FJVjtvQkFFRixJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssR0FBRyxFQUFFO3dCQUN0QixLQUFLLENBQ0gscUVBQXFFLENBQ3RFLENBQUE7d0JBQ0QsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFBO3FCQUNmO29CQUVLLFdBQVcsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQTtvQkFFakMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFBO29CQUNuQixJQUFJLENBQUMsV0FBVyxDQUFDLENBQUE7b0JBRWpCLGNBQWMsQ0FBQyxPQUFPLEVBQUUsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFBOzs7O1NBQzNDLENBQUE7SUFFRCxJQUFNLE1BQU0sR0FBRzs7Ozs7b0JBQ1AsS0FBSyxHQUFHLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQTtvQkFDckMsSUFBSSxDQUFDLGlCQUFVLEtBQUssQ0FBRSxDQUFDLENBQUE7b0JBRWpCLFFBQVEsR0FBRyx1QkFBdUIsQ0FBQTtvQkFDM0IscUJBQU0sT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBQTs7b0JBQXZELElBQUksR0FBRyxTQUFnRDtvQkFDakQscUJBQU0sSUFBSSxDQUFDLElBQUksQ0FDekIsa0JBQWtCLEVBQ2xCLEVBQUUsRUFDRjs0QkFDRSxPQUFPLEVBQUU7Z0NBQ1AsYUFBYSxFQUFFLEtBQUs7NkJBQ3JCO3lCQUNGLENBQ0YsRUFBQTs7b0JBUkssR0FBRyxHQUFHLFNBUVg7b0JBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO29CQUVULFdBQVcsRUFBRSxDQUFBOzs7O1NBQ2QsQ0FBQTtJQUVELElBQU0sV0FBVyxHQUFHO1FBQ2xCLGNBQWMsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUE7SUFDcEMsQ0FBQyxDQUFBO0lBRUQsT0FBTztRQUNMLEtBQUssT0FBQTtRQUNMLE1BQU0sUUFBQTtRQUNOLFdBQVcsYUFBQTtLQUNaLENBQUE7QUFDSCxDQUFDLENBQUE7QUFFRCxrQkFBZSxPQUFPLENBQUEifQ==
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var child_process_1 = require("child_process");
4
+ var getPkgManager = function () {
5
+ try {
6
+ var userAgent = process.env.npm_config_user_agent;
7
+ if (userAgent) {
8
+ if (userAgent.startsWith('yarn')) {
9
+ return 'yarn';
10
+ }
11
+ else if (userAgent.startsWith('pnpm')) {
12
+ return 'pnpm';
13
+ }
14
+ }
15
+ try {
16
+ (0, child_process_1.execSync)('yarn --version', { stdio: 'ignore' });
17
+ return 'yarn';
18
+ }
19
+ catch (_a) {
20
+ (0, child_process_1.execSync)('pnpm --version', { stdio: 'ignore' });
21
+ return 'pnpm';
22
+ }
23
+ }
24
+ catch (_b) {
25
+ return 'npm';
26
+ }
27
+ };
28
+ exports.default = getPkgManager;
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0UGtnTWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy9nZXRQa2dNYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsK0NBQXdDO0FBTXhDLElBQU0sYUFBYSxHQUFHO0lBQ3BCLElBQUk7UUFDRixJQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFBO1FBQ25ELElBQUksU0FBUyxFQUFFO1lBQ2IsSUFBSSxTQUFTLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUNoQyxPQUFPLE1BQU0sQ0FBQTthQUNkO2lCQUFNLElBQUksU0FBUyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRTtnQkFDdkMsT0FBTyxNQUFNLENBQUE7YUFDZDtTQUNGO1FBQ0QsSUFBSTtZQUNGLElBQUEsd0JBQVEsRUFBQyxnQkFBZ0IsRUFBRSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFBO1lBQy9DLE9BQU8sTUFBTSxDQUFBO1NBQ2Q7UUFBQyxXQUFNO1lBQ04sSUFBQSx3QkFBUSxFQUFDLGdCQUFnQixFQUFFLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUE7WUFDL0MsT0FBTyxNQUFNLENBQUE7U0FDZDtLQUNGO0lBQUMsV0FBTTtRQUNOLE9BQU8sS0FBSyxDQUFBO0tBQ2I7QUFDSCxDQUFDLENBQUE7QUFFRCxrQkFBZSxhQUFhLENBQUEifQ==
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (_) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ var checkForUpdate = require("update-check");
40
+ var packageJson = require("../../package.json");
41
+ var getPkgManager_1 = require("./getPkgManager");
42
+ // based on function from runlify package
43
+ var update = checkForUpdate(packageJson).catch(function () { return null; });
44
+ var notifyUpdate = function () { return __awaiter(void 0, void 0, void 0, function () {
45
+ var res, pkgManager, _a;
46
+ return __generator(this, function (_b) {
47
+ switch (_b.label) {
48
+ case 0:
49
+ _b.trys.push([0, 2, , 3]);
50
+ return [4 /*yield*/, update];
51
+ case 1:
52
+ res = _b.sent();
53
+ if (res === null || res === void 0 ? void 0 : res.latest) {
54
+ pkgManager = (0, getPkgManager_1.default)();
55
+ console.log("\nA new version of `runlify` is available!\nYou can update by running: ".concat(pkgManager === 'yarn'
56
+ ? 'yarn global add runlify'
57
+ : "".concat(pkgManager, " install --global runlify"), "\n"));
58
+ process.exit();
59
+ }
60
+ return [3 /*break*/, 3];
61
+ case 2:
62
+ _a = _b.sent();
63
+ return [3 /*break*/, 3];
64
+ case 3: return [2 /*return*/];
65
+ }
66
+ });
67
+ }); };
68
+ exports.default = notifyUpdate;
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZ5VXBkYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWxzL25vdGlmeVVwZGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZDQUE4QztBQUM5QyxnREFBaUQ7QUFDakQsaURBQTJDO0FBRTNDLHlDQUF5QztBQUV6QyxJQUFNLE1BQU0sR0FBSSxjQUFzQixDQUFDLFdBQVcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxjQUFNLE9BQUEsSUFBSSxFQUFKLENBQUksQ0FBQyxDQUFBO0FBRXJFLElBQU0sWUFBWSxHQUFHOzs7Ozs7Z0JBRUwscUJBQU0sTUFBTSxFQUFBOztnQkFBbEIsR0FBRyxHQUFHLFNBQVk7Z0JBQ3hCLElBQUksR0FBRyxhQUFILEdBQUcsdUJBQUgsR0FBRyxDQUFFLE1BQU0sRUFBRTtvQkFDVCxVQUFVLEdBQUcsSUFBQSx1QkFBYSxHQUFFLENBQUE7b0JBQ2xDLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUZBR1YsVUFBVSxLQUFLLE1BQU07d0JBQ25CLENBQUMsQ0FBQyx5QkFBeUI7d0JBQzNCLENBQUMsQ0FBQyxVQUFHLFVBQVUsOEJBQTJCLE9BRW5ELENBQUMsQ0FBQTtvQkFDSSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUE7aUJBQ2Y7Ozs7Ozs7O0tBSUosQ0FBQTtBQUVELGtCQUFlLFlBQVksQ0FBQSJ9
@@ -0,0 +1,3 @@
1
+ {
2
+ "defaultEnvironment": "dev"
3
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "projectName": "<%= props.projectName %>",
3
+ "partName": "<%= props.projectName %>-<%= props.projectCategory %>",
4
+ "projectCategory": "<%= props.projectCategory %>",
5
+ "varCategories": ["back", "worker", "telegramBot"]
6
+ }
File without changes
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,10 @@
1
+ import { GluegunToolbox } from 'gluegun';
2
+ declare const getConfigService: (toolbox: GluegunToolbox) => {
3
+ getConfigPath: () => string;
4
+ writeConfig: (config: Record<string, any>) => void;
5
+ initConfig: () => void;
6
+ getConfig: () => any;
7
+ setConfigValue: (key: string, value: string) => void;
8
+ getConfigValue: (key: string) => any;
9
+ };
10
+ export default getConfigService;
@@ -0,0 +1,8 @@
1
+ import { GluegunToolbox } from 'gluegun';
2
+ declare const getEnvService: (toolbox: GluegunToolbox) => {
3
+ getEnvVariables: (projectId: string, environmentId: string, scopes: string[]) => Promise<{
4
+ [index: string]: unknown;
5
+ }>;
6
+ getAvailableEnvironments: (projectId: string) => Promise<any>;
7
+ };
8
+ export default getEnvService;
@@ -0,0 +1,5 @@
1
+ import { GluegunToolbox } from 'gluegun';
2
+ declare const getMetaService: (toolbox: GluegunToolbox) => {
3
+ getMeta: (project: string) => Promise<void>;
4
+ };
5
+ export default getMetaService;
File without changes
@@ -0,0 +1,28 @@
1
+ /// <reference types="node" />
2
+ import { ChildProcess } from 'child_process';
3
+ declare class TermSignals {
4
+ private readonly terminateSpawnedProcessFuncHandlers;
5
+ private readonly verbose;
6
+ _exitCalled: boolean;
7
+ constructor(options?: {
8
+ verbose?: boolean;
9
+ });
10
+ handleTermSignals(proc: ChildProcess): void;
11
+ /**
12
+ * Enables catching of unhandled exceptions
13
+ */
14
+ handleUncaughtExceptions(): void;
15
+ /**
16
+ * Terminate parent process helper
17
+ */
18
+ _terminateProcess(code?: number, signal?: NodeJS.Signals): void;
19
+ /**
20
+ * Exit event listener clean up helper
21
+ */
22
+ _removeProcessListeners(): void;
23
+ /**
24
+ * General exception handler
25
+ */
26
+ _uncaughtExceptionHandler(e: Error): void;
27
+ }
28
+ export default TermSignals;
@@ -0,0 +1,7 @@
1
+ import { GluegunToolbox } from 'gluegun';
2
+ declare const getAuth: (toolbox: GluegunToolbox) => {
3
+ login: () => Promise<void>;
4
+ logout: () => Promise<void>;
5
+ removeToken: () => void;
6
+ };
7
+ export default getAuth;
@@ -0,0 +1,3 @@
1
+ export declare type PackageManager = 'npm' | 'pnpm' | 'yarn';
2
+ declare const getPkgManager: () => PackageManager;
3
+ export default getPkgManager;
@@ -0,0 +1,2 @@
1
+ declare const notifyUpdate: () => Promise<void>;
2
+ export default notifyUpdate;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "runlify",
3
- "version": "0.0.1",
3
+ "version": "0.0.4",
4
4
  "description": "runlify CLI",
5
5
  "private": false,
6
6
  "types": "build/types/types.d.ts",
@@ -28,16 +28,22 @@
28
28
  ],
29
29
  "license": "MIT",
30
30
  "dependencies": {
31
- "gluegun": "latest"
31
+ "appdata-path": "^1.0.0",
32
+ "change-case": "^4.1.2",
33
+ "cross-spawn": "^7.0.3",
34
+ "gluegun": "latest",
35
+ "nconf": "^0.12.0",
36
+ "ramda": "^0.28.0",
37
+ "update-check": "^1.5.4"
32
38
  },
33
39
  "devDependencies": {
34
- "@types/node": "^12.7.11",
40
+ "@types/cross-spawn": "^6.0.2",
35
41
  "@types/jest": "^26.0.20",
42
+ "@types/nconf": "^0.10.2",
43
+ "@types/node": "^12.7.11",
44
+ "@types/ramda": "^0.28.13",
36
45
  "@typescript-eslint/eslint-plugin": "^4.17.0",
37
46
  "@typescript-eslint/parser": "^4.17.0",
38
- "ts-jest": "^26.5.3",
39
- "ts-node": "^9.1.1",
40
- "typescript": "^4.2.3",
41
47
  "copyfiles": "^2.4.1",
42
48
  "eslint": "^7.22.0",
43
49
  "eslint-config-prettier": "^8.1.0",
@@ -45,7 +51,10 @@
45
51
  "husky": "^5.1.3",
46
52
  "jest": "^26.6.3",
47
53
  "prettier": "^2.2.1",
48
- "pretty-quick": "^3.1.0"
54
+ "pretty-quick": "^3.1.0",
55
+ "ts-jest": "^26.5.3",
56
+ "ts-node": "^9.1.1",
57
+ "typescript": "^4.2.3"
49
58
  },
50
59
  "jest": {
51
60
  "preset": "ts-jest",