@sasjs/cli 3.9.0 → 3.10.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/compile/compile.d.ts +2 -1
- package/build/commands/compile/compile.js +15 -12
- package/build/commands/compile/compileSingleFile.js +5 -3
- package/build/commands/compile/internal/compileJobFile.d.ts +2 -1
- package/build/commands/compile/internal/compileJobFile.js +2 -2
- package/build/commands/compile/internal/compileServiceFile.d.ts +2 -1
- package/build/commands/compile/internal/compileServiceFile.js +2 -2
- package/build/commands/compile/internal/compileTestFile.js +4 -2
- package/build/commands/compile/internal/loadDependencies.d.ts +3 -2
- package/build/commands/compile/internal/loadDependencies.js +37 -16
- package/build/commands/compile/internal/spec/compileTestFile.spec.js +2 -2
- package/build/commands/compile/spec/compileJobFile.spec.js +6 -4
- package/build/commands/compile/spec/compileServiceFile.spec.js +6 -4
- package/build/commands/compile/spec/loadDependencies.spec.js +38 -32
- package/build/commands/docs/generateDocs.js +3 -7
- package/build/commands/docs/internal/getFileInputs.js +1 -1
- package/build/commands/docs/internal/getFileOutputs.js +1 -1
- package/build/utils/spec/removeComments.spec.d.ts +1 -1
- package/build/utils/spec/removeComments.spec.js +2 -1
- package/build/utils/utils.d.ts +0 -1
- package/build/utils/utils.js +2 -4
- package/package.json +2 -2
|
@@ -1,4 +1,5 @@
|
|
|
1
|
+
import { CompileTree } from '@sasjs/utils';
|
|
1
2
|
import { Target } from '@sasjs/utils/types';
|
|
2
3
|
export declare function compile(target: Target, forceCompile?: boolean): Promise<void>;
|
|
3
4
|
export declare function copyFilesToBuildFolder(target: Target): Promise<void>;
|
|
4
|
-
export declare function compileJobsServicesTests(target: Target): Promise<void>;
|
|
5
|
+
export declare function compileJobsServicesTests(target: Target, compileTree: CompileTree): Promise<void>;
|
|
@@ -82,11 +82,12 @@ var compileServiceFile_1 = require("./internal/compileServiceFile");
|
|
|
82
82
|
var compileJobFile_1 = require("./internal/compileJobFile");
|
|
83
83
|
var compileTestFile_1 = require("./internal/compileTestFile");
|
|
84
84
|
var getDestinationPath_1 = require("./internal/getDestinationPath");
|
|
85
|
+
var loadDependencies_1 = require("./internal/loadDependencies");
|
|
85
86
|
function compile(target, forceCompile) {
|
|
86
87
|
var _a, _b;
|
|
87
88
|
if (forceCompile === void 0) { forceCompile = false; }
|
|
88
89
|
return __awaiter(this, void 0, void 0, function () {
|
|
89
|
-
var result, macroFolders, programFolders_1, buildMacroTestFolder_1, macroTestFiles;
|
|
90
|
+
var result, compileTree, macroFolders, programFolders_1, buildMacroTestFolder_1, macroTestFiles;
|
|
90
91
|
var _this = this;
|
|
91
92
|
return __generator(this, function (_c) {
|
|
92
93
|
switch (_c.label) {
|
|
@@ -108,7 +109,8 @@ function compile(target, forceCompile) {
|
|
|
108
109
|
})];
|
|
109
110
|
case 2:
|
|
110
111
|
_c.sent();
|
|
111
|
-
|
|
112
|
+
compileTree = (0, loadDependencies_1.getCompileTree)(target);
|
|
113
|
+
return [4 /*yield*/, compileModule.compileJobsServicesTests(target, compileTree)];
|
|
112
114
|
case 3:
|
|
113
115
|
_c.sent();
|
|
114
116
|
return [4 /*yield*/, (0, config_1.getMacroFolders)(target)];
|
|
@@ -136,7 +138,7 @@ function compile(target, forceCompile) {
|
|
|
136
138
|
macroTestFiles = _c.sent();
|
|
137
139
|
return [4 /*yield*/, (0, utils_1.asyncForEach)(macroTestFiles, function (macroTestFile) { return __awaiter(_this, void 0, void 0, function () {
|
|
138
140
|
return __generator(this, function (_a) {
|
|
139
|
-
return [2 /*return*/, (0, compileServiceFile_1.compileServiceFile)(target, path_1.default.join(buildMacroTestFolder_1, macroTestFile), macroFolders, programFolders_1)];
|
|
141
|
+
return [2 /*return*/, (0, compileServiceFile_1.compileServiceFile)(target, path_1.default.join(buildMacroTestFolder_1, macroTestFile), macroFolders, programFolders_1, undefined, compileTree)];
|
|
140
142
|
});
|
|
141
143
|
}); })];
|
|
142
144
|
case 10:
|
|
@@ -221,7 +223,7 @@ function copyFilesToBuildFolder(target) {
|
|
|
221
223
|
});
|
|
222
224
|
}
|
|
223
225
|
exports.copyFilesToBuildFolder = copyFilesToBuildFolder;
|
|
224
|
-
function compileJobsServicesTests(target) {
|
|
226
|
+
function compileJobsServicesTests(target, compileTree) {
|
|
225
227
|
var _a;
|
|
226
228
|
return __awaiter(this, void 0, void 0, function () {
|
|
227
229
|
var serviceFolders, jobFolders, macroFolders_1, programFolders_2, testSetUp, testTearDown, error_2;
|
|
@@ -262,7 +264,7 @@ function compileJobsServicesTests(target) {
|
|
|
262
264
|
case 10: return [4 /*yield*/, (0, utils_1.asyncForEach)(serviceFolders, function (serviceFolder) { return __awaiter(_this, void 0, void 0, function () {
|
|
263
265
|
return __generator(this, function (_a) {
|
|
264
266
|
switch (_a.label) {
|
|
265
|
-
case 0: return [4 /*yield*/, compileServiceFolder(target, serviceFolder, macroFolders_1, programFolders_2)];
|
|
267
|
+
case 0: return [4 /*yield*/, compileServiceFolder(target, serviceFolder, macroFolders_1, programFolders_2, compileTree)];
|
|
266
268
|
case 1:
|
|
267
269
|
_a.sent();
|
|
268
270
|
return [2 /*return*/];
|
|
@@ -274,7 +276,7 @@ function compileJobsServicesTests(target) {
|
|
|
274
276
|
return [4 /*yield*/, (0, utils_1.asyncForEach)(jobFolders, function (jobFolder) { return __awaiter(_this, void 0, void 0, function () {
|
|
275
277
|
return __generator(this, function (_a) {
|
|
276
278
|
switch (_a.label) {
|
|
277
|
-
case 0: return [4 /*yield*/, compileJobFolder(target, jobFolder, macroFolders_1, programFolders_2)];
|
|
279
|
+
case 0: return [4 /*yield*/, compileJobFolder(target, jobFolder, macroFolders_1, programFolders_2, compileTree)];
|
|
278
280
|
case 1:
|
|
279
281
|
_a.sent();
|
|
280
282
|
return [2 /*return*/];
|
|
@@ -319,7 +321,7 @@ function recreateBuildFolder() {
|
|
|
319
321
|
});
|
|
320
322
|
});
|
|
321
323
|
}
|
|
322
|
-
var compileServiceFolder = function (target, serviceFolder, macroFolders, programFolders) { return __awaiter(void 0, void 0, void 0, function () {
|
|
324
|
+
var compileServiceFolder = function (target, serviceFolder, macroFolders, programFolders, compileTree) { return __awaiter(void 0, void 0, void 0, function () {
|
|
323
325
|
var destinationPath, subFolders, filesNamesInPath;
|
|
324
326
|
return __generator(this, function (_a) {
|
|
325
327
|
switch (_a.label) {
|
|
@@ -342,7 +344,7 @@ var compileServiceFolder = function (target, serviceFolder, macroFolders, progra
|
|
|
342
344
|
case 1:
|
|
343
345
|
_a.sent();
|
|
344
346
|
return [3 /*break*/, 4];
|
|
345
|
-
case 2: return [4 /*yield*/, (0, compileServiceFile_1.compileServiceFile)(target, filePath, macroFolders, programFolders)];
|
|
347
|
+
case 2: return [4 /*yield*/, (0, compileServiceFile_1.compileServiceFile)(target, filePath, macroFolders, programFolders, undefined, compileTree)];
|
|
346
348
|
case 3:
|
|
347
349
|
_a.sent();
|
|
348
350
|
_a.label = 4;
|
|
@@ -370,7 +372,7 @@ var compileServiceFolder = function (target, serviceFolder, macroFolders, progra
|
|
|
370
372
|
case 1:
|
|
371
373
|
_a.sent();
|
|
372
374
|
return [3 /*break*/, 4];
|
|
373
|
-
case 2: return [4 /*yield*/, (0, compileServiceFile_1.compileServiceFile)(target, filePath, macroFolders, programFolders)];
|
|
375
|
+
case 2: return [4 /*yield*/, (0, compileServiceFile_1.compileServiceFile)(target, filePath, macroFolders, programFolders, undefined, compileTree)];
|
|
374
376
|
case 3:
|
|
375
377
|
_a.sent();
|
|
376
378
|
_a.label = 4;
|
|
@@ -386,11 +388,12 @@ var compileServiceFolder = function (target, serviceFolder, macroFolders, progra
|
|
|
386
388
|
}); })];
|
|
387
389
|
case 4:
|
|
388
390
|
_a.sent();
|
|
391
|
+
compileTree.saveTree();
|
|
389
392
|
return [2 /*return*/];
|
|
390
393
|
}
|
|
391
394
|
});
|
|
392
395
|
}); };
|
|
393
|
-
var compileJobFolder = function (target, jobFolder, macroFolders, programFolders) { return __awaiter(void 0, void 0, void 0, function () {
|
|
396
|
+
var compileJobFolder = function (target, jobFolder, macroFolders, programFolders, compileTree) { return __awaiter(void 0, void 0, void 0, function () {
|
|
394
397
|
var destinationPath, subFolders, filesNamesInPath;
|
|
395
398
|
return __generator(this, function (_a) {
|
|
396
399
|
switch (_a.label) {
|
|
@@ -413,7 +416,7 @@ var compileJobFolder = function (target, jobFolder, macroFolders, programFolders
|
|
|
413
416
|
case 1:
|
|
414
417
|
_a.sent();
|
|
415
418
|
return [3 /*break*/, 4];
|
|
416
|
-
case 2: return [4 /*yield*/, (0, compileJobFile_1.compileJobFile)(target, filePath, macroFolders, programFolders)];
|
|
419
|
+
case 2: return [4 /*yield*/, (0, compileJobFile_1.compileJobFile)(target, filePath, macroFolders, programFolders, undefined, compileTree)];
|
|
417
420
|
case 3:
|
|
418
421
|
_a.sent();
|
|
419
422
|
_a.label = 4;
|
|
@@ -441,7 +444,7 @@ var compileJobFolder = function (target, jobFolder, macroFolders, programFolders
|
|
|
441
444
|
case 1:
|
|
442
445
|
_a.sent();
|
|
443
446
|
return [3 /*break*/, 4];
|
|
444
|
-
case 2: return [4 /*yield*/, (0, compileJobFile_1.compileJobFile)(target, filePath, macroFolders, programFolders)];
|
|
447
|
+
case 2: return [4 /*yield*/, (0, compileJobFile_1.compileJobFile)(target, filePath, macroFolders, programFolders, undefined, compileTree)];
|
|
445
448
|
case 3:
|
|
446
449
|
_a.sent();
|
|
447
450
|
_a.label = 4;
|
|
@@ -46,12 +46,13 @@ var utils_1 = require("@sasjs/utils");
|
|
|
46
46
|
var compileServiceFile_1 = require("./internal/compileServiceFile");
|
|
47
47
|
var compileJobFile_1 = require("./internal/compileJobFile");
|
|
48
48
|
var identifySasFile_1 = require("./internal/identifySasFile");
|
|
49
|
+
var loadDependencies_1 = require("./internal/loadDependencies");
|
|
49
50
|
function compileSingleFile(target, subCommand, source, output, insertProgramVar) {
|
|
50
51
|
var _a;
|
|
51
52
|
if (subCommand === void 0) { subCommand = 'identify'; }
|
|
52
53
|
if (insertProgramVar === void 0) { insertProgramVar = false; }
|
|
53
54
|
return __awaiter(this, void 0, void 0, function () {
|
|
54
|
-
var subCommands, commandExample, sourcePath, outputPathParts, leafFolderName, parentOutputFolder, pathExists, sourceFileName, destinationPath, sourceFileNameWithoutExt, macroFolders, programFolders, psMaxOption, programVar, _b;
|
|
55
|
+
var subCommands, commandExample, sourcePath, outputPathParts, leafFolderName, parentOutputFolder, pathExists, sourceFileName, destinationPath, sourceFileNameWithoutExt, macroFolders, programFolders, psMaxOption, programVar, compileTree, _b;
|
|
55
56
|
return __generator(this, function (_c) {
|
|
56
57
|
switch (_c.label) {
|
|
57
58
|
case 0:
|
|
@@ -111,17 +112,18 @@ function compileSingleFile(target, subCommand, source, output, insertProgramVar)
|
|
|
111
112
|
programVar = insertProgramVar
|
|
112
113
|
? "%let _program=".concat(target.appLoc, "/").concat(subCommand, "s/").concat(leafFolderName, "/").concat(sourceFileNameWithoutExt, ";\n").concat(psMaxOption)
|
|
113
114
|
: "".concat(psMaxOption);
|
|
115
|
+
compileTree = (0, loadDependencies_1.getCompileTree)(target);
|
|
114
116
|
_b = subCommand;
|
|
115
117
|
switch (_b) {
|
|
116
118
|
case subCommands.service: return [3 /*break*/, 11];
|
|
117
119
|
case subCommands.job: return [3 /*break*/, 13];
|
|
118
120
|
}
|
|
119
121
|
return [3 /*break*/, 15];
|
|
120
|
-
case 11: return [4 /*yield*/, (0, compileServiceFile_1.compileServiceFile)(target, destinationPath, macroFolders, programFolders, programVar)];
|
|
122
|
+
case 11: return [4 /*yield*/, (0, compileServiceFile_1.compileServiceFile)(target, destinationPath, macroFolders, programFolders, programVar, compileTree)];
|
|
121
123
|
case 12:
|
|
122
124
|
_c.sent();
|
|
123
125
|
return [3 /*break*/, 16];
|
|
124
|
-
case 13: return [4 /*yield*/, (0, compileJobFile_1.compileJobFile)(target, destinationPath, macroFolders, programFolders, programVar)];
|
|
126
|
+
case 13: return [4 /*yield*/, (0, compileJobFile_1.compileJobFile)(target, destinationPath, macroFolders, programFolders, programVar, compileTree)];
|
|
125
127
|
case 14:
|
|
126
128
|
_c.sent();
|
|
127
129
|
return [3 /*break*/, 16];
|
|
@@ -1,2 +1,3 @@
|
|
|
1
1
|
import { Target } from '@sasjs/utils/types';
|
|
2
|
-
|
|
2
|
+
import { CompileTree } from '@sasjs/utils';
|
|
3
|
+
export declare function compileJobFile(target: Target, filePath: string, macroFolders: string[], programFolders: string[], programVar: string | undefined, compileTree: CompileTree): Promise<void>;
|
|
@@ -39,13 +39,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
39
39
|
exports.compileJobFile = void 0;
|
|
40
40
|
var utils_1 = require("@sasjs/utils");
|
|
41
41
|
var loadDependencies_1 = require("./loadDependencies");
|
|
42
|
-
function compileJobFile(target, filePath, macroFolders, programFolders, programVar) {
|
|
42
|
+
function compileJobFile(target, filePath, macroFolders, programFolders, programVar, compileTree) {
|
|
43
43
|
if (programVar === void 0) { programVar = ''; }
|
|
44
44
|
return __awaiter(this, void 0, void 0, function () {
|
|
45
45
|
var dependencies;
|
|
46
46
|
return __generator(this, function (_a) {
|
|
47
47
|
switch (_a.label) {
|
|
48
|
-
case 0: return [4 /*yield*/, (0, loadDependencies_1.loadDependencies)(target, filePath, macroFolders, programFolders, (0, utils_1.isTestFile)(filePath) ? utils_1.SASJsFileType.test : utils_1.SASJsFileType.job)];
|
|
48
|
+
case 0: return [4 /*yield*/, (0, loadDependencies_1.loadDependencies)(target, filePath, macroFolders, programFolders, (0, utils_1.isTestFile)(filePath) ? utils_1.SASJsFileType.test : utils_1.SASJsFileType.job, compileTree)];
|
|
49
49
|
case 1:
|
|
50
50
|
dependencies = _a.sent();
|
|
51
51
|
dependencies = "".concat(programVar ? programVar + '\n' : '').concat(dependencies);
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { CompileTree } from '@sasjs/utils';
|
|
1
2
|
import { Target, ServerType } from '@sasjs/utils/types';
|
|
2
|
-
export declare function compileServiceFile(target: Target, filePath: string, macroFolders: string[], programFolders: string[], programVar
|
|
3
|
+
export declare function compileServiceFile(target: Target, filePath: string, macroFolders: string[], programFolders: string[], programVar: string | undefined, compileTree: CompileTree): Promise<void>;
|
|
3
4
|
export declare function getPreCodeForServicePack(serverType: ServerType): Promise<string>;
|
|
@@ -43,13 +43,13 @@ var types_1 = require("@sasjs/utils/types");
|
|
|
43
43
|
var error_1 = require("@sasjs/utils/error");
|
|
44
44
|
var loadDependencies_1 = require("./loadDependencies");
|
|
45
45
|
var getServerType_1 = require("./getServerType");
|
|
46
|
-
function compileServiceFile(target, filePath, macroFolders, programFolders, programVar) {
|
|
46
|
+
function compileServiceFile(target, filePath, macroFolders, programFolders, programVar, compileTree) {
|
|
47
47
|
if (programVar === void 0) { programVar = ''; }
|
|
48
48
|
return __awaiter(this, void 0, void 0, function () {
|
|
49
49
|
var dependencies, serverType, preCode;
|
|
50
50
|
return __generator(this, function (_a) {
|
|
51
51
|
switch (_a.label) {
|
|
52
|
-
case 0: return [4 /*yield*/, (0, loadDependencies_1.loadDependencies)(target, filePath, macroFolders, programFolders, (0, utils_1.isTestFile)(filePath) ? types_1.SASJsFileType.test : types_1.SASJsFileType.service)];
|
|
52
|
+
case 0: return [4 /*yield*/, (0, loadDependencies_1.loadDependencies)(target, filePath, macroFolders, programFolders, (0, utils_1.isTestFile)(filePath) ? types_1.SASJsFileType.test : types_1.SASJsFileType.service, compileTree)];
|
|
53
53
|
case 1:
|
|
54
54
|
dependencies = _a.sent();
|
|
55
55
|
return [4 /*yield*/, (0, getServerType_1.getServerType)(target)];
|
|
@@ -82,10 +82,11 @@ function compileTestFile(target, filePath, testVar, saveToRoot, removeOriginalFi
|
|
|
82
82
|
if (saveToRoot === void 0) { saveToRoot = true; }
|
|
83
83
|
if (removeOriginalFile === void 0) { removeOriginalFile = true; }
|
|
84
84
|
return __awaiter(this, void 0, void 0, function () {
|
|
85
|
-
var dependencies, _a, _b, preCode, destinationPath;
|
|
85
|
+
var compileTree, dependencies, _a, _b, preCode, destinationPath;
|
|
86
86
|
return __generator(this, function (_c) {
|
|
87
87
|
switch (_c.label) {
|
|
88
88
|
case 0:
|
|
89
|
+
compileTree = (0, loadDependencies_1.getCompileTree)(target);
|
|
89
90
|
_a = loadDependencies_1.loadDependencies;
|
|
90
91
|
_b = [target,
|
|
91
92
|
(0, utils_1.getAbsolutePath)(filePath, process.projectDir)];
|
|
@@ -93,7 +94,8 @@ function compileTestFile(target, filePath, testVar, saveToRoot, removeOriginalFi
|
|
|
93
94
|
case 1:
|
|
94
95
|
_b = _b.concat([_c.sent()]);
|
|
95
96
|
return [4 /*yield*/, (0, config_1.getProgramFolders)(target)];
|
|
96
|
-
case 2: return [4 /*yield*/, _a.apply(void 0, _b.concat([_c.sent(), utils_1.SASJsFileType.test
|
|
97
|
+
case 2: return [4 /*yield*/, _a.apply(void 0, _b.concat([_c.sent(), utils_1.SASJsFileType.test,
|
|
98
|
+
compileTree]))];
|
|
97
99
|
case 3:
|
|
98
100
|
dependencies = _c.sent();
|
|
99
101
|
return [4 /*yield*/, (0, compileServiceFile_1.getPreCodeForServicePack)(target.serverType)];
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
import { Target, SASJsFileType } from '@sasjs/utils';
|
|
2
|
-
export declare function loadDependencies(target: Target, filePath: string, macroFolders: string[], programFolders: string[], type: SASJsFileType): Promise<string>;
|
|
1
|
+
import { Target, SASJsFileType, CompileTree } from '@sasjs/utils';
|
|
2
|
+
export declare function loadDependencies(target: Target, filePath: string, macroFolders: string[], programFolders: string[], type: SASJsFileType, compileTree: CompileTree): Promise<string>;
|
|
3
|
+
export declare const getCompileTree: (target: Target) => CompileTree;
|
|
@@ -35,27 +35,43 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
35
35
|
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
36
|
}
|
|
37
37
|
};
|
|
38
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
39
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
40
|
+
};
|
|
38
41
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.loadDependencies = void 0;
|
|
42
|
+
exports.getCompileTree = exports.loadDependencies = void 0;
|
|
40
43
|
var utils_1 = require("@sasjs/utils");
|
|
41
44
|
var config_1 = require("../../../utils/config");
|
|
42
|
-
|
|
45
|
+
var path_1 = __importDefault(require("path"));
|
|
46
|
+
function loadDependencies(target, filePath, macroFolders, programFolders, type, compileTree) {
|
|
43
47
|
var _a;
|
|
44
48
|
return __awaiter(this, void 0, void 0, function () {
|
|
45
|
-
var fileContent, configuration, _b, buildSourceFolder, macroCorePath, binaryFolders;
|
|
49
|
+
var fileContent, leaf, configuration, _b, buildSourceFolder, macroCorePath, binaryFolders;
|
|
46
50
|
return __generator(this, function (_c) {
|
|
47
51
|
switch (_c.label) {
|
|
48
52
|
case 0:
|
|
49
53
|
(_a = process.logger) === null || _a === void 0 ? void 0 : _a.info("Loading dependencies for ".concat(filePath));
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
return [
|
|
54
|
+
fileContent = '';
|
|
55
|
+
if (!(compileTree && Object.keys(compileTree).length)) return [3 /*break*/, 4];
|
|
56
|
+
leaf = compileTree.getLeaf(filePath);
|
|
57
|
+
if (!leaf) return [3 /*break*/, 1];
|
|
58
|
+
fileContent = leaf.content;
|
|
59
|
+
return [3 /*break*/, 3];
|
|
60
|
+
case 1: return [4 /*yield*/, (0, utils_1.readFile)(filePath)];
|
|
54
61
|
case 2:
|
|
62
|
+
fileContent = _c.sent();
|
|
63
|
+
_c.label = 3;
|
|
64
|
+
case 3: return [3 /*break*/, 6];
|
|
65
|
+
case 4: return [4 /*yield*/, (0, utils_1.readFile)(filePath)];
|
|
66
|
+
case 5:
|
|
67
|
+
fileContent = _c.sent();
|
|
68
|
+
_c.label = 6;
|
|
69
|
+
case 6: return [4 /*yield*/, (0, config_1.getLocalOrGlobalConfig)()];
|
|
70
|
+
case 7:
|
|
55
71
|
configuration = (_c.sent()).configuration;
|
|
56
72
|
_b = process.sasjsConstants, buildSourceFolder = _b.buildSourceFolder, macroCorePath = _b.macroCorePath;
|
|
57
73
|
return [4 /*yield*/, (0, config_1.getBinaryFolders)(target)];
|
|
58
|
-
case
|
|
74
|
+
case 8:
|
|
59
75
|
binaryFolders = _c.sent();
|
|
60
76
|
headerSyntaxNotices(fileContent);
|
|
61
77
|
return [4 /*yield*/, (0, utils_1.loadDependenciesFile)({
|
|
@@ -68,9 +84,10 @@ function loadDependencies(target, filePath, macroFolders, programFolders, type)
|
|
|
68
84
|
programFolders: programFolders,
|
|
69
85
|
buildSourceFolder: buildSourceFolder,
|
|
70
86
|
macroCorePath: macroCorePath,
|
|
71
|
-
binaryFolders: binaryFolders
|
|
87
|
+
binaryFolders: binaryFolders,
|
|
88
|
+
compileTree: compileTree
|
|
72
89
|
})];
|
|
73
|
-
case
|
|
90
|
+
case 9: return [2 /*return*/, _c.sent()];
|
|
74
91
|
}
|
|
75
92
|
});
|
|
76
93
|
});
|
|
@@ -78,21 +95,21 @@ function loadDependencies(target, filePath, macroFolders, programFolders, type)
|
|
|
78
95
|
exports.loadDependencies = loadDependencies;
|
|
79
96
|
var headerSyntaxNotices = function (fileContent) {
|
|
80
97
|
var _a, _b, _c;
|
|
81
|
-
if (fileContent.includes(
|
|
98
|
+
if (fileContent.includes(utils_1.DependencyHeader.DeprecatedMacro)) {
|
|
82
99
|
var deprecationDate = new Date(2021, 10, 2);
|
|
83
100
|
var today = new Date();
|
|
84
101
|
if (today < deprecationDate) {
|
|
85
|
-
(_a = process.logger) === null || _a === void 0 ? void 0 : _a.warn("Please use
|
|
102
|
+
(_a = process.logger) === null || _a === void 0 ? void 0 : _a.warn("Please use ".concat(utils_1.DependencyHeader.Macro, " syntax to specify dependencies. Specifying dependencies with a ").concat(utils_1.DependencyHeader.DeprecatedMacro, " syntax will not be supported starting from November 1, 2021."));
|
|
86
103
|
}
|
|
87
104
|
else {
|
|
88
|
-
throw new Error(
|
|
105
|
+
throw new Error("Using ".concat(utils_1.DependencyHeader.DeprecatedMacro, " syntax is deprecated. Please use ").concat(utils_1.DependencyHeader.Macro, " instead."));
|
|
89
106
|
}
|
|
90
107
|
}
|
|
91
|
-
if (fileContent.includes(
|
|
108
|
+
if (fileContent.includes(utils_1.DependencyHeader.DeprecatedInclude)) {
|
|
92
109
|
var deprecationDate = new Date(2022, 4, 2);
|
|
93
110
|
var warningDate = new Date(2022, 10, 2);
|
|
94
111
|
var today = new Date();
|
|
95
|
-
var message = "Please use
|
|
112
|
+
var message = "Please use ".concat(utils_1.DependencyHeader.Include, " syntax to specify programs. Specifying programs with a ").concat(utils_1.DependencyHeader.DeprecatedInclude, " syntax will not be supported starting from April 1, 2022.");
|
|
96
113
|
if (today < warningDate) {
|
|
97
114
|
(_b = process.logger) === null || _b === void 0 ? void 0 : _b.info(message);
|
|
98
115
|
}
|
|
@@ -100,6 +117,10 @@ var headerSyntaxNotices = function (fileContent) {
|
|
|
100
117
|
(_c = process.logger) === null || _c === void 0 ? void 0 : _c.warn(message);
|
|
101
118
|
}
|
|
102
119
|
else
|
|
103
|
-
throw new Error(
|
|
120
|
+
throw new Error("Using ".concat(utils_1.DependencyHeader.DeprecatedInclude, " syntax is deprecated. Please use ").concat(utils_1.DependencyHeader.Include, " instead."));
|
|
104
121
|
}
|
|
105
122
|
};
|
|
123
|
+
var getCompileTree = function (target) {
|
|
124
|
+
return new utils_1.CompileTree(path_1.default.join(process.sasjsConstants.buildDestinationFolder, "".concat(target === null || target === void 0 ? void 0 : target.name, "_compileTree.json")));
|
|
125
|
+
};
|
|
126
|
+
exports.getCompileTree = getCompileTree;
|
|
@@ -129,8 +129,8 @@ describe('compileTestFile', function () {
|
|
|
129
129
|
case 2:
|
|
130
130
|
testFileContent = _a.apply(void 0, [_b.sent()]);
|
|
131
131
|
testVar = replaceLineBreaks("* Test Variables start;\n\n%let ".concat(Object.keys(target.testConfig.macroVars)[0], "=").concat(Object.values(target.testConfig.macroVars)[0], ";\n\n* Test Variables end;"));
|
|
132
|
-
testInit = replaceLineBreaks("* TestInit start;\n
|
|
133
|
-
testTerm = replaceLineBreaks("* TestTerm start;\n
|
|
132
|
+
testInit = replaceLineBreaks("* TestInit start;\n%put testing, init;\n* TestInit end;");
|
|
133
|
+
testTerm = replaceLineBreaks("* TestTerm start;\n%put testing, termed;\n* TestTerm end;");
|
|
134
134
|
mvWebout = "%macro mv_webout(action,ds,fref=_mvwtemp,dslabel=,fmt=Y,stream=Y,missing=NULL<br> ,showmeta=NO<br>);";
|
|
135
135
|
expect(testFileContent.indexOf(testVar)).toBeGreaterThan(-1);
|
|
136
136
|
expect(testFileContent.indexOf(testInit)).toBeGreaterThan(-1);
|
|
@@ -65,8 +65,9 @@ var getInitTerm_1 = require("@sasjs/utils/sasjsCli/getInitTerm");
|
|
|
65
65
|
var test_1 = require("../../../utils/test");
|
|
66
66
|
var compileJobFile_1 = require("../internal/compileJobFile");
|
|
67
67
|
var utils_2 = require("@sasjs/utils");
|
|
68
|
-
var
|
|
69
|
-
var
|
|
68
|
+
var loadDependencies_1 = require("../internal/loadDependencies");
|
|
69
|
+
var fakeJobInit = "/**\n @file\n @brief This code is inserted into the beginning of each Viya Job.\n @details Inserted during the `sasjs compile` step. Add any code here that\n should go at the beginning of every deployed job.\n\n The path to this file should be listed in the `jobInit` property of the\n sasjsconfig file.\n\n ".concat(utils_1.DependencyHeader.DeprecatedInclude, "\n @li test.sas TEST\n\n ").concat(utils_1.DependencyHeader.Macro, "\n @li examplemacro.sas\n\n**/\n\n%example(Job Init is executing!)\n\n%let mylib=WORK;");
|
|
70
|
+
var fakeJobTerm = "/**\n @file serviceterm.sas\n @brief this file is called at the end of every service\n @details This file is included at the *end* of every service.\n\n ".concat(utils_1.DependencyHeader.Macro, "\n @li mf_abort.sas\n @li mf_existds.sas\n\n**/\n\n%put service is finishing. Thanks, SASjs!;");
|
|
70
71
|
var fakeProgramLines = [
|
|
71
72
|
'filename TEST temp;',
|
|
72
73
|
'data _null_;',
|
|
@@ -103,7 +104,7 @@ describe('compileJobFile', function () {
|
|
|
103
104
|
});
|
|
104
105
|
}); });
|
|
105
106
|
test('it should compile and create file', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
106
|
-
var filePath, buildPath, destinationPath, compiledContent, macrosToTest;
|
|
107
|
+
var filePath, buildPath, destinationPath, compileTree, compiledContent, macrosToTest;
|
|
107
108
|
return __generator(this, function (_a) {
|
|
108
109
|
switch (_a.label) {
|
|
109
110
|
case 0:
|
|
@@ -111,13 +112,14 @@ describe('compileJobFile', function () {
|
|
|
111
112
|
filePath = path_1.default.join(__dirname, './service.sas');
|
|
112
113
|
buildPath = path_1.default.join(process.projectDir, 'sasjsbuild');
|
|
113
114
|
destinationPath = path_1.default.join(buildPath, 'service.sas');
|
|
115
|
+
compileTree = (0, loadDependencies_1.getCompileTree)(target);
|
|
114
116
|
return [4 /*yield*/, (0, utils_2.createFolder)(buildPath)];
|
|
115
117
|
case 1:
|
|
116
118
|
_a.sent();
|
|
117
119
|
return [4 /*yield*/, (0, utils_2.copy)(filePath, destinationPath)];
|
|
118
120
|
case 2:
|
|
119
121
|
_a.sent();
|
|
120
|
-
return [4 /*yield*/, expect((0, compileJobFile_1.compileJobFile)(target, destinationPath, [path_1.default.join(__dirname, './macros')], [path_1.default.join(__dirname, './'), path_1.default.join(__dirname, './services')])).toResolve()];
|
|
122
|
+
return [4 /*yield*/, expect((0, compileJobFile_1.compileJobFile)(target, destinationPath, [path_1.default.join(__dirname, './macros')], [path_1.default.join(__dirname, './'), path_1.default.join(__dirname, './services')], undefined, compileTree)).toResolve()];
|
|
121
123
|
case 3:
|
|
122
124
|
_a.sent();
|
|
123
125
|
return [4 /*yield*/, expect((0, utils_2.fileExists)(destinationPath)).resolves.toEqual(true)];
|
|
@@ -65,8 +65,9 @@ var getInitTerm_1 = require("@sasjs/utils/sasjsCli/getInitTerm");
|
|
|
65
65
|
var test_1 = require("../../../utils/test");
|
|
66
66
|
var compileServiceFile_1 = require("../internal/compileServiceFile");
|
|
67
67
|
var utils_2 = require("@sasjs/utils");
|
|
68
|
-
var
|
|
69
|
-
var
|
|
68
|
+
var loadDependencies_1 = require("../internal/loadDependencies");
|
|
69
|
+
var fakeJobInit = "/**\n @file\n @brief This code is inserted into the beginning of each Viya Job.\n @details Inserted during the `sasjs compile` step. Add any code here that\n should go at the beginning of every deployed job.\n\n The path to this file should be listed in the `jobInit` property of the\n sasjsconfig file.\n\n ".concat(utils_1.DependencyHeader.DeprecatedInclude, "\n @li test.sas TEST\n\n ").concat(utils_1.DependencyHeader.Macro, "\n @li examplemacro.sas\n\n**/\n\n%example(Job Init is executing!)\n\n%let mylib=WORK;");
|
|
70
|
+
var fakeJobTerm = "/**\n @file serviceterm.sas\n @brief this file is called at the end of every service\n @details This file is included at the *end* of every service.\n\n ".concat(utils_1.DependencyHeader.Macro, "\n @li mf_abort.sas\n @li mf_existds.sas\n\n**/\n\n%put service is finishing. Thanks, SASjs!;");
|
|
70
71
|
var fakeProgramLines = [
|
|
71
72
|
'filename TEST temp;',
|
|
72
73
|
'data _null_;',
|
|
@@ -104,7 +105,7 @@ describe('compileServiceFile', function () {
|
|
|
104
105
|
});
|
|
105
106
|
}); });
|
|
106
107
|
test('it should compile and create file', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
107
|
-
var filePath, buildPath, destinationPath, compiledContent, macrosToTest;
|
|
108
|
+
var filePath, buildPath, destinationPath, compileTree, compiledContent, macrosToTest;
|
|
108
109
|
return __generator(this, function (_a) {
|
|
109
110
|
switch (_a.label) {
|
|
110
111
|
case 0:
|
|
@@ -112,13 +113,14 @@ describe('compileServiceFile', function () {
|
|
|
112
113
|
filePath = path_1.default.join(__dirname, './service.sas');
|
|
113
114
|
buildPath = path_1.default.join(process.projectDir, 'sasjsbuild');
|
|
114
115
|
destinationPath = path_1.default.join(buildPath, 'service.sas');
|
|
116
|
+
compileTree = (0, loadDependencies_1.getCompileTree)(target);
|
|
115
117
|
return [4 /*yield*/, (0, utils_2.createFolder)(buildPath)];
|
|
116
118
|
case 1:
|
|
117
119
|
_a.sent();
|
|
118
120
|
return [4 /*yield*/, (0, utils_2.copy)(filePath, destinationPath)];
|
|
119
121
|
case 2:
|
|
120
122
|
_a.sent();
|
|
121
|
-
return [4 /*yield*/, expect((0, compileServiceFile_1.compileServiceFile)(target, destinationPath, [path_1.default.join(__dirname, './macros')], [path_1.default.join(__dirname, './'), path_1.default.join(__dirname, './services')])).toResolve()];
|
|
123
|
+
return [4 /*yield*/, expect((0, compileServiceFile_1.compileServiceFile)(target, destinationPath, [path_1.default.join(__dirname, './macros')], [path_1.default.join(__dirname, './'), path_1.default.join(__dirname, './services')], undefined, compileTree)).toResolve()];
|
|
122
124
|
case 3:
|
|
123
125
|
_a.sent();
|
|
124
126
|
return [4 /*yield*/, expect((0, utils_2.fileExists)(destinationPath)).resolves.toEqual(true)];
|
|
@@ -74,13 +74,14 @@ var utils_1 = require("@sasjs/utils");
|
|
|
74
74
|
var internalModule = __importStar(require("@sasjs/utils/sasjsCli/getInitTerm"));
|
|
75
75
|
var getInitTerm_1 = require("@sasjs/utils/sasjsCli/getInitTerm");
|
|
76
76
|
var test_1 = require("../../../utils/test");
|
|
77
|
+
var utils_2 = require("../../../utils");
|
|
77
78
|
var loadDependencies_1 = require("../internal/loadDependencies");
|
|
78
|
-
var fakeInit = "/**\n @file serviceinit.sas\n @brief this file is called with every service\n @details This file is included in *every* service, *after* the macros and *before* the service code.\n\n
|
|
79
|
-
var fakeTerm = "/**\n @file serviceterm.sas\n @brief this file is called at the end of every service\n @details This file is included at the *end* of every service.\n\n
|
|
80
|
-
var fakeInit2 = "/**\n @file serviceinit.sas\n @brief this file is called with every service\n @details This file is included in *every* service, *after* the macros and *before* the service code.\n\n
|
|
81
|
-
var fakeTerm2 = "/**\n @file serviceterm.sas\n @brief this file is called at the end of every service\n @details This file is included at the *end* of every service.\n\n
|
|
82
|
-
var fakeJobInit = "/**\n @file\n @brief This code is inserted into the beginning of each Viya Job.\n @details Inserted during the `sasjs compile` step. Add any code here that\n should go at the beginning of every deployed job.\n\n The path to this file should be listed in the `jobInit` property of the\n sasjsconfig file.\n\n
|
|
83
|
-
var fakeJobInit2 = "/**\n @file\n @brief This code is inserted into the beginning of each Viya Job.\n @details Inserted during the `sasjs compile` step. Add any code here that\n should go at the beginning of every deployed job.\n\n The path to this file should be listed in the `jobInit` property of the\n sasjsconfig file.\n\n
|
|
79
|
+
var fakeInit = "/**\n @file serviceinit.sas\n @brief this file is called with every service\n @details This file is included in *every* service, *after* the macros and *before* the service code.\n\n ".concat(utils_1.DependencyHeader.Macro, "\n @li mf_abort.sas\n\n**/\n\noptions\n DATASTMTCHK=ALLKEYWORDS /* some sites have this enabled */\n PS=MAX /* reduce log size slightly */\n;\n%put service is starting!!;");
|
|
80
|
+
var fakeTerm = "/**\n @file serviceterm.sas\n @brief this file is called at the end of every service\n @details This file is included at the *end* of every service.\n\n ".concat(utils_1.DependencyHeader.Macro, "\n @li mf_abort.sas\n @li mf_existds.sas\n\n**/\n\n%put service is finishing. Thanks, SASjs!;");
|
|
81
|
+
var fakeInit2 = "/**\n @file serviceinit.sas\n @brief this file is called with every service\n @details This file is included in *every* service, *after* the macros and *before* the service code.\n\n ".concat(utils_1.DependencyHeader.Macro, "\n @li mf_abort.sas\n\n**/\n\noptions\n DATASTMTCHK=ALLKEYWORDS /* some sites have this enabled */\n PS=MAX /* reduce log size slightly */\n;\n%put service is starting!!;");
|
|
82
|
+
var fakeTerm2 = "/**\n @file serviceterm.sas\n @brief this file is called at the end of every service\n @details This file is included at the *end* of every service.\n\n ".concat(utils_1.DependencyHeader.Macro, "\n @li mf_abort.sas\n @li mf_existds.sas\n\n**/\n\n%put service is finishing. Thanks, SASjs!;");
|
|
83
|
+
var fakeJobInit = "/**\n @file\n @brief This code is inserted into the beginning of each Viya Job.\n @details Inserted during the `sasjs compile` step. Add any code here that\n should go at the beginning of every deployed job.\n\n The path to this file should be listed in the `jobInit` property of the\n sasjsconfig file.\n\n ".concat(utils_1.DependencyHeader.DeprecatedInclude, "\n @li test.sas TEST\n\n ").concat(utils_1.DependencyHeader.Macro, "\n @li examplemacro.sas\n\n**/\n\n%example(Job Init is executing!)\n\n%let mylib=WORK;");
|
|
84
|
+
var fakeJobInit2 = "/**\n @file\n @brief This code is inserted into the beginning of each Viya Job.\n @details Inserted during the `sasjs compile` step. Add any code here that\n should go at the beginning of every deployed job.\n\n The path to this file should be listed in the `jobInit` property of the\n sasjsconfig file.\n\n ".concat(utils_1.DependencyHeader.Include, "\n @li test.sas TEST\n\n ").concat(utils_1.DependencyHeader.Macro, "\n @li examplemacro.sas\n\n**/\n\n%example(Job Init is executing!)\n\n%let mylib=WORK;");
|
|
84
85
|
var fakeProgramLines = [
|
|
85
86
|
'filename TEST temp;',
|
|
86
87
|
'data _null_;',
|
|
@@ -132,17 +133,22 @@ describe('loadDependencies', function () {
|
|
|
132
133
|
macroVars: {}
|
|
133
134
|
}, utils_1.ServerType.SasViya);
|
|
134
135
|
var target = new utils_1.Target(__assign(__assign({}, temp.toJson()), { jobConfig: jobConfig(false), serviceConfig: serviceConfig(false) }));
|
|
136
|
+
var compileTree;
|
|
135
137
|
beforeAll(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
136
138
|
return __generator(this, function (_a) {
|
|
137
139
|
switch (_a.label) {
|
|
138
|
-
case 0: return [4 /*yield*/, (0,
|
|
140
|
+
case 0: return [4 /*yield*/, (0, utils_2.setConstants)()];
|
|
139
141
|
case 1:
|
|
142
|
+
_a.sent();
|
|
143
|
+
compileTree = (0, loadDependencies_1.getCompileTree)(target);
|
|
144
|
+
return [4 /*yield*/, (0, test_1.createTestMinimalApp)(__dirname, target.name)];
|
|
145
|
+
case 2:
|
|
140
146
|
_a.sent();
|
|
141
147
|
return [4 /*yield*/, (0, test_1.updateConfig)({
|
|
142
148
|
jobConfig: jobConfig(),
|
|
143
149
|
serviceConfig: serviceConfig()
|
|
144
150
|
})];
|
|
145
|
-
case
|
|
151
|
+
case 3:
|
|
146
152
|
_a.sent();
|
|
147
153
|
return [2 /*return*/];
|
|
148
154
|
}
|
|
@@ -158,13 +164,13 @@ describe('loadDependencies', function () {
|
|
|
158
164
|
}
|
|
159
165
|
});
|
|
160
166
|
}); });
|
|
161
|
-
test(
|
|
167
|
+
test("it should load dependencies for a service with ".concat(utils_1.DependencyHeader.DeprecatedMacro), function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
162
168
|
var dependencies;
|
|
163
169
|
return __generator(this, function (_a) {
|
|
164
170
|
switch (_a.label) {
|
|
165
171
|
case 0:
|
|
166
172
|
(0, getInitTerm_1.mockGetProgram)(internalModule, fakeInit, fakeTerm);
|
|
167
|
-
return [4 /*yield*/, (0, loadDependencies_1.loadDependencies)(target, path_1.default.join(__dirname, './service.sas'), [], [], utils_1.SASJsFileType.service)];
|
|
173
|
+
return [4 /*yield*/, (0, loadDependencies_1.loadDependencies)(target, path_1.default.join(__dirname, './service.sas'), [], [], utils_1.SASJsFileType.service, compileTree)];
|
|
168
174
|
case 1:
|
|
169
175
|
dependencies = _a.sent();
|
|
170
176
|
expect(dependencies).toStartWith(compiledVars('Service'));
|
|
@@ -178,13 +184,13 @@ describe('loadDependencies', function () {
|
|
|
178
184
|
}
|
|
179
185
|
});
|
|
180
186
|
}); });
|
|
181
|
-
test(
|
|
187
|
+
test("it should load dependencies for a job ".concat(utils_1.DependencyHeader.Macro), function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
182
188
|
var dependencies;
|
|
183
189
|
return __generator(this, function (_a) {
|
|
184
190
|
switch (_a.label) {
|
|
185
191
|
case 0:
|
|
186
192
|
(0, getInitTerm_1.mockGetProgram)(internalModule, fakeInit, fakeTerm);
|
|
187
|
-
return [4 /*yield*/, (0, loadDependencies_1.loadDependencies)(target, path_1.default.join(__dirname, './service.sas'), [], [], utils_1.SASJsFileType.job)];
|
|
193
|
+
return [4 /*yield*/, (0, loadDependencies_1.loadDependencies)(target, path_1.default.join(__dirname, './service.sas'), [], [], utils_1.SASJsFileType.job, compileTree)];
|
|
188
194
|
case 1:
|
|
189
195
|
dependencies = _a.sent();
|
|
190
196
|
expect(dependencies).toStartWith(compiledVars('Job'));
|
|
@@ -198,13 +204,13 @@ describe('loadDependencies', function () {
|
|
|
198
204
|
}
|
|
199
205
|
});
|
|
200
206
|
}); });
|
|
201
|
-
test(
|
|
207
|
+
test("it should load dependencies for a service with ".concat(utils_1.DependencyHeader.Macro), function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
202
208
|
var dependencies;
|
|
203
209
|
return __generator(this, function (_a) {
|
|
204
210
|
switch (_a.label) {
|
|
205
211
|
case 0:
|
|
206
212
|
(0, getInitTerm_1.mockGetProgram)(internalModule, fakeInit2, fakeTerm2);
|
|
207
|
-
return [4 /*yield*/, (0, loadDependencies_1.loadDependencies)(target, path_1.default.join(__dirname, './service.sas'), [], [], utils_1.SASJsFileType.service)];
|
|
213
|
+
return [4 /*yield*/, (0, loadDependencies_1.loadDependencies)(target, path_1.default.join(__dirname, './service.sas'), [], [], utils_1.SASJsFileType.service, compileTree)];
|
|
208
214
|
case 1:
|
|
209
215
|
dependencies = _a.sent();
|
|
210
216
|
expect(dependencies).toStartWith(compiledVars('Service'));
|
|
@@ -218,13 +224,13 @@ describe('loadDependencies', function () {
|
|
|
218
224
|
}
|
|
219
225
|
});
|
|
220
226
|
}); });
|
|
221
|
-
test(
|
|
227
|
+
test("it should load dependencies for a job ".concat(utils_1.DependencyHeader.Macro), function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
222
228
|
var dependencies;
|
|
223
229
|
return __generator(this, function (_a) {
|
|
224
230
|
switch (_a.label) {
|
|
225
231
|
case 0:
|
|
226
232
|
(0, getInitTerm_1.mockGetProgram)(internalModule, fakeInit2, fakeTerm2);
|
|
227
|
-
return [4 /*yield*/, (0, loadDependencies_1.loadDependencies)(target, path_1.default.join(__dirname, './service.sas'), [], [], utils_1.SASJsFileType.job)];
|
|
233
|
+
return [4 /*yield*/, (0, loadDependencies_1.loadDependencies)(target, path_1.default.join(__dirname, './service.sas'), [], [], utils_1.SASJsFileType.job, compileTree)];
|
|
228
234
|
case 1:
|
|
229
235
|
dependencies = _a.sent();
|
|
230
236
|
expect(dependencies).toStartWith(compiledVars('Job'));
|
|
@@ -238,13 +244,13 @@ describe('loadDependencies', function () {
|
|
|
238
244
|
}
|
|
239
245
|
});
|
|
240
246
|
}); });
|
|
241
|
-
test(
|
|
247
|
+
test("it should load programs for a service with ".concat(utils_1.DependencyHeader.DeprecatedInclude), function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
242
248
|
var dependencies;
|
|
243
249
|
return __generator(this, function (_a) {
|
|
244
250
|
switch (_a.label) {
|
|
245
251
|
case 0:
|
|
246
252
|
(0, getInitTerm_1.mockGetProgram)(internalModule, fakeJobInit, fakeTerm);
|
|
247
|
-
return [4 /*yield*/, (0, loadDependencies_1.loadDependencies)(target, path_1.default.join(__dirname, './service.sas'), [path_1.default.join(__dirname, './macros')], [path_1.default.join(__dirname, './'), path_1.default.join(__dirname, './services')], utils_1.SASJsFileType.service)];
|
|
253
|
+
return [4 /*yield*/, (0, loadDependencies_1.loadDependencies)(target, path_1.default.join(__dirname, './service.sas'), [path_1.default.join(__dirname, './macros')], [path_1.default.join(__dirname, './'), path_1.default.join(__dirname, './services')], utils_1.SASJsFileType.service, compileTree)];
|
|
248
254
|
case 1:
|
|
249
255
|
dependencies = _a.sent();
|
|
250
256
|
expect(dependencies).toStartWith(compiledVars('Service'));
|
|
@@ -258,13 +264,13 @@ describe('loadDependencies', function () {
|
|
|
258
264
|
}
|
|
259
265
|
});
|
|
260
266
|
}); });
|
|
261
|
-
test(
|
|
267
|
+
test("it should load programs for a job ".concat(utils_1.DependencyHeader.DeprecatedInclude), function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
262
268
|
var dependencies;
|
|
263
269
|
return __generator(this, function (_a) {
|
|
264
270
|
switch (_a.label) {
|
|
265
271
|
case 0:
|
|
266
272
|
(0, getInitTerm_1.mockGetProgram)(internalModule, fakeJobInit, fakeTerm);
|
|
267
|
-
return [4 /*yield*/, (0, loadDependencies_1.loadDependencies)(target, path_1.default.join(__dirname, './service.sas'), [path_1.default.join(__dirname, './macros')], [path_1.default.join(__dirname, './'), path_1.default.join(__dirname, './services')], utils_1.SASJsFileType.job)];
|
|
273
|
+
return [4 /*yield*/, (0, loadDependencies_1.loadDependencies)(target, path_1.default.join(__dirname, './service.sas'), [path_1.default.join(__dirname, './macros')], [path_1.default.join(__dirname, './'), path_1.default.join(__dirname, './services')], utils_1.SASJsFileType.job, compileTree)];
|
|
268
274
|
case 1:
|
|
269
275
|
dependencies = _a.sent();
|
|
270
276
|
expect(dependencies).toStartWith(compiledVars('Job'));
|
|
@@ -278,13 +284,13 @@ describe('loadDependencies', function () {
|
|
|
278
284
|
}
|
|
279
285
|
});
|
|
280
286
|
}); });
|
|
281
|
-
test(
|
|
287
|
+
test("it should load programs for a service with ".concat(utils_1.DependencyHeader.Include), function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
282
288
|
var dependencies;
|
|
283
289
|
return __generator(this, function (_a) {
|
|
284
290
|
switch (_a.label) {
|
|
285
291
|
case 0:
|
|
286
292
|
(0, getInitTerm_1.mockGetProgram)(internalModule, fakeJobInit2, fakeTerm2);
|
|
287
|
-
return [4 /*yield*/, (0, loadDependencies_1.loadDependencies)(target, path_1.default.join(__dirname, './service.sas'), [path_1.default.join(__dirname, './macros')], [path_1.default.join(__dirname, './'), path_1.default.join(__dirname, './services')], utils_1.SASJsFileType.service)];
|
|
293
|
+
return [4 /*yield*/, (0, loadDependencies_1.loadDependencies)(target, path_1.default.join(__dirname, './service.sas'), [path_1.default.join(__dirname, './macros')], [path_1.default.join(__dirname, './'), path_1.default.join(__dirname, './services')], utils_1.SASJsFileType.service, compileTree)];
|
|
288
294
|
case 1:
|
|
289
295
|
dependencies = _a.sent();
|
|
290
296
|
expect(dependencies).toStartWith(compiledVars('Service'));
|
|
@@ -298,13 +304,13 @@ describe('loadDependencies', function () {
|
|
|
298
304
|
}
|
|
299
305
|
});
|
|
300
306
|
}); });
|
|
301
|
-
test(
|
|
307
|
+
test("it should load programs for a job ".concat(utils_1.DependencyHeader.Include), function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
302
308
|
var dependencies;
|
|
303
309
|
return __generator(this, function (_a) {
|
|
304
310
|
switch (_a.label) {
|
|
305
311
|
case 0:
|
|
306
312
|
(0, getInitTerm_1.mockGetProgram)(internalModule, fakeJobInit2, fakeTerm2);
|
|
307
|
-
return [4 /*yield*/, (0, loadDependencies_1.loadDependencies)(target, path_1.default.join(__dirname, './service.sas'), [path_1.default.join(__dirname, './macros')], [path_1.default.join(__dirname, './'), path_1.default.join(__dirname, './services')], utils_1.SASJsFileType.job)];
|
|
313
|
+
return [4 /*yield*/, (0, loadDependencies_1.loadDependencies)(target, path_1.default.join(__dirname, './service.sas'), [path_1.default.join(__dirname, './macros')], [path_1.default.join(__dirname, './'), path_1.default.join(__dirname, './services')], utils_1.SASJsFileType.job, compileTree)];
|
|
308
314
|
case 1:
|
|
309
315
|
dependencies = _a.sent();
|
|
310
316
|
expect(dependencies).toStartWith(compiledVars('Job'));
|
|
@@ -318,13 +324,13 @@ describe('loadDependencies', function () {
|
|
|
318
324
|
}
|
|
319
325
|
});
|
|
320
326
|
}); });
|
|
321
|
-
test("it should load dependencies for a job having jobInit's
|
|
327
|
+
test("it should load dependencies for a job having jobInit's ".concat(utils_1.DependencyHeader.DeprecatedInclude), function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
322
328
|
var dependencies;
|
|
323
329
|
return __generator(this, function (_a) {
|
|
324
330
|
switch (_a.label) {
|
|
325
331
|
case 0:
|
|
326
332
|
(0, getInitTerm_1.mockGetProgram)(internalModule, fakeJobInit, fakeTerm2);
|
|
327
|
-
return [4 /*yield*/, (0, loadDependencies_1.loadDependencies)(target, path_1.default.join(__dirname, './service.sas'), [path_1.default.join(__dirname, './macros')], [path_1.default.join(__dirname, './'), path_1.default.join(__dirname, './services')], utils_1.SASJsFileType.job)];
|
|
333
|
+
return [4 /*yield*/, (0, loadDependencies_1.loadDependencies)(target, path_1.default.join(__dirname, './service.sas'), [path_1.default.join(__dirname, './macros')], [path_1.default.join(__dirname, './'), path_1.default.join(__dirname, './services')], utils_1.SASJsFileType.job, compileTree)];
|
|
328
334
|
case 1:
|
|
329
335
|
dependencies = _a.sent();
|
|
330
336
|
expect(dependencies).toStartWith(compiledVars('Job'));
|
|
@@ -341,13 +347,13 @@ describe('loadDependencies', function () {
|
|
|
341
347
|
}
|
|
342
348
|
});
|
|
343
349
|
}); });
|
|
344
|
-
test("it should load dependencies for a job having jobTerm's
|
|
350
|
+
test("it should load dependencies for a job having jobTerm's ".concat(utils_1.DependencyHeader.DeprecatedInclude), function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
345
351
|
var dependencies;
|
|
346
352
|
return __generator(this, function (_a) {
|
|
347
353
|
switch (_a.label) {
|
|
348
354
|
case 0:
|
|
349
355
|
(0, getInitTerm_1.mockGetProgram)(internalModule, fakeInit2, fakeJobInit);
|
|
350
|
-
return [4 /*yield*/, (0, loadDependencies_1.loadDependencies)(target, path_1.default.join(__dirname, './service.sas'), [path_1.default.join(__dirname, './macros')], [path_1.default.join(__dirname, './'), path_1.default.join(__dirname, './services')], utils_1.SASJsFileType.job)];
|
|
356
|
+
return [4 /*yield*/, (0, loadDependencies_1.loadDependencies)(target, path_1.default.join(__dirname, './service.sas'), [path_1.default.join(__dirname, './macros')], [path_1.default.join(__dirname, './'), path_1.default.join(__dirname, './services')], utils_1.SASJsFileType.job, compileTree)];
|
|
351
357
|
case 1:
|
|
352
358
|
dependencies = _a.sent();
|
|
353
359
|
expect(dependencies).toStartWith(compiledVars('Job'));
|
|
@@ -363,13 +369,13 @@ describe('loadDependencies', function () {
|
|
|
363
369
|
}
|
|
364
370
|
});
|
|
365
371
|
}); });
|
|
366
|
-
test("it should load dependencies for a service having serviceInit's
|
|
372
|
+
test("it should load dependencies for a service having serviceInit's ".concat(utils_1.DependencyHeader.DeprecatedInclude), function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
367
373
|
var dependencies;
|
|
368
374
|
return __generator(this, function (_a) {
|
|
369
375
|
switch (_a.label) {
|
|
370
376
|
case 0:
|
|
371
377
|
(0, getInitTerm_1.mockGetProgram)(internalModule, fakeJobInit, fakeTerm2);
|
|
372
|
-
return [4 /*yield*/, (0, loadDependencies_1.loadDependencies)(target, path_1.default.join(__dirname, './service.sas'), [path_1.default.join(__dirname, './macros')], [path_1.default.join(__dirname, './'), path_1.default.join(__dirname, './services')], utils_1.SASJsFileType.service)];
|
|
378
|
+
return [4 /*yield*/, (0, loadDependencies_1.loadDependencies)(target, path_1.default.join(__dirname, './service.sas'), [path_1.default.join(__dirname, './macros')], [path_1.default.join(__dirname, './'), path_1.default.join(__dirname, './services')], utils_1.SASJsFileType.service, compileTree)];
|
|
373
379
|
case 1:
|
|
374
380
|
dependencies = _a.sent();
|
|
375
381
|
expect(dependencies).toStartWith(compiledVars('Service'));
|
|
@@ -386,13 +392,13 @@ describe('loadDependencies', function () {
|
|
|
386
392
|
}
|
|
387
393
|
});
|
|
388
394
|
}); });
|
|
389
|
-
test("it should load dependencies for a service having serviceTerm's
|
|
395
|
+
test("it should load dependencies for a service having serviceTerm's ".concat(utils_1.DependencyHeader.DeprecatedInclude), function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
390
396
|
var dependencies;
|
|
391
397
|
return __generator(this, function (_a) {
|
|
392
398
|
switch (_a.label) {
|
|
393
399
|
case 0:
|
|
394
400
|
(0, getInitTerm_1.mockGetProgram)(internalModule, fakeInit2, fakeJobInit);
|
|
395
|
-
return [4 /*yield*/, (0, loadDependencies_1.loadDependencies)(target, path_1.default.join(__dirname, './service.sas'), [path_1.default.join(__dirname, './macros')], [path_1.default.join(__dirname, './'), path_1.default.join(__dirname, './services')], utils_1.SASJsFileType.service)];
|
|
401
|
+
return [4 /*yield*/, (0, loadDependencies_1.loadDependencies)(target, path_1.default.join(__dirname, './service.sas'), [path_1.default.join(__dirname, './macros')], [path_1.default.join(__dirname, './'), path_1.default.join(__dirname, './services')], utils_1.SASJsFileType.service, compileTree)];
|
|
396
402
|
case 1:
|
|
397
403
|
dependencies = _a.sent();
|
|
398
404
|
expect(dependencies).toStartWith(compiledVars('Service'));
|
|
@@ -84,7 +84,6 @@ var utils_1 = require("@sasjs/utils");
|
|
|
84
84
|
var getFoldersForDocs_1 = require("./internal/getFoldersForDocs");
|
|
85
85
|
var createDotFiles_1 = require("./internal/createDotFiles");
|
|
86
86
|
var getDocConfig_1 = require("./internal/getDocConfig");
|
|
87
|
-
var utils_2 = require("../../utils");
|
|
88
87
|
/**
|
|
89
88
|
* Generates documentation(Doxygen)
|
|
90
89
|
* By default the docs will be at 'sasjsbuild/docs' folder
|
|
@@ -188,16 +187,13 @@ function generateDocs(target, config, outDirectory) {
|
|
|
188
187
|
exports.generateDocs = generateDocs;
|
|
189
188
|
function setVariableCmd(params) {
|
|
190
189
|
var command = '';
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
for (var param in params) {
|
|
190
|
+
if ((0, utils_1.isWindows)()) {
|
|
191
|
+
for (var param in params)
|
|
194
192
|
command += "set ".concat(param, "=").concat(params[param], " && ");
|
|
195
|
-
}
|
|
196
193
|
}
|
|
197
194
|
else {
|
|
198
|
-
for (var param in params)
|
|
195
|
+
for (var param in params)
|
|
199
196
|
command += "".concat(param, "='").concat(params[param], "' ");
|
|
200
|
-
}
|
|
201
197
|
}
|
|
202
198
|
return command;
|
|
203
199
|
}
|
|
@@ -9,7 +9,7 @@ var utils_1 = require("@sasjs/utils");
|
|
|
9
9
|
* @param {Map} paramNodes- Map for params(Inputs/Outputs)
|
|
10
10
|
*/
|
|
11
11
|
function getFileInputs(fileName, fileContent, paramNodes) {
|
|
12
|
-
var fileInputs = (0, utils_1.getList)(
|
|
12
|
+
var fileInputs = (0, utils_1.getList)(utils_1.DependencyHeader.DataInput, fileContent)
|
|
13
13
|
.map(function (input) { return input.toUpperCase(); })
|
|
14
14
|
.filter(function (input) { return !input.endsWith('.DLL'); });
|
|
15
15
|
fileInputs.forEach(function (inputParam) {
|
|
@@ -8,7 +8,7 @@ var utils_1 = require("@sasjs/utils");
|
|
|
8
8
|
* @param {Map} paramNodes- Map for params(Inputs/Outputs)
|
|
9
9
|
*/
|
|
10
10
|
function getFileOutputs(fileContent, paramNodes) {
|
|
11
|
-
var fileOutputs = (0, utils_1.getList)(
|
|
11
|
+
var fileOutputs = (0, utils_1.getList)(utils_1.DependencyHeader.DataOutput, fileContent)
|
|
12
12
|
.map(function (output) { return output.toUpperCase(); })
|
|
13
13
|
.filter(function (output) { return !output.endsWith('.DLL'); });
|
|
14
14
|
fileOutputs.forEach(function (outputParam) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const sampleSasProgram
|
|
1
|
+
export declare const sampleSasProgram: string;
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.sampleSasProgram = void 0;
|
|
4
4
|
var utils_1 = require("../utils");
|
|
5
|
+
var utils_2 = require("@sasjs/utils");
|
|
5
6
|
describe('removeComments', function () {
|
|
6
7
|
test('should remove block comment', function () {
|
|
7
8
|
var text = "/* test\n123\n456\n789 */";
|
|
@@ -43,4 +44,4 @@ describe('removeComments', function () {
|
|
|
43
44
|
expect((0, utils_1.removeComments)(text)).toEqual(text);
|
|
44
45
|
});
|
|
45
46
|
});
|
|
46
|
-
exports.sampleSasProgram = "/**\n @file mv_createfolder.sas\n @brief Creates a viya folder if that foloder does not already exist\n @details Expects oauth token in a global macro variable (default\n ACCESS_TOKEN).\n\n options mprint;\n %mv_createfolder(path=/Public)\n\n\n @param path= The full path of the folder to be created\n @param access_token_var= The global macro variable to contain the access token\n @param grant_type= valid values are \"password\" or \"authorization_code\" (unquoted).\n The default is authorization_code.\n\n\n @version VIYA V.03.04\n @author Allan Bowe\n @source https://github.com/sasjs/core\n\n
|
|
47
|
+
exports.sampleSasProgram = "/**\n @file mv_createfolder.sas\n @brief Creates a viya folder if that foloder does not already exist\n @details Expects oauth token in a global macro variable (default\n ACCESS_TOKEN).\n\n options mprint;\n %mv_createfolder(path=/Public)\n\n\n @param path= The full path of the folder to be created\n @param access_token_var= The global macro variable to contain the access token\n @param grant_type= valid values are \"password\" or \"authorization_code\" (unquoted).\n The default is authorization_code.\n\n\n @version VIYA V.03.04\n @author Allan Bowe\n @source https://github.com/sasjs/core\n\n ".concat(utils_2.DependencyHeader.Macro, "\n @li mf_abort.sas\n @li mf_getuniquefileref.sas\n @li mf_getuniquelibref.sas\n @li mf_isblank.sas\n\n**/\n\n/* This is a comment\nthat spans\nmultiple lines */\n\n%macro mv_createfolder(path=\n ,access_token_var=ACCESS_TOKEN\n ,grant_type=authorization_code\n);");
|
package/build/utils/utils.d.ts
CHANGED
|
@@ -34,5 +34,4 @@ export declare function getAdapterInstance(target: Target): SASjs;
|
|
|
34
34
|
export declare function displaySasjsRunnerError(username: string): void;
|
|
35
35
|
export declare const loadEnvVariables: (fileName: string) => Promise<void>;
|
|
36
36
|
export declare function prefixAppLoc(appLoc?: string, path?: string): string | null;
|
|
37
|
-
export declare const isWindows: () => boolean;
|
|
38
37
|
export declare const terminateProcess: (status: number) => never;
|
package/build/utils/utils.js
CHANGED
|
@@ -86,7 +86,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
86
86
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
87
87
|
};
|
|
88
88
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
89
|
-
exports.terminateProcess = exports.
|
|
89
|
+
exports.terminateProcess = exports.prefixAppLoc = exports.loadEnvVariables = exports.displaySasjsRunnerError = exports.getAdapterInstance = exports.checkNodeVersion = exports.millisecondsToDdHhMmSs = exports.arrToObj = exports.parseLogLines = exports.executeShellScript = exports.getUniqServicesObj = exports.removeComments = exports.setupDoxygen = exports.setupGhooks = exports.setupGitIgnore = exports.setupNpmProject = exports.createTemplateApp = exports.createMinimalApp = exports.createAngularApp = exports.createReactApp = exports.diff = exports.inExistingProject = void 0;
|
|
90
90
|
var shelljs_1 = __importDefault(require("shelljs"));
|
|
91
91
|
var path_1 = __importDefault(require("path"));
|
|
92
92
|
var ora_1 = __importDefault(require("ora"));
|
|
@@ -414,7 +414,7 @@ function executeShellScript(filePath, logFilePath) {
|
|
|
414
414
|
return __generator(this, function (_b) {
|
|
415
415
|
switch (_b.label) {
|
|
416
416
|
case 0:
|
|
417
|
-
shellCommand = (0,
|
|
417
|
+
shellCommand = (0, utils_1.isWindows)() ? "sh ".concat(filePath) : "bash ".concat(filePath);
|
|
418
418
|
result = shelljs_1.default.exec(shellCommand, { silent: true });
|
|
419
419
|
if (!result.code) return [3 /*break*/, 1];
|
|
420
420
|
(_a = process.logger) === null || _a === void 0 ? void 0 : _a.error("Error: ".concat(result.stderr));
|
|
@@ -555,8 +555,6 @@ function prefixAppLoc(appLoc, path) {
|
|
|
555
555
|
.join(' ');
|
|
556
556
|
}
|
|
557
557
|
exports.prefixAppLoc = prefixAppLoc;
|
|
558
|
-
var isWindows = function () { return process.platform === 'win32'; };
|
|
559
|
-
exports.isWindows = isWindows;
|
|
560
558
|
var terminateProcess = function (status) {
|
|
561
559
|
var _a;
|
|
562
560
|
(_a = process.logger) === null || _a === void 0 ? void 0 : _a.info("Process will be terminated with the status code ".concat(status, "."));
|
package/package.json
CHANGED
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
"@sasjs/adapter": "^3.7.14",
|
|
51
51
|
"@sasjs/core": "4.15.3",
|
|
52
52
|
"@sasjs/lint": "1.11.2",
|
|
53
|
-
"@sasjs/utils": "2.
|
|
53
|
+
"@sasjs/utils": "2.38.1",
|
|
54
54
|
"chalk": "4.1.2",
|
|
55
55
|
"csv-stringify": "5.6.5",
|
|
56
56
|
"dotenv": "10.0.0",
|
|
@@ -94,5 +94,5 @@
|
|
|
94
94
|
"typescript": "4.5.4",
|
|
95
95
|
"util": "0.12.4"
|
|
96
96
|
},
|
|
97
|
-
"version": "3.
|
|
97
|
+
"version": "3.10.0"
|
|
98
98
|
}
|