@tremho/mist-lift 1.0.0
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.
- package/LICENSE +21 -0
- package/README.md +37 -0
- package/build/commands/actions/initQuestions.js +136 -0
- package/build/commands/actions/initQuestions.js.map +1 -0
- package/build/commands/actions/makePackageJson.js +2 -0
- package/build/commands/actions/makePackageJson.js.map +1 -0
- package/build/commands/actions/setupPackageJson.js +68 -0
- package/build/commands/actions/setupPackageJson.js.map +1 -0
- package/build/commands/build.js +191 -0
- package/build/commands/build.js.map +1 -0
- package/build/commands/builtin/ApiDocMaker.js +72 -0
- package/build/commands/builtin/ApiDocMaker.js.map +1 -0
- package/build/commands/builtin/BuiltInHandler.js +62 -0
- package/build/commands/builtin/BuiltInHandler.js.map +1 -0
- package/build/commands/builtin/DeployBuiltInZip.js +57 -0
- package/build/commands/builtin/DeployBuiltInZip.js.map +1 -0
- package/build/commands/builtin/StageWebrootZip.js +70 -0
- package/build/commands/builtin/StageWebrootZip.js.map +1 -0
- package/build/commands/builtin/prebuilt-zips/API.zip +0 -0
- package/build/commands/builtin/prebuilt-zips/FileServe.zip +0 -0
- package/build/commands/builtin/prebuilt-zips/Webroot.zip +0 -0
- package/build/commands/create.js +75 -0
- package/build/commands/create.js.map +1 -0
- package/build/commands/deploy.js +187 -0
- package/build/commands/deploy.js.map +1 -0
- package/build/commands/doctor.js +137 -0
- package/build/commands/doctor.js.map +1 -0
- package/build/commands/help.js +205 -0
- package/build/commands/help.js.map +1 -0
- package/build/commands/init.js +92 -0
- package/build/commands/init.js.map +1 -0
- package/build/commands/package.js +249 -0
- package/build/commands/package.js.map +1 -0
- package/build/commands/publish.js +344 -0
- package/build/commands/publish.js.map +1 -0
- package/build/commands/settings.js +95 -0
- package/build/commands/settings.js.map +1 -0
- package/build/commands/start.js +66 -0
- package/build/commands/start.js.map +1 -0
- package/build/commands/test.js +52 -0
- package/build/commands/test.js.map +1 -0
- package/build/commands/user.js +20 -0
- package/build/commands/user.js.map +1 -0
- package/build/expressRoutes/all.js +129 -0
- package/build/expressRoutes/all.js.map +1 -0
- package/build/expressRoutes/api.js +22 -0
- package/build/expressRoutes/api.js.map +1 -0
- package/build/expressRoutes/functionBinder.js +191 -0
- package/build/expressRoutes/functionBinder.js.map +1 -0
- package/build/lib/CaseUtils.js +57 -0
- package/build/lib/CaseUtils.js.map +1 -0
- package/build/lib/DirectoryUtils.js +37 -0
- package/build/lib/DirectoryUtils.js.map +1 -0
- package/build/lib/LiftConfig.js +83 -0
- package/build/lib/LiftConfig.js.map +1 -0
- package/build/lib/LiftVersion.js +117 -0
- package/build/lib/LiftVersion.js.map +1 -0
- package/build/lib/Tests/fileCompare.test.js +55 -0
- package/build/lib/Tests/fileCompare.test.js.map +1 -0
- package/build/lib/askQuestion.js +41 -0
- package/build/lib/askQuestion.js.map +1 -0
- package/build/lib/executeCommand.js +45 -0
- package/build/lib/executeCommand.js.map +1 -0
- package/build/lib/fileCompare.js +48 -0
- package/build/lib/fileCompare.js.map +1 -0
- package/build/lib/openAPI/ApiBuildCollector.js +58 -0
- package/build/lib/openAPI/ApiBuildCollector.js.map +1 -0
- package/build/lib/openAPI/WebrootFileSupport.js +44 -0
- package/build/lib/openAPI/WebrootFileSupport.js.map +1 -0
- package/build/lib/openAPI/openApiConstruction.js +203 -0
- package/build/lib/openAPI/openApiConstruction.js.map +1 -0
- package/build/lib/pathResolve.js +27 -0
- package/build/lib/pathResolve.js.map +1 -0
- package/build/lib/utils.js +76 -0
- package/build/lib/utils.js.map +1 -0
- package/build/lift.js +124 -0
- package/build/lift.js.map +1 -0
- package/package.json +69 -0
- package/src/commands/actions/initQuestions.ts +131 -0
- package/src/commands/actions/makePackageJson.ts +0 -0
- package/src/commands/actions/setupPackageJson.ts +36 -0
- package/src/commands/build.ts +165 -0
- package/src/commands/builtin/ApiDocMaker.ts +70 -0
- package/src/commands/builtin/BuiltInHandler.ts +51 -0
- package/src/commands/builtin/DeployBuiltInZip.ts +27 -0
- package/src/commands/builtin/StageWebrootZip.ts +39 -0
- package/src/commands/builtin/prebuilt-zips/API.zip +0 -0
- package/src/commands/builtin/prebuilt-zips/FileServe.zip +0 -0
- package/src/commands/builtin/prebuilt-zips/Webroot.zip +0 -0
- package/src/commands/create.ts +55 -0
- package/src/commands/deploy.ts +171 -0
- package/src/commands/doctor.ts +102 -0
- package/src/commands/help.ts +171 -0
- package/src/commands/init.ts +62 -0
- package/src/commands/package.ts +228 -0
- package/src/commands/publish.ts +350 -0
- package/src/commands/settings.ts +76 -0
- package/src/commands/start.ts +46 -0
- package/src/commands/test.ts +38 -0
- package/src/commands/user.ts +20 -0
- package/src/expressRoutes/all.ts +104 -0
- package/src/expressRoutes/api.ts +24 -0
- package/src/expressRoutes/functionBinder.ts +169 -0
- package/src/lib/CaseUtils.ts +68 -0
- package/src/lib/DirectoryUtils.ts +36 -0
- package/src/lib/LiftConfig.ts +83 -0
- package/src/lib/LiftVersion.ts +95 -0
- package/src/lib/Tests/dir1/file.1 +0 -0
- package/src/lib/Tests/dir1/file.2 +0 -0
- package/src/lib/Tests/dir2/file.1 +0 -0
- package/src/lib/Tests/fileCompare.test.ts +34 -0
- package/src/lib/askQuestion.ts +18 -0
- package/src/lib/executeCommand.ts +38 -0
- package/src/lib/fileCompare.ts +46 -0
- package/src/lib/openAPI/ApiBuildCollector.ts +47 -0
- package/src/lib/openAPI/WebrootFileSupport.ts +21 -0
- package/src/lib/openAPI/openApiConstruction.ts +202 -0
- package/src/lib/pathResolve.ts +32 -0
- package/src/lib/utils.ts +45 -0
- package/src/lift.ts +82 -0
- package/tsconfig.json +28 -0
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
35
|
+
exports.DeployFileserve = exports.DeployBuiltInZip = void 0;
|
|
36
|
+
const path = __importStar(require("path"));
|
|
37
|
+
const deploy_1 = require("../deploy");
|
|
38
|
+
function DeployBuiltInZip(name, zipPath) {
|
|
39
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
40
|
+
// console.log(">> Deploying "+name)
|
|
41
|
+
yield (0, deploy_1.deployPackage)(name, zipPath);
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
exports.DeployBuiltInZip = DeployBuiltInZip;
|
|
45
|
+
function DeployFileserve(root) {
|
|
46
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
47
|
+
// rootName is without slash
|
|
48
|
+
if (root) {
|
|
49
|
+
let rootName = root.replace("/", "");
|
|
50
|
+
let name = "fileserve_" + rootName;
|
|
51
|
+
let zipPath = path.join(__dirname, 'prebuilt-zips', 'FileServe.zip');
|
|
52
|
+
yield DeployBuiltInZip(name, zipPath);
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
exports.DeployFileserve = DeployFileserve;
|
|
57
|
+
//# sourceMappingURL=DeployBuiltInZip.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DeployBuiltInZip.js","sourceRoot":"","sources":["../../../src/commands/builtin/DeployBuiltInZip.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,2CAA4B;AAC5B,sCAAuC;AAEvC,SAAsB,gBAAgB,CAElC,IAAW,EACX,OAAc;;QAGd,oCAAoC;QACpC,MAAM,IAAA,sBAAa,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC;CAAA;AARD,4CAQC;AAED,SAAsB,eAAe,CAEjC,IAAW;;QAGX,4BAA4B;QAC5B,IAAG,IAAI,EAAE,CAAC;YACN,IAAI,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;YACpC,IAAI,IAAI,GAAG,YAAY,GAAG,QAAQ,CAAA;YAClC,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,EAAE,eAAe,CAAC,CAAA;YACpE,MAAM,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QACzC,CAAC;IACL,CAAC;CAAA;AAZD,0CAYC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
35
|
+
exports.StageWebrootZip = void 0;
|
|
36
|
+
const ApiDocMaker_1 = require("./ApiDocMaker");
|
|
37
|
+
const path = __importStar(require("path"));
|
|
38
|
+
const fs = __importStar(require("fs"));
|
|
39
|
+
const pathResolve_1 = require("../../lib/pathResolve");
|
|
40
|
+
const DirectoryUtils_1 = require("../../lib/DirectoryUtils");
|
|
41
|
+
const utils_1 = require("../../lib/utils");
|
|
42
|
+
function StageWebrootZip() {
|
|
43
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
44
|
+
// console.log(">> staging webroot to zip")
|
|
45
|
+
const projectPaths = (0, pathResolve_1.resolvePaths)();
|
|
46
|
+
// make a public yaml
|
|
47
|
+
yield (0, ApiDocMaker_1.MakePublicApiDoc)(); // writes apidoc.yaml to docs
|
|
48
|
+
const builtinPath = path.join(__dirname, 'prebuilt-zips', 'Webroot.zip');
|
|
49
|
+
const exdir = path.join(projectPaths.basePath, '.package_temp');
|
|
50
|
+
yield (0, utils_1.UnzipToFolder)(builtinPath, exdir);
|
|
51
|
+
const webroot = path.join(projectPaths.basePath, 'webroot');
|
|
52
|
+
const packageTemp = path.join(projectPaths.basePath, '.package_temp');
|
|
53
|
+
const zipFilesPath = path.join(packageTemp, 'Webroot', '__files__');
|
|
54
|
+
yield (0, DirectoryUtils_1.recurseDirectory)(webroot, (filepath, stats) => {
|
|
55
|
+
const relPath = filepath.substring(webroot.length);
|
|
56
|
+
if (stats.isDirectory()) {
|
|
57
|
+
fs.mkdirSync(zipFilesPath + relPath, { recursive: true });
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
fs.copyFileSync(filepath, zipFilesPath + relPath);
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
const webrootZip = path.join(projectPaths.basePath, 'a.zip');
|
|
64
|
+
yield (0, utils_1.FolderToZip)(path.join(packageTemp, 'Webroot'), webrootZip);
|
|
65
|
+
// return path to this zip
|
|
66
|
+
return webrootZip;
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
exports.StageWebrootZip = StageWebrootZip;
|
|
70
|
+
//# sourceMappingURL=StageWebrootZip.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StageWebrootZip.js","sourceRoot":"","sources":["../../../src/commands/builtin/StageWebrootZip.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAA+C;AAG/C,2CAA4B;AAC5B,uCAAwB;AAExB,uDAAmD;AACnD,6DAA0D;AAC1D,2CAA2D;AAE3D,SAAsB,eAAe;;QAIjC,2CAA2C;QAC3C,MAAM,YAAY,GAAG,IAAA,0BAAY,GAAE,CAAC;QACpC,qBAAqB;QACrB,MAAM,IAAA,8BAAgB,GAAE,CAAC,CAAC,6BAA6B;QACvD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,EAAE,aAAa,CAAC,CAAA;QACxE,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;QAChE,MAAM,IAAA,qBAAa,EAAC,WAAW,EAAE,KAAK,CAAC,CAAA;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAC5D,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAA;QACrE,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAC,WAAW,CAAC,CAAA;QAClE,MAAM,IAAA,iCAAgB,EAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE;YAChD,MAAM,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;YAClD,IAAG,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACrB,EAAE,CAAC,SAAS,CAAC,YAAY,GAAC,OAAO,EAAE,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC,CAAA;YACzD,CAAC;iBAAM,CAAC;gBACJ,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,CAAA;YACrD,CAAC;QACL,CAAC,CAAC,CAAA;QACF,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QAE5D,MAAM,IAAA,mBAAW,EAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,EAAE,UAAU,CAAC,CAAA;QAChE,0BAA0B;QAC1B,OAAO,UAAU,CAAA;IAErB,CAAC;CAAA;AA5BD,0CA4BC"}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/** Handles fucntion creation via the create command */
|
|
3
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
|
+
if (k2 === undefined) k2 = k;
|
|
5
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
8
|
+
}
|
|
9
|
+
Object.defineProperty(o, k2, desc);
|
|
10
|
+
}) : (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
o[k2] = m[k];
|
|
13
|
+
}));
|
|
14
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
15
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
16
|
+
}) : function(o, v) {
|
|
17
|
+
o["default"] = v;
|
|
18
|
+
});
|
|
19
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
20
|
+
if (mod && mod.__esModule) return mod;
|
|
21
|
+
var result = {};
|
|
22
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
23
|
+
__setModuleDefault(result, mod);
|
|
24
|
+
return result;
|
|
25
|
+
};
|
|
26
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
27
|
+
exports.doCreate = void 0;
|
|
28
|
+
const fs = __importStar(require("fs"));
|
|
29
|
+
const path = __importStar(require("path"));
|
|
30
|
+
const ac = __importStar(require("ansi-colors"));
|
|
31
|
+
const pathResolve_1 = require("../lib/pathResolve");
|
|
32
|
+
const CaseUtils_1 = require("../lib/CaseUtils");
|
|
33
|
+
const help_1 = require("./help");
|
|
34
|
+
/// Create command
|
|
35
|
+
function doCreate(funcName // name of function to create
|
|
36
|
+
) {
|
|
37
|
+
if (!funcName) {
|
|
38
|
+
(0, help_1.helpCreate)();
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
console.log(ac.green.bold("Creating new function named ") + funcName);
|
|
43
|
+
const projectPaths = (0, pathResolve_1.resolvePaths)();
|
|
44
|
+
const funcPath = path.join(projectPaths.functionPath, funcName);
|
|
45
|
+
if (!fs.existsSync(funcPath))
|
|
46
|
+
fs.mkdirSync(funcPath);
|
|
47
|
+
const dataDir = path.join(__dirname, '..', '..', 'templateData');
|
|
48
|
+
const testdirname = (0, CaseUtils_1.camelCase)(funcName) + '-tests';
|
|
49
|
+
if (!fs.existsSync(path.join(funcPath, testdirname)))
|
|
50
|
+
fs.mkdirSync(path.join(funcPath, testdirname));
|
|
51
|
+
if (!fs.existsSync(path.join(funcPath, 'src')))
|
|
52
|
+
fs.mkdirSync(path.join(funcPath, 'src'));
|
|
53
|
+
let localsrc = fs.readFileSync(path.join(dataDir, 'function-local-ts')).toString();
|
|
54
|
+
while (localsrc.indexOf("$$FUNCTION_NAME$$") !== -1) {
|
|
55
|
+
localsrc = localsrc.replace("$$FUNCTION_NAME$$", funcName);
|
|
56
|
+
}
|
|
57
|
+
fs.writeFileSync(path.join(funcPath, 'src', 'local.ts'), localsrc);
|
|
58
|
+
let defsrc = fs.readFileSync(path.join(dataDir, 'function-definition-template')).toString();
|
|
59
|
+
while (defsrc.indexOf("$$FUNCTION_NAME$$") !== -1) {
|
|
60
|
+
defsrc = defsrc.replace("$$FUNCTION_NAME$$", funcName);
|
|
61
|
+
}
|
|
62
|
+
let defpathMap = "/" + funcName.toLowerCase();
|
|
63
|
+
defsrc = defsrc.replace("$$PATHMAP$$", defpathMap);
|
|
64
|
+
fs.writeFileSync(path.join(funcPath, 'src', 'definition.json'), defsrc);
|
|
65
|
+
let mainsrc = fs.readFileSync(path.join(dataDir, 'function-main-ts')).toString();
|
|
66
|
+
while (mainsrc.indexOf("$$TemplateName$$") !== -1) {
|
|
67
|
+
mainsrc = mainsrc.replace("$$TemplateName$$", funcName);
|
|
68
|
+
}
|
|
69
|
+
fs.writeFileSync(path.join(funcPath, 'src', 'main.ts'), mainsrc);
|
|
70
|
+
fs.copyFileSync(path.join(dataDir, 'function-test-template'), path.join(funcPath, testdirname, 'Sanity.test.ts'));
|
|
71
|
+
fs.copyFileSync(path.join(dataDir, 'function-runmain-mjs'), path.join(funcPath, 'runmain.mjs'));
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
exports.doCreate = doCreate;
|
|
75
|
+
//# sourceMappingURL=create.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":";AAAA,uDAAuD;;;;;;;;;;;;;;;;;;;;;;;;;;AAEvD,uCAAwB;AACxB,2CAA4B;AAC5B,gDAAiC;AACjC,oDAAgD;AAChD,gDAAsD;AACtD,iCAAkC;AAGlC,kBAAkB;AAClB,SAAgB,QAAQ,CACpB,QAAe,CAAC,6BAA6B;;IAGzC,IAAG,CAAC,QAAQ,EAAE,CAAC;QACP,IAAA,iBAAU,GAAE,CAAA;QACZ,OAAM;IACd,CAAC;SAAM,CAAC;QAER,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,GAAC,QAAQ,CAAC,CAAA;QAEnE,MAAM,YAAY,GAAG,IAAA,0BAAY,GAAE,CAAC;QACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QAChE,IAAG,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;YAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;QACnD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;QAEjE,MAAM,WAAW,GAAG,IAAA,qBAAS,EAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;QACnD,IAAG,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;YAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAA;QACnG,IAAG,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAA;QAEvF,IAAI,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QACnF,OAAO,QAAQ,CAAC,OAAO,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YAClD,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC;QAC/D,CAAC;QACD,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAC;QACnE,IAAI,MAAM,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,8BAA8B,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC5F,OAAM,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YAC/C,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC;QAC3D,CAAC;QACD,IAAI,UAAU,GAAG,GAAG,GAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;QAC5C,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,UAAU,CAAC,CAAA;QAClD,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,iBAAiB,CAAC,EAAE,MAAM,CAAC,CAAC;QACxE,IAAI,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QACjF,OAAM,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YAC/C,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;QAC5D,CAAC;QACD,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,OAAO,CAAC,CAAC;QACjE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,wBAAwB,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,gBAAgB,CAAC,CAAC,CAAA;QACjH,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,sBAAsB,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC;IAEpG,CAAC;AAEL,CAAC;AA1CD,4BA0CC"}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
35
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
36
|
+
};
|
|
37
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
38
|
+
exports.deployPackage = exports.doDeployAsync = void 0;
|
|
39
|
+
const client_lambda_1 = require("@aws-sdk/client-lambda");
|
|
40
|
+
const md5_1 = __importDefault(require("md5"));
|
|
41
|
+
const path_1 = __importDefault(require("path"));
|
|
42
|
+
const fs_1 = __importDefault(require("fs"));
|
|
43
|
+
const pathResolve_1 = require("../lib/pathResolve");
|
|
44
|
+
const ac = __importStar(require("ansi-colors"));
|
|
45
|
+
const DirectoryUtils_1 = require("../lib/DirectoryUtils");
|
|
46
|
+
const LiftVersion_1 = require("../lib/LiftVersion");
|
|
47
|
+
const utils_1 = require("../lib/utils");
|
|
48
|
+
const package_1 = require("./package");
|
|
49
|
+
const LiftConfig_1 = require("../lib/LiftConfig");
|
|
50
|
+
let projectPaths;
|
|
51
|
+
let deploymentRecord = {}; // a map of last deployment times
|
|
52
|
+
// package then deploy
|
|
53
|
+
function doDeployAsync(args) {
|
|
54
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
55
|
+
var _a;
|
|
56
|
+
projectPaths = (0, pathResolve_1.resolvePaths)();
|
|
57
|
+
const deploymentRecordPath = path_1.default.join(projectPaths.basePath, '.deployed');
|
|
58
|
+
try {
|
|
59
|
+
deploymentRecord = JSON.parse(fs_1.default.readFileSync(deploymentRecordPath).toString());
|
|
60
|
+
}
|
|
61
|
+
catch (_b) { }
|
|
62
|
+
// the main package json that has all imports
|
|
63
|
+
const mainPkgJsonPath = path_1.default.join(projectPaths.packagePath);
|
|
64
|
+
const mainPkgSrc = fs_1.default.readFileSync(mainPkgJsonPath).toString();
|
|
65
|
+
const mainPkgJson = JSON.parse(mainPkgSrc);
|
|
66
|
+
const projectName = (0, LiftVersion_1.getProjectName)();
|
|
67
|
+
const projectVersion = (0, LiftVersion_1.getProjectVersion)();
|
|
68
|
+
const liftVersion = (0, LiftVersion_1.getLiftVersion)();
|
|
69
|
+
const funcsToDeploy = [];
|
|
70
|
+
const options = [];
|
|
71
|
+
for (let arg of args) {
|
|
72
|
+
if (arg.charAt(0) == '-') {
|
|
73
|
+
options.push(arg.toLowerCase());
|
|
74
|
+
}
|
|
75
|
+
else
|
|
76
|
+
funcsToDeploy.push(arg);
|
|
77
|
+
}
|
|
78
|
+
if (options.indexOf("--no-package") === -1) {
|
|
79
|
+
let ret = yield (0, package_1.doPackageAsync)(args);
|
|
80
|
+
if (ret)
|
|
81
|
+
return ret;
|
|
82
|
+
else
|
|
83
|
+
yield (0, utils_1.delay)(2500);
|
|
84
|
+
}
|
|
85
|
+
if (options.indexOf("--clean") !== -1) {
|
|
86
|
+
deploymentRecord = {};
|
|
87
|
+
}
|
|
88
|
+
if (!funcsToDeploy.length) {
|
|
89
|
+
let firstDepth = 0;
|
|
90
|
+
(0, DirectoryUtils_1.recurseDirectory)(projectPaths.functionPath, (filepath, stats) => {
|
|
91
|
+
let depth = filepath.split(path_1.default.sep).length;
|
|
92
|
+
if (!firstDepth)
|
|
93
|
+
firstDepth = depth;
|
|
94
|
+
if (stats.isDirectory() && depth == firstDepth) {
|
|
95
|
+
funcsToDeploy.push(path_1.default.basename(filepath));
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
const all = [];
|
|
100
|
+
let error = 0;
|
|
101
|
+
for (let funcName of funcsToDeploy) {
|
|
102
|
+
// console.log("Deploy "+funcName)
|
|
103
|
+
const zipFile = path_1.default.join(projectPaths.basePath, 'MistLift_Zips', funcName + ".zip");
|
|
104
|
+
if (fs_1.default.existsSync(zipFile)) {
|
|
105
|
+
let zipTime = fs_1.default.statSync(zipFile).mtime;
|
|
106
|
+
if (zipTime.getTime() > ((_a = deploymentRecord[funcName]) !== null && _a !== void 0 ? _a : 0)) {
|
|
107
|
+
yield deployPackage(funcName);
|
|
108
|
+
deploymentRecord[funcName] = Date.now();
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
console.error("deploy: " + zipFile + ac.red.bold(` ${funcName} does not exist`));
|
|
113
|
+
return -1;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
try {
|
|
117
|
+
fs_1.default.writeFileSync(deploymentRecordPath, JSON.stringify(deploymentRecord));
|
|
118
|
+
}
|
|
119
|
+
catch (_c) { }
|
|
120
|
+
return 0;
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
exports.doDeployAsync = doDeployAsync;
|
|
124
|
+
//------------
|
|
125
|
+
function deployPackage(funcName, zipFile) {
|
|
126
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
127
|
+
var _a, _b;
|
|
128
|
+
// first off, anchor a base directory
|
|
129
|
+
zipFile !== null && zipFile !== void 0 ? zipFile : (zipFile = path_1.default.join(projectPaths.basePath, 'MistLift_Zips', funcName + ".zip"));
|
|
130
|
+
// funcname gets decorated with current instance identifier
|
|
131
|
+
var idsrc = (0, md5_1.default)(((_a = (0, LiftVersion_1.getProjectName)()) !== null && _a !== void 0 ? _a : "") + ((_b = (0, LiftVersion_1.getProjectVersion)()) !== null && _b !== void 0 ? _b : ""));
|
|
132
|
+
var dFuncName = funcName + "_" + idsrc;
|
|
133
|
+
// See if function exists
|
|
134
|
+
const client = new client_lambda_1.LambdaClient((0, LiftConfig_1.getAWSCredentials)());
|
|
135
|
+
const command = new client_lambda_1.DeleteFunctionCommand({
|
|
136
|
+
FunctionName: dFuncName
|
|
137
|
+
});
|
|
138
|
+
client.send(command).then((response) => {
|
|
139
|
+
}).catch((e) => {
|
|
140
|
+
});
|
|
141
|
+
// console.log(ac.green.italic("deploying ")+ac.green.bold(funcName)+"...")
|
|
142
|
+
try {
|
|
143
|
+
const response = yield CreateCloudFunction(dFuncName, zipFile);
|
|
144
|
+
const parts = response.FunctionArn.split(":");
|
|
145
|
+
const principal = parts[4];
|
|
146
|
+
yield AddPermissions(client, dFuncName, principal);
|
|
147
|
+
console.log(ac.green.bold(`Successfully deployed ${funcName}`));
|
|
148
|
+
}
|
|
149
|
+
catch (e) {
|
|
150
|
+
console.error(ac.red.bold.italic("Error deploying " + funcName), e);
|
|
151
|
+
}
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
exports.deployPackage = deployPackage;
|
|
155
|
+
function CreateCloudFunction(funcName, zipFile) {
|
|
156
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
157
|
+
var _a;
|
|
158
|
+
const settings = (0, LiftConfig_1.getSettings)();
|
|
159
|
+
const nodeRuntime = settings.awsNodeRuntime;
|
|
160
|
+
const serviceRole = (_a = settings.awsServiceRoleARN) !== null && _a !== void 0 ? _a : "";
|
|
161
|
+
const zipFileBase64 = fs_1.default.readFileSync(zipFile);
|
|
162
|
+
const client = new client_lambda_1.LambdaClient((0, LiftConfig_1.getAWSCredentials)());
|
|
163
|
+
const command = new client_lambda_1.CreateFunctionCommand({
|
|
164
|
+
FunctionName: funcName,
|
|
165
|
+
Runtime: nodeRuntime,
|
|
166
|
+
Role: serviceRole,
|
|
167
|
+
Handler: 'runmain.handler',
|
|
168
|
+
Code: {
|
|
169
|
+
ZipFile: zipFileBase64
|
|
170
|
+
}
|
|
171
|
+
});
|
|
172
|
+
return yield client.send(command); // response
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
function AddPermissions(client, funcName, principal) {
|
|
176
|
+
const region = (0, LiftConfig_1.getSettings)().awsPreferredRegion;
|
|
177
|
+
const WSApi = "/" + funcName.toLowerCase();
|
|
178
|
+
const command = new client_lambda_1.AddPermissionCommand({
|
|
179
|
+
FunctionName: funcName,
|
|
180
|
+
StatementId: "InvokePermission",
|
|
181
|
+
Action: "lambda:invokeFunction",
|
|
182
|
+
Principal: "apigateway.amazonaws.com",
|
|
183
|
+
SourceArn: `arn:aws:execute-api:${region}:${principal}:${WSApi}`
|
|
184
|
+
});
|
|
185
|
+
return client.send(command);
|
|
186
|
+
}
|
|
187
|
+
//# sourceMappingURL=deploy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
35
|
+
exports.doDoctor = void 0;
|
|
36
|
+
const ac = __importStar(require("ansi-colors"));
|
|
37
|
+
const LiftVersion_1 = require("../lib/LiftVersion");
|
|
38
|
+
const executeCommand_1 = require("../lib/executeCommand");
|
|
39
|
+
const pathResolve_1 = require("../lib/pathResolve");
|
|
40
|
+
const LiftConfig_1 = require("../lib/LiftConfig");
|
|
41
|
+
function doDoctor() {
|
|
42
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
43
|
+
console.log(ac.blue.bold('Lift doctor'));
|
|
44
|
+
const liftVersion = (0, LiftVersion_1.getLiftVersion)().toString();
|
|
45
|
+
const projectVersion = (0, LiftVersion_1.getProjectVersion)().toString();
|
|
46
|
+
const projectName = (0, LiftVersion_1.getProjectName)();
|
|
47
|
+
const typescriptVersion = yield fetchTypescriptVersion();
|
|
48
|
+
const nodeVersion = yield fetchNodeVersion();
|
|
49
|
+
const npmVersion = yield fetchNpmVersion();
|
|
50
|
+
const gitVersion = yield fetchGitVersion();
|
|
51
|
+
const settingsAvail = (0, LiftConfig_1.areSettingsAvailable)();
|
|
52
|
+
console.log("Checking installed dependencies:");
|
|
53
|
+
let ok = report("MistLift", liftVersion, "0.1.0");
|
|
54
|
+
ok = ok && report("Typescript", typescriptVersion, "5.3.3");
|
|
55
|
+
ok = ok && report("Node", nodeVersion, "20.11.0");
|
|
56
|
+
ok = ok && report("Npm", npmVersion, "10.3.0");
|
|
57
|
+
report("Git", gitVersion, "2.0.0");
|
|
58
|
+
if (!settingsAvail) {
|
|
59
|
+
console.log("");
|
|
60
|
+
console.log(ac.yellow.dim.bold("Cloud Settings are not set. ") + ac.blue("run " + ac.bold("lift settings")));
|
|
61
|
+
}
|
|
62
|
+
if (!ok) {
|
|
63
|
+
console.log("");
|
|
64
|
+
console.log(ac.red.bold("System needs updates before MistLift can be used."));
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
console.log("");
|
|
68
|
+
console.log(ac.green.bold("Ready for MistLift"));
|
|
69
|
+
console.log("");
|
|
70
|
+
if ((0, pathResolve_1.resolvePaths)().verified) {
|
|
71
|
+
console.log(ac.blue.italic("Current project " + projectName + " " + projectVersion));
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return ok;
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
exports.doDoctor = doDoctor;
|
|
78
|
+
function versionTrim(vstr) {
|
|
79
|
+
vstr = vstr.trim();
|
|
80
|
+
let i = -1;
|
|
81
|
+
while (++i < vstr.length) {
|
|
82
|
+
let c = vstr.charAt(i);
|
|
83
|
+
if (c >= '0' && c <= '9')
|
|
84
|
+
break;
|
|
85
|
+
}
|
|
86
|
+
return vstr.substring(i);
|
|
87
|
+
}
|
|
88
|
+
function fetchTypescriptVersion() {
|
|
89
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
90
|
+
const result = yield (0, executeCommand_1.executeCommand)('tsc', ['-v']);
|
|
91
|
+
if (result.retcode)
|
|
92
|
+
return "Typescript not found";
|
|
93
|
+
var vstr = versionTrim(result.stdStr);
|
|
94
|
+
return vstr;
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
function fetchNodeVersion() {
|
|
98
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
99
|
+
const result = yield (0, executeCommand_1.executeCommand)('node', ['-v']);
|
|
100
|
+
if (result.retcode)
|
|
101
|
+
return "Node not found";
|
|
102
|
+
var vstr = versionTrim(result.stdStr);
|
|
103
|
+
return vstr;
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
function fetchNpmVersion() {
|
|
107
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
108
|
+
const result = yield (0, executeCommand_1.executeCommand)('npm', ['-v']);
|
|
109
|
+
if (result.retcode)
|
|
110
|
+
return "npm not found";
|
|
111
|
+
var vstr = versionTrim(result.stdStr);
|
|
112
|
+
return vstr;
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
function fetchGitVersion() {
|
|
116
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
117
|
+
const result = yield (0, executeCommand_1.executeCommand)('git', ['-v']);
|
|
118
|
+
if (result.retcode)
|
|
119
|
+
return "Git not found";
|
|
120
|
+
var vstr = versionTrim(result.stdStr);
|
|
121
|
+
return vstr;
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
// compare to a minimum and report ok or error
|
|
125
|
+
function report(name, version, minStr) {
|
|
126
|
+
const ver = new LiftVersion_1.VersionInfo(version);
|
|
127
|
+
const minVer = new LiftVersion_1.VersionInfo(minStr);
|
|
128
|
+
let ok = (ver.isGreaterThan(minVer) || ver.equals(minVer));
|
|
129
|
+
if (ok) {
|
|
130
|
+
console.log(ac.green.bold("√ ") + ac.black.bold(name) + " " + ac.grey(version));
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
console.log(ac.red.bold("X ") + ac.black.bold(name) + ac.red.bold(" does not meet minimum version of ") + ac.blue(minStr));
|
|
134
|
+
}
|
|
135
|
+
return ok;
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=doctor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
|