@sasjs/cli 4.0.6 → 4.1.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/build/commands/build/build.js +3 -3
- package/build/commands/compile/compile.js +52 -55
- package/build/commands/compile/compileCommand.js +5 -3
- package/build/commands/compile/compileSingleFile.d.ts +5 -0
- package/build/commands/compile/compileSingleFile.js +36 -25
- package/build/commands/compile/internal/checkCompileStatus.js +7 -9
- package/build/commands/compile/internal/compileFile.js +2 -2
- package/build/commands/compile/internal/compileTestFile.d.ts +1 -1
- package/build/commands/compile/internal/compileTestFile.js +16 -14
- package/build/commands/compile/internal/getAllFolders.d.ts +3 -2
- package/build/commands/compile/internal/getAllFolders.js +1 -0
- package/build/commands/compile/internal/identifySasFile.d.ts +2 -1
- package/build/commands/compile/internal/identifySasFile.js +20 -11
- package/build/commands/compile/internal/index.d.ts +9 -0
- package/build/commands/compile/internal/index.js +25 -0
- package/build/commands/compile/internal/spec/compileTestFile.spec.js +4 -4
- package/build/commands/compile/internal/spec/getAllFolders.spec.js +3 -3
- package/build/commands/compile/spec/compareFolders.spec.js +8 -8
- package/build/commands/compile/spec/compile.spec.js +42 -0
- package/build/commands/compile/spec/compileFile.spec.js +5 -6
- package/build/commands/compile/spec/compileSingleFile.spec.d.ts +1 -0
- package/build/commands/compile/spec/compileSingleFile.spec.js +162 -0
- package/build/commands/compile/spec/loadDependencies.spec.js +13 -13
- package/build/commands/run/run.js +2 -2
- package/build/types/command/commandBase.js +1 -1
- package/package.json +1 -1
- package/build/commands/compile/internal/getServerType.d.ts +0 -9
- package/build/commands/compile/internal/getServerType.js +0 -60
|
@@ -95,7 +95,7 @@ var compressAndSave_1 = require("../../utils/compressAndSave");
|
|
|
95
95
|
var config_1 = require("../../utils/config");
|
|
96
96
|
var file_1 = require("../../utils/file");
|
|
97
97
|
var compile_1 = require("../compile/compile");
|
|
98
|
-
var
|
|
98
|
+
var internal_1 = require("../compile/internal");
|
|
99
99
|
var config_2 = require("./internal/config");
|
|
100
100
|
var getLaunchPageCode_1 = require("./internal/getLaunchPageCode");
|
|
101
101
|
function build(target) {
|
|
@@ -550,7 +550,7 @@ var getDepsContent = function (deps, target, macroFolders) { return __awaiter(vo
|
|
|
550
550
|
switch (_a.label) {
|
|
551
551
|
case 0:
|
|
552
552
|
dependenciesContent = '';
|
|
553
|
-
compileTree = (0,
|
|
553
|
+
compileTree = (0, internal_1.getCompileTree)(target);
|
|
554
554
|
return [4 /*yield*/, (0, utils_1.asyncForEach)(deps, function (fp) { return __awaiter(void 0, void 0, void 0, function () {
|
|
555
555
|
var _a, _b;
|
|
556
556
|
return __generator(this, function (_c) {
|
|
@@ -558,7 +558,7 @@ var getDepsContent = function (deps, target, macroFolders) { return __awaiter(vo
|
|
|
558
558
|
case 0:
|
|
559
559
|
_a = dependenciesContent;
|
|
560
560
|
_b = '\n';
|
|
561
|
-
return [4 /*yield*/, (0,
|
|
561
|
+
return [4 /*yield*/, (0, internal_1.loadDependencies)(target, fp, macroFolders, [], types_1.SASJsFileType.file, compileTree)];
|
|
562
562
|
case 1:
|
|
563
563
|
dependenciesContent = _a + (_b +
|
|
564
564
|
(_c.sent()));
|
|
@@ -76,18 +76,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
76
76
|
exports.compileJobsServicesTests = exports.copyFilesToBuildFolder = exports.compile = void 0;
|
|
77
77
|
var utils_1 = require("@sasjs/utils");
|
|
78
78
|
var types_1 = require("@sasjs/utils/types");
|
|
79
|
+
var error_1 = require("@sasjs/utils/error");
|
|
79
80
|
var path_1 = __importDefault(require("path"));
|
|
80
81
|
var config_1 = require("../../utils/config");
|
|
81
82
|
var file_1 = require("../../utils/file");
|
|
82
83
|
var web_1 = require("../web/web");
|
|
83
84
|
var compileModule = __importStar(require("./compile"));
|
|
84
|
-
var
|
|
85
|
-
var compileFile_1 = require("./internal/compileFile");
|
|
86
|
-
var getAllFolders_1 = require("./internal/getAllFolders");
|
|
87
|
-
var compileTestFile_1 = require("./internal/compileTestFile");
|
|
88
|
-
var copySyncFolder_1 = require("./internal/copySyncFolder");
|
|
89
|
-
var getDestinationPath_1 = require("./internal/getDestinationPath");
|
|
90
|
-
var loadDependencies_1 = require("./internal/loadDependencies");
|
|
85
|
+
var internal_1 = require("./internal");
|
|
91
86
|
function compile(target, forceCompile) {
|
|
92
87
|
var _a, _b;
|
|
93
88
|
if (forceCompile === void 0) { forceCompile = false; }
|
|
@@ -96,7 +91,7 @@ function compile(target, forceCompile) {
|
|
|
96
91
|
var _this = this;
|
|
97
92
|
return __generator(this, function (_c) {
|
|
98
93
|
switch (_c.label) {
|
|
99
|
-
case 0: return [4 /*yield*/, (0,
|
|
94
|
+
case 0: return [4 /*yield*/, (0, internal_1.checkCompileStatus)(target, ['tests'])
|
|
100
95
|
// no need to compile again
|
|
101
96
|
];
|
|
102
97
|
case 1:
|
|
@@ -114,7 +109,7 @@ function compile(target, forceCompile) {
|
|
|
114
109
|
})];
|
|
115
110
|
case 2:
|
|
116
111
|
_c.sent();
|
|
117
|
-
compileTree = (0,
|
|
112
|
+
compileTree = (0, internal_1.getCompileTree)(target);
|
|
118
113
|
return [4 /*yield*/, compileModule.compileJobsServicesTests(target, compileTree)];
|
|
119
114
|
case 3:
|
|
120
115
|
_c.sent();
|
|
@@ -127,7 +122,7 @@ function compile(target, forceCompile) {
|
|
|
127
122
|
programFolders_1 = _c.sent();
|
|
128
123
|
return [4 /*yield*/, (0, utils_1.asyncForEach)(macroFolders, function (macroFolder) { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) {
|
|
129
124
|
switch (_a.label) {
|
|
130
|
-
case 0: return [4 /*yield*/, (0,
|
|
125
|
+
case 0: return [4 /*yield*/, (0, internal_1.copyTestMacroFiles)(macroFolder)];
|
|
131
126
|
case 1: return [2 /*return*/, _a.sent()];
|
|
132
127
|
}
|
|
133
128
|
}); }); })];
|
|
@@ -144,7 +139,7 @@ function compile(target, forceCompile) {
|
|
|
144
139
|
return [4 /*yield*/, (0, utils_1.asyncForEach)(macroTestFiles, function (macroTestFile) { return __awaiter(_this, void 0, void 0, function () {
|
|
145
140
|
return __generator(this, function (_a) {
|
|
146
141
|
switch (_a.label) {
|
|
147
|
-
case 0: return [4 /*yield*/, (0,
|
|
142
|
+
case 0: return [4 /*yield*/, (0, internal_1.compileFile)(target, path_1.default.join(buildMacroTestFolder_1, macroTestFile), macroFolders, programFolders_1, undefined, compileTree, types_1.SASJsFileType.service, '')];
|
|
148
143
|
case 1: return [2 /*return*/, _a.sent()];
|
|
149
144
|
}
|
|
150
145
|
});
|
|
@@ -155,7 +150,7 @@ function compile(target, forceCompile) {
|
|
|
155
150
|
case 11: return [4 /*yield*/, compileTree.saveTree()];
|
|
156
151
|
case 12:
|
|
157
152
|
_c.sent();
|
|
158
|
-
return [4 /*yield*/, (0,
|
|
153
|
+
return [4 /*yield*/, (0, internal_1.compileTestFlow)(target).catch(function (err) { var _a; return (_a = process.logger) === null || _a === void 0 ? void 0 : _a.error('Test flow compilation has failed.'); })];
|
|
159
154
|
case 13:
|
|
160
155
|
_c.sent();
|
|
161
156
|
return [4 /*yield*/, compileWeb(target)];
|
|
@@ -173,7 +168,7 @@ exports.compile = compile;
|
|
|
173
168
|
function copyFilesToBuildFolder(target) {
|
|
174
169
|
var _a, _b;
|
|
175
170
|
return __awaiter(this, void 0, void 0, function () {
|
|
176
|
-
var buildDestinationFolder, serviceFolders, jobFolders,
|
|
171
|
+
var buildDestinationFolder, serviceFolders, jobFolders, error_2;
|
|
177
172
|
var _this = this;
|
|
178
173
|
return __generator(this, function (_c) {
|
|
179
174
|
switch (_c.label) {
|
|
@@ -186,10 +181,10 @@ function copyFilesToBuildFolder(target) {
|
|
|
186
181
|
_c.label = 2;
|
|
187
182
|
case 2:
|
|
188
183
|
_c.trys.push([2, 7, , 8]);
|
|
189
|
-
return [4 /*yield*/, (0,
|
|
184
|
+
return [4 /*yield*/, (0, internal_1.getAllFolders)(target, internal_1.SasFileType.Service)];
|
|
190
185
|
case 3:
|
|
191
186
|
serviceFolders = _c.sent();
|
|
192
|
-
return [4 /*yield*/, (0,
|
|
187
|
+
return [4 /*yield*/, (0, internal_1.getAllFolders)(target, internal_1.SasFileType.Job)
|
|
193
188
|
// REFACTOR
|
|
194
189
|
];
|
|
195
190
|
case 4:
|
|
@@ -200,7 +195,7 @@ function copyFilesToBuildFolder(target) {
|
|
|
200
195
|
return __generator(this, function (_a) {
|
|
201
196
|
switch (_a.label) {
|
|
202
197
|
case 0:
|
|
203
|
-
destinationPath = (0,
|
|
198
|
+
destinationPath = (0, internal_1.getDestinationServicePath)(serviceFolder);
|
|
204
199
|
return [4 /*yield*/, (0, utils_1.copy)(serviceFolder, destinationPath)];
|
|
205
200
|
case 1:
|
|
206
201
|
_a.sent();
|
|
@@ -216,7 +211,7 @@ function copyFilesToBuildFolder(target) {
|
|
|
216
211
|
return __generator(this, function (_a) {
|
|
217
212
|
switch (_a.label) {
|
|
218
213
|
case 0:
|
|
219
|
-
destinationPath = (0,
|
|
214
|
+
destinationPath = (0, internal_1.getDestinationJobPath)(jobFolder);
|
|
220
215
|
return [4 /*yield*/, (0, utils_1.copy)(jobFolder, destinationPath)];
|
|
221
216
|
case 1:
|
|
222
217
|
_a.sent();
|
|
@@ -228,9 +223,9 @@ function copyFilesToBuildFolder(target) {
|
|
|
228
223
|
_c.sent();
|
|
229
224
|
return [3 /*break*/, 8];
|
|
230
225
|
case 7:
|
|
231
|
-
|
|
226
|
+
error_2 = _c.sent();
|
|
232
227
|
(_b = process.logger) === null || _b === void 0 ? void 0 : _b.error("An error has occurred when copying files to ".concat(buildDestinationFolder, " ."));
|
|
233
|
-
throw
|
|
228
|
+
throw error_2;
|
|
234
229
|
case 8: return [2 /*return*/];
|
|
235
230
|
}
|
|
236
231
|
});
|
|
@@ -238,43 +233,46 @@ function copyFilesToBuildFolder(target) {
|
|
|
238
233
|
}
|
|
239
234
|
exports.copyFilesToBuildFolder = copyFilesToBuildFolder;
|
|
240
235
|
function compileJobsServicesTests(target, compileTree) {
|
|
241
|
-
var _a;
|
|
242
236
|
return __awaiter(this, void 0, void 0, function () {
|
|
243
|
-
var serviceFolders, jobFolders, macroFolders_1, programFolders_2, testSetUp, testTearDown,
|
|
237
|
+
var serviceFolders, jobFolders, macroFolders_1, programFolders_2, testSetUp, testTearDown, error_3;
|
|
244
238
|
var _this = this;
|
|
245
|
-
return __generator(this, function (
|
|
246
|
-
switch (
|
|
239
|
+
return __generator(this, function (_a) {
|
|
240
|
+
switch (_a.label) {
|
|
247
241
|
case 0:
|
|
248
|
-
|
|
249
|
-
return [4 /*yield*/, (0,
|
|
242
|
+
_a.trys.push([0, 13, , 14]);
|
|
243
|
+
return [4 /*yield*/, (0, internal_1.getAllFolders)(target, internal_1.SasFileType.Service)];
|
|
250
244
|
case 1:
|
|
251
|
-
serviceFolders =
|
|
252
|
-
return [4 /*yield*/, (0,
|
|
245
|
+
serviceFolders = _a.sent();
|
|
246
|
+
return [4 /*yield*/, (0, internal_1.getAllFolders)(target, internal_1.SasFileType.Job)];
|
|
253
247
|
case 2:
|
|
254
|
-
jobFolders =
|
|
248
|
+
jobFolders = _a.sent();
|
|
255
249
|
return [4 /*yield*/, (0, config_1.getMacroFolders)(target)];
|
|
256
250
|
case 3:
|
|
257
|
-
macroFolders_1 =
|
|
251
|
+
macroFolders_1 = _a.sent();
|
|
258
252
|
return [4 /*yield*/, (0, config_1.getProgramFolders)(target)];
|
|
259
253
|
case 4:
|
|
260
|
-
programFolders_2 =
|
|
254
|
+
programFolders_2 = _a.sent();
|
|
261
255
|
return [4 /*yield*/, (0, config_1.getTestSetUp)(target)];
|
|
262
256
|
case 5:
|
|
263
|
-
testSetUp =
|
|
257
|
+
testSetUp = _a.sent();
|
|
264
258
|
return [4 /*yield*/, (0, config_1.getTestTearDown)(target)];
|
|
265
259
|
case 6:
|
|
266
|
-
testTearDown =
|
|
260
|
+
testTearDown = _a.sent();
|
|
267
261
|
if (!testSetUp) return [3 /*break*/, 8];
|
|
268
|
-
return [4 /*yield*/, (0,
|
|
262
|
+
return [4 /*yield*/, (0, internal_1.compileTestFile)(target, testSetUp, '', true, false, compileTree).catch(function (err) {
|
|
263
|
+
throw (0, error_1.prefixMessage)(err, 'Test set up compilation has failed. ');
|
|
264
|
+
})];
|
|
269
265
|
case 7:
|
|
270
|
-
|
|
271
|
-
|
|
266
|
+
_a.sent();
|
|
267
|
+
_a.label = 8;
|
|
272
268
|
case 8:
|
|
273
269
|
if (!testTearDown) return [3 /*break*/, 10];
|
|
274
|
-
return [4 /*yield*/, (0,
|
|
270
|
+
return [4 /*yield*/, (0, internal_1.compileTestFile)(target, testTearDown, '', true, false, compileTree).catch(function (err) {
|
|
271
|
+
throw (0, error_1.prefixMessage)(err, 'Test tear down compilation has failed. ');
|
|
272
|
+
})];
|
|
275
273
|
case 9:
|
|
276
|
-
|
|
277
|
-
|
|
274
|
+
_a.sent();
|
|
275
|
+
_a.label = 10;
|
|
278
276
|
case 10: return [4 /*yield*/, (0, utils_1.asyncForEach)(serviceFolders, function (serviceFolder) { return __awaiter(_this, void 0, void 0, function () {
|
|
279
277
|
return __generator(this, function (_a) {
|
|
280
278
|
switch (_a.label) {
|
|
@@ -286,7 +284,7 @@ function compileJobsServicesTests(target, compileTree) {
|
|
|
286
284
|
});
|
|
287
285
|
}); })];
|
|
288
286
|
case 11:
|
|
289
|
-
|
|
287
|
+
_a.sent();
|
|
290
288
|
return [4 /*yield*/, (0, utils_1.asyncForEach)(jobFolders, function (jobFolder) { return __awaiter(_this, void 0, void 0, function () {
|
|
291
289
|
return __generator(this, function (_a) {
|
|
292
290
|
switch (_a.label) {
|
|
@@ -298,12 +296,11 @@ function compileJobsServicesTests(target, compileTree) {
|
|
|
298
296
|
});
|
|
299
297
|
}); })];
|
|
300
298
|
case 12:
|
|
301
|
-
|
|
299
|
+
_a.sent();
|
|
302
300
|
return [3 /*break*/, 14];
|
|
303
301
|
case 13:
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
throw error_2;
|
|
302
|
+
error_3 = _a.sent();
|
|
303
|
+
throw error_3;
|
|
307
304
|
case 14: return [2 /*return*/];
|
|
308
305
|
}
|
|
309
306
|
});
|
|
@@ -341,7 +338,7 @@ var compileServiceFolder = function (target, serviceFolder, macroFolders, progra
|
|
|
341
338
|
return __generator(this, function (_a) {
|
|
342
339
|
switch (_a.label) {
|
|
343
340
|
case 0:
|
|
344
|
-
destinationPath = (0,
|
|
341
|
+
destinationPath = (0, internal_1.getDestinationServicePath)(serviceFolder);
|
|
345
342
|
return [4 /*yield*/, (0, utils_1.listSubFoldersInFolder)(destinationPath)];
|
|
346
343
|
case 1:
|
|
347
344
|
subFolders = _a.sent();
|
|
@@ -376,11 +373,11 @@ var compileServiceFolder = function (target, serviceFolder, macroFolders, progra
|
|
|
376
373
|
case 0:
|
|
377
374
|
filePath = path_1.default.join(destinationPath, fileName);
|
|
378
375
|
if (!(0, utils_1.isTestFile)(filePath)) return [3 /*break*/, 2];
|
|
379
|
-
return [4 /*yield*/, (0,
|
|
376
|
+
return [4 /*yield*/, (0, internal_1.compileTestFile)(target, filePath, '', false, undefined, compileTree)];
|
|
380
377
|
case 1:
|
|
381
378
|
_a.sent();
|
|
382
379
|
return [3 /*break*/, 4];
|
|
383
|
-
case 2: return [4 /*yield*/, (0,
|
|
380
|
+
case 2: return [4 /*yield*/, (0, internal_1.compileFile)(target, filePath, macroFolders, programFolders, undefined, compileTree, types_1.SASJsFileType.service, serviceFolder)];
|
|
384
381
|
case 3:
|
|
385
382
|
_a.sent();
|
|
386
383
|
_a.label = 4;
|
|
@@ -406,11 +403,11 @@ var compileServiceFolder = function (target, serviceFolder, macroFolders, progra
|
|
|
406
403
|
case 0:
|
|
407
404
|
filePath = path_1.default.join(destinationPath, subFolder, fileName);
|
|
408
405
|
if (!(0, utils_1.isTestFile)(filePath)) return [3 /*break*/, 2];
|
|
409
|
-
return [4 /*yield*/, (0,
|
|
406
|
+
return [4 /*yield*/, (0, internal_1.compileTestFile)(target, filePath, '', false, undefined, compileTree)];
|
|
410
407
|
case 1:
|
|
411
408
|
_a.sent();
|
|
412
409
|
return [3 /*break*/, 4];
|
|
413
|
-
case 2: return [4 /*yield*/, (0,
|
|
410
|
+
case 2: return [4 /*yield*/, (0, internal_1.compileFile)(target, filePath, macroFolders, programFolders, undefined, compileTree, types_1.SASJsFileType.service, sourceFolder)];
|
|
414
411
|
case 3:
|
|
415
412
|
_a.sent();
|
|
416
413
|
_a.label = 4;
|
|
@@ -436,7 +433,7 @@ var compileJobFolder = function (target, jobFolder, macroFolders, programFolders
|
|
|
436
433
|
return __generator(this, function (_a) {
|
|
437
434
|
switch (_a.label) {
|
|
438
435
|
case 0:
|
|
439
|
-
destinationPath = (0,
|
|
436
|
+
destinationPath = (0, internal_1.getDestinationJobPath)(jobFolder);
|
|
440
437
|
return [4 /*yield*/, (0, utils_1.listSubFoldersInFolder)(destinationPath)];
|
|
441
438
|
case 1:
|
|
442
439
|
subFolders = _a.sent();
|
|
@@ -471,11 +468,11 @@ var compileJobFolder = function (target, jobFolder, macroFolders, programFolders
|
|
|
471
468
|
case 0:
|
|
472
469
|
filePath = path_1.default.join(destinationPath, fileName);
|
|
473
470
|
if (!(0, utils_1.isTestFile)(fileName)) return [3 /*break*/, 2];
|
|
474
|
-
return [4 /*yield*/, (0,
|
|
471
|
+
return [4 /*yield*/, (0, internal_1.compileTestFile)(target, filePath, '', false, undefined, compileTree)];
|
|
475
472
|
case 1:
|
|
476
473
|
_a.sent();
|
|
477
474
|
return [3 /*break*/, 4];
|
|
478
|
-
case 2: return [4 /*yield*/, (0,
|
|
475
|
+
case 2: return [4 /*yield*/, (0, internal_1.compileFile)(target, filePath, macroFolders, programFolders, undefined, compileTree, types_1.SASJsFileType.job, jobFolder)];
|
|
479
476
|
case 3:
|
|
480
477
|
_a.sent();
|
|
481
478
|
_a.label = 4;
|
|
@@ -501,11 +498,11 @@ var compileJobFolder = function (target, jobFolder, macroFolders, programFolders
|
|
|
501
498
|
case 0:
|
|
502
499
|
filePath = path_1.default.join(destinationPath, subFolder, fileName);
|
|
503
500
|
if (!(0, utils_1.isTestFile)(filePath)) return [3 /*break*/, 2];
|
|
504
|
-
return [4 /*yield*/, (0,
|
|
501
|
+
return [4 /*yield*/, (0, internal_1.compileTestFile)(target, filePath, '', false, undefined, compileTree)];
|
|
505
502
|
case 1:
|
|
506
503
|
_a.sent();
|
|
507
504
|
return [3 /*break*/, 4];
|
|
508
|
-
case 2: return [4 /*yield*/, (0,
|
|
505
|
+
case 2: return [4 /*yield*/, (0, internal_1.compileFile)(target, filePath, macroFolders, programFolders, undefined, compileTree, types_1.SASJsFileType.job, sourcePath)];
|
|
509
506
|
case 3:
|
|
510
507
|
_a.sent();
|
|
511
508
|
_a.label = 4;
|
|
@@ -558,13 +555,13 @@ var syncFolder = function (target) { return __awaiter(void 0, void 0, void 0, fu
|
|
|
558
555
|
case 0:
|
|
559
556
|
configuration = process.sasjsConfig;
|
|
560
557
|
if (!configuration.syncFolder) return [3 /*break*/, 2];
|
|
561
|
-
return [4 /*yield*/, (0,
|
|
558
|
+
return [4 /*yield*/, (0, internal_1.copySyncFolder)(configuration.syncFolder)];
|
|
562
559
|
case 1:
|
|
563
560
|
_a.sent();
|
|
564
561
|
_a.label = 2;
|
|
565
562
|
case 2:
|
|
566
563
|
if (!target.syncFolder) return [3 /*break*/, 4];
|
|
567
|
-
return [4 /*yield*/, (0,
|
|
564
|
+
return [4 /*yield*/, (0, internal_1.copySyncFolder)(target.syncFolder)];
|
|
568
565
|
case 3:
|
|
569
566
|
_a.sent();
|
|
570
567
|
_a.label = 4;
|
|
@@ -67,6 +67,7 @@ var CompileSubCommand;
|
|
|
67
67
|
(function (CompileSubCommand) {
|
|
68
68
|
CompileSubCommand["Job"] = "job";
|
|
69
69
|
CompileSubCommand["Service"] = "service";
|
|
70
|
+
CompileSubCommand["Test"] = "test";
|
|
70
71
|
CompileSubCommand["Identify"] = "identify";
|
|
71
72
|
})(CompileSubCommand || (CompileSubCommand = {}));
|
|
72
73
|
var syntax = 'compile [subCommand]';
|
|
@@ -94,8 +95,9 @@ var CompileCommand = /** @class */ (function (_super) {
|
|
|
94
95
|
var subCommand = args[3];
|
|
95
96
|
if ([
|
|
96
97
|
CompileSubCommand.Job,
|
|
97
|
-
CompileSubCommand.
|
|
98
|
-
CompileSubCommand.
|
|
98
|
+
CompileSubCommand.Service,
|
|
99
|
+
CompileSubCommand.Test,
|
|
100
|
+
CompileSubCommand.Identify
|
|
99
101
|
].includes(subCommand)) {
|
|
100
102
|
parseOptions = subCommandParseOptions;
|
|
101
103
|
}
|
|
@@ -169,7 +171,7 @@ var CompileCommand = /** @class */ (function (_super) {
|
|
|
169
171
|
return command_1.ReturnCode.Success;
|
|
170
172
|
})
|
|
171
173
|
.catch(function (err) {
|
|
172
|
-
(0, utils_1.displayError)(err, 'An error has occurred
|
|
174
|
+
(0, utils_1.displayError)(err, 'An error has occurred during compilation.');
|
|
173
175
|
return command_1.ReturnCode.InternalError;
|
|
174
176
|
})];
|
|
175
177
|
case 2: return [2 /*return*/, _a.sent()];
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
import { Target } from '@sasjs/utils';
|
|
2
|
+
export declare enum CompileSingleFileSubCommands {
|
|
3
|
+
Job = "job",
|
|
4
|
+
Service = "service",
|
|
5
|
+
Test = "test"
|
|
6
|
+
}
|
|
2
7
|
export declare function compileSingleFile(target: Target, subCommand: string | undefined, source: string, output: string, insertProgramVar?: boolean, currentFolder?: string): Promise<{
|
|
3
8
|
destinationPath: string;
|
|
4
9
|
}>;
|
|
@@ -39,28 +39,33 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
39
39
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
40
40
|
};
|
|
41
41
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
-
exports.compileSingleFile = void 0;
|
|
42
|
+
exports.compileSingleFile = exports.CompileSingleFileSubCommands = void 0;
|
|
43
43
|
var path_1 = __importDefault(require("path"));
|
|
44
44
|
var config_1 = require("../../utils/config");
|
|
45
45
|
var utils_1 = require("@sasjs/utils");
|
|
46
|
-
var
|
|
47
|
-
var
|
|
48
|
-
var
|
|
46
|
+
var error_1 = require("@sasjs/utils/error");
|
|
47
|
+
var internal_1 = require("./internal");
|
|
48
|
+
var CompileSingleFileSubCommands;
|
|
49
|
+
(function (CompileSingleFileSubCommands) {
|
|
50
|
+
CompileSingleFileSubCommands["Job"] = "job";
|
|
51
|
+
CompileSingleFileSubCommands["Service"] = "service";
|
|
52
|
+
CompileSingleFileSubCommands["Test"] = "test";
|
|
53
|
+
})(CompileSingleFileSubCommands = exports.CompileSingleFileSubCommands || (exports.CompileSingleFileSubCommands = {}));
|
|
54
|
+
var isCompileSingleFileSubCommands = function (command) {
|
|
55
|
+
return Object.values(CompileSingleFileSubCommands).includes(command);
|
|
56
|
+
};
|
|
49
57
|
function compileSingleFile(target, subCommand, source, output, insertProgramVar, currentFolder) {
|
|
50
58
|
var _a;
|
|
51
59
|
if (subCommand === void 0) { subCommand = 'identify'; }
|
|
52
60
|
if (insertProgramVar === void 0) { insertProgramVar = false; }
|
|
53
61
|
return __awaiter(this, void 0, void 0, function () {
|
|
54
|
-
var
|
|
62
|
+
var commandExample, sourcePath, outputPathParts, leafFolderName, parentOutputFolder, pathExists, sourceFileName, destinationPath, sourceFileNameWithoutExt, macroFolders, programFolders, psMaxOption, programVar, compileTree, sourceFolder, _b;
|
|
55
63
|
return __generator(this, function (_c) {
|
|
56
64
|
switch (_c.label) {
|
|
57
65
|
case 0:
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
};
|
|
62
|
-
if (!subCommands.hasOwnProperty(subCommand) && subCommand !== 'identify') {
|
|
63
|
-
throw new Error("Unsupported context command. Supported commands are:\n".concat(Object.keys(subCommands).join('\n')));
|
|
66
|
+
if (!isCompileSingleFileSubCommands(subCommand) &&
|
|
67
|
+
subCommand !== 'identify') {
|
|
68
|
+
throw new Error("Unsupported context command. Supported commands are:\n".concat(Object.values(CompileSingleFileSubCommands).join('\n')));
|
|
64
69
|
}
|
|
65
70
|
commandExample = 'sasjs compile <command> --source myjob.sas --target targetName -output /some/folder';
|
|
66
71
|
if (!source) {
|
|
@@ -71,18 +76,20 @@ function compileSingleFile(target, subCommand, source, output, insertProgramVar,
|
|
|
71
76
|
return [4 /*yield*/, validateSourcePath(sourcePath)];
|
|
72
77
|
case 1:
|
|
73
78
|
if (!(_c.sent())) {
|
|
74
|
-
throw new Error("Provide a path to source file (eg '".concat(commandExample, "')"));
|
|
79
|
+
throw new Error("Provide a valid path to source file (eg '".concat(commandExample, "')"));
|
|
75
80
|
}
|
|
76
81
|
if (!(subCommand === 'identify')) return [3 /*break*/, 3];
|
|
77
|
-
return [4 /*yield*/, (0,
|
|
82
|
+
return [4 /*yield*/, (0, internal_1.identifySasFile)(target, sourcePath).catch(function (err) {
|
|
83
|
+
throw (0, error_1.prefixMessage)(err, 'Single file compilation failed. ');
|
|
84
|
+
})];
|
|
78
85
|
case 2:
|
|
79
86
|
subCommand = _c.sent();
|
|
80
87
|
_c.label = 3;
|
|
81
88
|
case 3:
|
|
82
89
|
(_a = process.logger) === null || _a === void 0 ? void 0 : _a.info("Compiling source file:\n- ".concat(sourcePath));
|
|
83
90
|
outputPathParts = output.split(path_1.default.sep);
|
|
84
|
-
leafFolderName = source.split(path_1.default.sep).pop();
|
|
85
91
|
outputPathParts.pop(), outputPathParts.pop();
|
|
92
|
+
leafFolderName = source.split(path_1.default.sep).pop();
|
|
86
93
|
parentOutputFolder = outputPathParts.join(path_1.default.sep);
|
|
87
94
|
return [4 /*yield*/, (0, utils_1.fileExists)(parentOutputFolder)];
|
|
88
95
|
case 4:
|
|
@@ -111,28 +118,32 @@ function compileSingleFile(target, subCommand, source, output, insertProgramVar,
|
|
|
111
118
|
programVar = insertProgramVar
|
|
112
119
|
? "%let _program=".concat(target.appLoc, "/").concat(subCommand, "s/").concat(leafFolderName, "/").concat(sourceFileNameWithoutExt, ";\n").concat(psMaxOption)
|
|
113
120
|
: "".concat(psMaxOption);
|
|
114
|
-
compileTree = (0,
|
|
121
|
+
compileTree = (0, internal_1.getCompileTree)(target);
|
|
115
122
|
sourceFolder = sourcePath
|
|
116
123
|
.split(path_1.default.sep)
|
|
117
124
|
.slice(0, sourcePath.split(path_1.default.sep).length - 1)
|
|
118
125
|
.join(path_1.default.sep);
|
|
119
126
|
_b = subCommand;
|
|
120
127
|
switch (_b) {
|
|
121
|
-
case
|
|
122
|
-
case
|
|
128
|
+
case CompileSingleFileSubCommands.Service: return [3 /*break*/, 11];
|
|
129
|
+
case CompileSingleFileSubCommands.Job: return [3 /*break*/, 13];
|
|
130
|
+
case CompileSingleFileSubCommands.Test: return [3 /*break*/, 15];
|
|
123
131
|
}
|
|
124
|
-
return [3 /*break*/,
|
|
125
|
-
case 11: return [4 /*yield*/, (0,
|
|
132
|
+
return [3 /*break*/, 17];
|
|
133
|
+
case 11: return [4 /*yield*/, (0, internal_1.compileFile)(target, destinationPath, macroFolders, programFolders, programVar, compileTree, utils_1.SASJsFileType.service, sourceFolder)];
|
|
126
134
|
case 12:
|
|
127
135
|
_c.sent();
|
|
128
|
-
return [3 /*break*/,
|
|
129
|
-
case 13: return [4 /*yield*/, (0,
|
|
136
|
+
return [3 /*break*/, 17];
|
|
137
|
+
case 13: return [4 /*yield*/, (0, internal_1.compileFile)(target, destinationPath, macroFolders, programFolders, programVar, compileTree, utils_1.SASJsFileType.job, sourceFolder)];
|
|
130
138
|
case 14:
|
|
131
139
|
_c.sent();
|
|
132
|
-
return [3 /*break*/,
|
|
133
|
-
case 15: return [
|
|
134
|
-
case 16:
|
|
135
|
-
|
|
140
|
+
return [3 /*break*/, 17];
|
|
141
|
+
case 15: return [4 /*yield*/, (0, internal_1.compileTestFile)(target, sourcePath, programVar, undefined, false, compileTree, destinationPath)];
|
|
142
|
+
case 16:
|
|
143
|
+
_c.sent();
|
|
144
|
+
return [3 /*break*/, 17];
|
|
145
|
+
case 17: return [4 /*yield*/, compileTree.saveTree()];
|
|
146
|
+
case 18:
|
|
136
147
|
_c.sent();
|
|
137
148
|
return [2 /*return*/, { destinationPath: destinationPath }];
|
|
138
149
|
}
|
|
@@ -38,9 +38,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
39
|
exports.checkCompileStatus = void 0;
|
|
40
40
|
var utils_1 = require("@sasjs/utils");
|
|
41
|
-
var
|
|
42
|
-
var getAllFolders_1 = require("./getAllFolders");
|
|
43
|
-
var getDestinationPath_1 = require("./getDestinationPath");
|
|
41
|
+
var _1 = require("./");
|
|
44
42
|
function checkCompileStatus(target, exceptions) {
|
|
45
43
|
return __awaiter(this, void 0, void 0, function () {
|
|
46
44
|
var buildDestinationFolder, pathExists, _a, areServiceFoldersMatching, serviceReasons, _b, areJobFoldersMatching, jobReasons, compiled;
|
|
@@ -86,7 +84,7 @@ var checkServiceFolders = function (target, exceptions) { return __awaiter(void
|
|
|
86
84
|
var serviceFolders, areServiceFoldersMatching, reasons;
|
|
87
85
|
return __generator(this, function (_a) {
|
|
88
86
|
switch (_a.label) {
|
|
89
|
-
case 0: return [4 /*yield*/, (0,
|
|
87
|
+
case 0: return [4 /*yield*/, (0, _1.getAllFolders)(target, _1.SasFileType.Service)];
|
|
90
88
|
case 1:
|
|
91
89
|
serviceFolders = _a.sent();
|
|
92
90
|
areServiceFoldersMatching = true;
|
|
@@ -96,8 +94,8 @@ var checkServiceFolders = function (target, exceptions) { return __awaiter(void
|
|
|
96
94
|
return __generator(this, function (_b) {
|
|
97
95
|
switch (_b.label) {
|
|
98
96
|
case 0:
|
|
99
|
-
destinationPath = (0,
|
|
100
|
-
return [4 /*yield*/, (0,
|
|
97
|
+
destinationPath = (0, _1.getDestinationServicePath)(serviceFolder);
|
|
98
|
+
return [4 /*yield*/, (0, _1.compareFolders)(serviceFolder, destinationPath, exceptions)];
|
|
101
99
|
case 1:
|
|
102
100
|
_a = _b.sent(), equal = _a.equal, reason = _a.reason;
|
|
103
101
|
areServiceFoldersMatching = areServiceFoldersMatching && equal;
|
|
@@ -125,7 +123,7 @@ var checkJobFolders = function (target, exceptions) { return __awaiter(void 0, v
|
|
|
125
123
|
var jobFolders, areJobFoldersMatching, reasons;
|
|
126
124
|
return __generator(this, function (_a) {
|
|
127
125
|
switch (_a.label) {
|
|
128
|
-
case 0: return [4 /*yield*/, (0,
|
|
126
|
+
case 0: return [4 /*yield*/, (0, _1.getAllFolders)(target, _1.SasFileType.Job)];
|
|
129
127
|
case 1:
|
|
130
128
|
jobFolders = _a.sent();
|
|
131
129
|
areJobFoldersMatching = true;
|
|
@@ -135,8 +133,8 @@ var checkJobFolders = function (target, exceptions) { return __awaiter(void 0, v
|
|
|
135
133
|
return __generator(this, function (_b) {
|
|
136
134
|
switch (_b.label) {
|
|
137
135
|
case 0:
|
|
138
|
-
destinationPath = (0,
|
|
139
|
-
return [4 /*yield*/, (0,
|
|
136
|
+
destinationPath = (0, _1.getDestinationJobPath)(jobFolder);
|
|
137
|
+
return [4 /*yield*/, (0, _1.compareFolders)(jobFolder, destinationPath, exceptions)];
|
|
140
138
|
case 1:
|
|
141
139
|
_a = _b.sent(), equal = _a.equal, reason = _a.reason;
|
|
142
140
|
areJobFoldersMatching = areJobFoldersMatching && equal;
|
|
@@ -42,7 +42,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
42
42
|
exports.compileFile = void 0;
|
|
43
43
|
var utils_1 = require("@sasjs/utils");
|
|
44
44
|
var types_1 = require("@sasjs/utils/types");
|
|
45
|
-
var
|
|
45
|
+
var _1 = require("./");
|
|
46
46
|
var path_1 = __importDefault(require("path"));
|
|
47
47
|
/**
|
|
48
48
|
* Compiles file dependencies.
|
|
@@ -61,7 +61,7 @@ function compileFile(target, filePath, macroFolders, programFolders, programVar,
|
|
|
61
61
|
var dependencies;
|
|
62
62
|
return __generator(this, function (_a) {
|
|
63
63
|
switch (_a.label) {
|
|
64
|
-
case 0: return [4 /*yield*/, (0,
|
|
64
|
+
case 0: return [4 /*yield*/, (0, _1.loadDependencies)(target, sourceFolder
|
|
65
65
|
? path_1.default.join(sourceFolder, filePath.split(path_1.default.sep).pop())
|
|
66
66
|
: filePath, macroFolders, programFolders, (0, utils_1.isTestFile)(filePath) ? types_1.SASJsFileType.test : fileType, compileTree)];
|
|
67
67
|
case 1:
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { CompileTree, Configuration, Target } from '@sasjs/utils';
|
|
2
2
|
import { TestFlow } from '../../../types';
|
|
3
|
-
export declare function compileTestFile(target: Target, filePath: string, testVar: string | undefined, saveToRoot: boolean | undefined, removeOriginalFile: boolean | undefined, compileTree: CompileTree): Promise<void>;
|
|
3
|
+
export declare function compileTestFile(target: Target, filePath: string, testVar: string | undefined, saveToRoot: boolean | undefined, removeOriginalFile: boolean | undefined, compileTree: CompileTree, destinationPath?: string): Promise<void>;
|
|
4
4
|
export declare function copyTestMacroFiles(folderAbsolutePath: string): Promise<void>;
|
|
5
5
|
export declare const compileTestFlow: (target: Target, config?: Configuration) => Promise<TestFlow | undefined>;
|
|
@@ -71,18 +71,18 @@ var path_1 = __importDefault(require("path"));
|
|
|
71
71
|
var types_1 = require("../../../types");
|
|
72
72
|
var config_1 = require("../../../utils/config");
|
|
73
73
|
var file_1 = require("../../../utils/file");
|
|
74
|
-
var
|
|
74
|
+
var _1 = require("./");
|
|
75
75
|
var getFileName = function (filePath) { return path_1.default.parse(filePath).base; };
|
|
76
|
-
function compileTestFile(target, filePath, testVar, saveToRoot, removeOriginalFile, compileTree) {
|
|
76
|
+
function compileTestFile(target, filePath, testVar, saveToRoot, removeOriginalFile, compileTree, destinationPath) {
|
|
77
77
|
if (testVar === void 0) { testVar = ''; }
|
|
78
78
|
if (saveToRoot === void 0) { saveToRoot = true; }
|
|
79
79
|
if (removeOriginalFile === void 0) { removeOriginalFile = true; }
|
|
80
80
|
return __awaiter(this, void 0, void 0, function () {
|
|
81
|
-
var dependencies, _a, _b, _c, buildDestinationFolder, buildDestinationTestFolder, buildDestinationFolderName
|
|
81
|
+
var dependencies, _a, _b, _c, buildDestinationFolder, buildDestinationTestFolder, buildDestinationFolderName;
|
|
82
82
|
return __generator(this, function (_d) {
|
|
83
83
|
switch (_d.label) {
|
|
84
84
|
case 0:
|
|
85
|
-
_a =
|
|
85
|
+
_a = _1.loadDependencies;
|
|
86
86
|
_b = [target,
|
|
87
87
|
(0, utils_1.getAbsolutePath)(filePath, process.projectDir)];
|
|
88
88
|
return [4 /*yield*/, (0, config_1.getMacroFolders)(target)];
|
|
@@ -98,16 +98,18 @@ function compileTestFile(target, filePath, testVar, saveToRoot, removeOriginalFi
|
|
|
98
98
|
buildDestinationFolderName = buildDestinationFolder
|
|
99
99
|
.split(path_1.default.sep)
|
|
100
100
|
.pop();
|
|
101
|
-
destinationPath =
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
101
|
+
destinationPath =
|
|
102
|
+
destinationPath ||
|
|
103
|
+
path_1.default.join(buildDestinationTestFolder, saveToRoot
|
|
104
|
+
? filePath.split(path_1.default.sep).pop() || ''
|
|
105
|
+
: filePath
|
|
106
|
+
.split(path_1.default.sep)
|
|
107
|
+
.reduce(function (acc, item, i, arr) {
|
|
108
|
+
return acc.length
|
|
109
|
+
? __spreadArray(__spreadArray([], __read(acc), false), [item], false) : arr[i - 1] === buildDestinationFolderName
|
|
110
|
+
? __spreadArray(__spreadArray([], __read(acc), false), [item], false) : acc;
|
|
111
|
+
}, [])
|
|
112
|
+
.join(path_1.default.sep));
|
|
111
113
|
return [4 /*yield*/, (0, utils_1.createFile)(destinationPath, dependencies)];
|
|
112
114
|
case 4:
|
|
113
115
|
_d.sent();
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Configuration, Target } from '@sasjs/utils';
|
|
2
2
|
export declare enum SasFileType {
|
|
3
3
|
Service = "service",
|
|
4
|
-
Job = "job"
|
|
4
|
+
Job = "job",
|
|
5
|
+
Test = "test"
|
|
5
6
|
}
|
|
6
|
-
export declare const getAllFolders: (target: Target, type: SasFileType, rootConfig?: Configuration) => Promise<string[]>;
|
|
7
|
+
export declare const getAllFolders: (target: Target, type: SasFileType.Service | SasFileType.Job, rootConfig?: Configuration) => Promise<string[]>;
|