@sasjs/cli 2.38.8 → 3.0.2
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/add/addCredential.d.ts +2 -2
- package/build/commands/add/addCredential.js +26 -28
- package/build/commands/add/internal/input.js +15 -2
- package/build/commands/build/build.d.ts +1 -1
- package/build/commands/build/build.js +41 -19
- package/build/commands/build/internal/getLaunchPageCode.js +2 -1
- package/build/commands/compile/internal/compileServiceFile.js +11 -7
- package/build/commands/compile/internal/compileTestFile.js +1 -1
- package/build/commands/compile/internal/spec/compileTestFile.spec.js +16 -4
- package/build/commands/compile/spec/compile.spec.js +30 -0
- package/build/commands/compile/spec/loadDependencies.spec.js +3 -3
- package/build/commands/context/contextCommand.js +5 -5
- package/build/commands/deploy/deploy.d.ts +2 -1
- package/build/commands/deploy/deploy.js +92 -46
- package/build/commands/deploy/spec/cbd.spec.d.ts +1 -0
- package/build/commands/deploy/spec/cbd.spec.js +141 -0
- package/build/commands/deploy/spec/cbd.spec.server.js +6 -57
- package/build/commands/deploy/spec/utils.d.ts +6 -0
- package/build/commands/deploy/spec/utils.js +242 -0
- package/build/commands/flow/flowCommand.js +1 -1
- package/build/commands/flow/spec/flow.spec.server.js +1 -1
- package/build/commands/folder/folderCommand.js +2 -2
- package/build/commands/folder/spec/folder.spec.server.js +1 -1
- package/build/commands/job/internal/execute/index.d.ts +2 -0
- package/build/commands/job/internal/execute/index.js +14 -0
- package/build/commands/job/internal/execute/sasjs.d.ts +8 -0
- package/build/commands/job/internal/execute/sasjs.js +69 -0
- package/build/commands/job/{execute.d.ts → internal/execute/viya.d.ts} +1 -1
- package/build/commands/job/{execute.js → internal/execute/viya.js} +29 -68
- package/build/commands/job/internal/utils.d.ts +1 -0
- package/build/commands/job/internal/utils.js +81 -0
- package/build/commands/job/jobCommand.d.ts +2 -1
- package/build/commands/job/jobCommand.js +65 -23
- package/build/commands/job/spec/execute.spec.js +41 -21
- package/build/commands/job/spec/getContextName.spec.js +1 -1
- package/build/commands/job/spec/job.spec.server.js +4 -4
- package/build/commands/job/spec/jobCommand.spec.js +10 -10
- package/build/commands/request/request.js +1 -1
- package/build/commands/run/run.js +2 -2
- package/build/commands/servicepack/spec/servicepack.spec.server.js +0 -1
- package/build/commands/shared/deployToSasViyaWithServicePack.js +1 -1
- package/build/commands/testing/test.js +1 -1
- package/build/config.json +3 -1
- package/build/utils/config.js +104 -64
- package/build/utils/file.d.ts +1 -1
- package/build/utils/file.js +1 -1
- package/build/utils/spec/removeComments.spec.d.ts +1 -1
- package/build/utils/spec/removeComments.spec.js +1 -1
- package/build/utils/test.js +1 -1
- package/build/utils/utils.d.ts +1 -0
- package/build/utils/utils.js +8 -2
- package/package.json +13 -13
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
14
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
15
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
16
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
17
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
18
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
19
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
20
|
+
});
|
|
21
|
+
};
|
|
22
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
23
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
24
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
25
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
26
|
+
function step(op) {
|
|
27
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
28
|
+
while (_) try {
|
|
29
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
30
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
31
|
+
switch (op[0]) {
|
|
32
|
+
case 0: case 1: t = op; break;
|
|
33
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
34
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
35
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
36
|
+
default:
|
|
37
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
38
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
39
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
40
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
41
|
+
if (t[2]) _.ops.pop();
|
|
42
|
+
_.trys.pop(); continue;
|
|
43
|
+
}
|
|
44
|
+
op = body.call(thisArg, _);
|
|
45
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
46
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
50
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
51
|
+
};
|
|
52
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
53
|
+
exports.generateTarget = exports.copyJobsAndServices = exports.updateLocalTarget = exports.createLocalTarget = exports.createGlobalTarget = void 0;
|
|
54
|
+
var utils_1 = require("@sasjs/utils");
|
|
55
|
+
var utils_2 = require("../../../utils");
|
|
56
|
+
var config_1 = require("../../../utils/config");
|
|
57
|
+
var dotenv_1 = __importDefault(require("dotenv"));
|
|
58
|
+
var utils_3 = require("@sasjs/utils");
|
|
59
|
+
var path_1 = __importDefault(require("path"));
|
|
60
|
+
var utils_4 = require("../../../utils");
|
|
61
|
+
var createGlobalTarget = function (serverType) {
|
|
62
|
+
if (serverType === void 0) { serverType = utils_1.ServerType.SasViya; }
|
|
63
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
64
|
+
var timestamp, targetName, target;
|
|
65
|
+
return __generator(this, function (_a) {
|
|
66
|
+
switch (_a.label) {
|
|
67
|
+
case 0:
|
|
68
|
+
dotenv_1.default.config();
|
|
69
|
+
timestamp = utils_1.generateTimestamp();
|
|
70
|
+
targetName = "cli-tests-cbd-" + timestamp;
|
|
71
|
+
return [4 /*yield*/, utils_2.setConstants()];
|
|
72
|
+
case 1:
|
|
73
|
+
_a.sent();
|
|
74
|
+
target = new utils_1.Target({
|
|
75
|
+
name: targetName,
|
|
76
|
+
serverType: serverType,
|
|
77
|
+
serverUrl: (serverType === utils_1.ServerType.SasViya
|
|
78
|
+
? process.env.VIYA_SERVER_URL
|
|
79
|
+
: process.env.SAS9_SERVER_URL),
|
|
80
|
+
appLoc: "/Public/app/cli-tests/" + targetName,
|
|
81
|
+
contextName: process.sasjsConstants.contextName,
|
|
82
|
+
serviceConfig: {
|
|
83
|
+
serviceFolders: ['sasjs/testServices', 'sasjs/testJob'],
|
|
84
|
+
initProgram: 'sasjs/testServices/serviceinit.sas',
|
|
85
|
+
termProgram: 'sasjs/testServices/serviceterm.sas',
|
|
86
|
+
macroVars: {}
|
|
87
|
+
},
|
|
88
|
+
jobConfig: {
|
|
89
|
+
jobFolders: ['sasjs/testJob'],
|
|
90
|
+
initProgram: 'sasjs/testServices/serviceinit.sas',
|
|
91
|
+
termProgram: 'sasjs/testServices/serviceterm.sas',
|
|
92
|
+
macroVars: {}
|
|
93
|
+
},
|
|
94
|
+
authConfig: {
|
|
95
|
+
client: process.env.CLIENT,
|
|
96
|
+
secret: process.env.SECRET,
|
|
97
|
+
access_token: process.env.ACCESS_TOKEN,
|
|
98
|
+
refresh_token: process.env.REFRESH_TOKEN
|
|
99
|
+
},
|
|
100
|
+
deployConfig: {
|
|
101
|
+
deployServicePack: true,
|
|
102
|
+
deployScripts: []
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
return [4 /*yield*/, config_1.saveToGlobalConfig(target)];
|
|
106
|
+
case 2:
|
|
107
|
+
_a.sent();
|
|
108
|
+
return [2 /*return*/, target];
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
});
|
|
112
|
+
};
|
|
113
|
+
exports.createGlobalTarget = createGlobalTarget;
|
|
114
|
+
var createLocalTarget = function (serverType) {
|
|
115
|
+
if (serverType === void 0) { serverType = utils_1.ServerType.SasViya; }
|
|
116
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
117
|
+
var timestamp, targetName, target, configContent, configJSON;
|
|
118
|
+
return __generator(this, function (_a) {
|
|
119
|
+
switch (_a.label) {
|
|
120
|
+
case 0:
|
|
121
|
+
dotenv_1.default.config();
|
|
122
|
+
timestamp = utils_1.generateTimestamp();
|
|
123
|
+
targetName = "cli-tests-cbd-" + timestamp;
|
|
124
|
+
target = new utils_1.Target({
|
|
125
|
+
name: targetName,
|
|
126
|
+
serverType: serverType,
|
|
127
|
+
serverUrl: (serverType === utils_1.ServerType.SasViya
|
|
128
|
+
? process.env.VIYA_SERVER_URL
|
|
129
|
+
: process.env.SAS9_SERVER_URL),
|
|
130
|
+
appLoc: "/Public/app/cli-tests/" + targetName,
|
|
131
|
+
contextName: process.sasjsConstants.contextName,
|
|
132
|
+
serviceConfig: {
|
|
133
|
+
serviceFolders: ['sasjs/testServices', 'sasjs/testJob', 'sasjs/services'],
|
|
134
|
+
initProgram: 'sasjs/testServices/serviceinit.sas',
|
|
135
|
+
termProgram: 'sasjs/testServices/serviceterm.sas',
|
|
136
|
+
macroVars: {}
|
|
137
|
+
},
|
|
138
|
+
jobConfig: {
|
|
139
|
+
jobFolders: ['sasjs/testJob'],
|
|
140
|
+
initProgram: 'sasjs/testServices/serviceinit.sas',
|
|
141
|
+
termProgram: 'sasjs/testServices/serviceterm.sas',
|
|
142
|
+
macroVars: {}
|
|
143
|
+
},
|
|
144
|
+
deployConfig: {
|
|
145
|
+
deployServicePack: true,
|
|
146
|
+
deployScripts: []
|
|
147
|
+
}
|
|
148
|
+
});
|
|
149
|
+
return [4 /*yield*/, utils_3.readFile(path_1.default.join(process.projectDir, 'sasjs', 'sasjsconfig.json'))];
|
|
150
|
+
case 1:
|
|
151
|
+
configContent = _a.sent();
|
|
152
|
+
configJSON = JSON.parse(configContent);
|
|
153
|
+
configJSON.targets = [
|
|
154
|
+
__assign(__assign({}, target.toJson()), { deployConfig: {
|
|
155
|
+
deployScripts: ['sasjs/build/copyscript.sh'],
|
|
156
|
+
deployServicePack: true
|
|
157
|
+
} })
|
|
158
|
+
];
|
|
159
|
+
return [4 /*yield*/, utils_3.createFile(path_1.default.join(process.projectDir, 'sasjs', 'sasjsconfig.json'), JSON.stringify(configJSON, null, 2))];
|
|
160
|
+
case 2:
|
|
161
|
+
_a.sent();
|
|
162
|
+
return [2 /*return*/, target];
|
|
163
|
+
}
|
|
164
|
+
});
|
|
165
|
+
});
|
|
166
|
+
};
|
|
167
|
+
exports.createLocalTarget = createLocalTarget;
|
|
168
|
+
var updateLocalTarget = function (targetName, data) { return __awaiter(void 0, void 0, void 0, function () {
|
|
169
|
+
var configContent, configJSON, target;
|
|
170
|
+
var _a;
|
|
171
|
+
return __generator(this, function (_b) {
|
|
172
|
+
switch (_b.label) {
|
|
173
|
+
case 0:
|
|
174
|
+
dotenv_1.default.config();
|
|
175
|
+
return [4 /*yield*/, utils_3.readFile(path_1.default.join(process.projectDir, 'sasjs', 'sasjsconfig.json'))];
|
|
176
|
+
case 1:
|
|
177
|
+
configContent = _b.sent();
|
|
178
|
+
configJSON = JSON.parse(configContent);
|
|
179
|
+
target = (_a = configJSON === null || configJSON === void 0 ? void 0 : configJSON.targets) === null || _a === void 0 ? void 0 : _a.find(function (t) { return t.name === targetName; });
|
|
180
|
+
configJSON.targets = [
|
|
181
|
+
__assign(__assign({}, target), data)
|
|
182
|
+
];
|
|
183
|
+
return [4 /*yield*/, utils_3.createFile(path_1.default.join(process.projectDir, 'sasjs', 'sasjsconfig.json'), JSON.stringify(configJSON, null, 2))];
|
|
184
|
+
case 2:
|
|
185
|
+
_b.sent();
|
|
186
|
+
return [2 /*return*/];
|
|
187
|
+
}
|
|
188
|
+
});
|
|
189
|
+
}); };
|
|
190
|
+
exports.updateLocalTarget = updateLocalTarget;
|
|
191
|
+
var copyJobsAndServices = function (appName) { return __awaiter(void 0, void 0, void 0, function () {
|
|
192
|
+
return __generator(this, function (_a) {
|
|
193
|
+
switch (_a.label) {
|
|
194
|
+
case 0: return [4 /*yield*/, utils_3.copy(path_1.default.join(__dirname, 'testJob'), path_1.default.join(__dirname, appName, 'sasjs', 'testJob'))];
|
|
195
|
+
case 1:
|
|
196
|
+
_a.sent();
|
|
197
|
+
return [4 /*yield*/, utils_3.copy(path_1.default.join(__dirname, 'testServices'), path_1.default.join(__dirname, appName, 'sasjs', 'testServices'))];
|
|
198
|
+
case 2:
|
|
199
|
+
_a.sent();
|
|
200
|
+
return [2 /*return*/];
|
|
201
|
+
}
|
|
202
|
+
});
|
|
203
|
+
}); };
|
|
204
|
+
exports.copyJobsAndServices = copyJobsAndServices;
|
|
205
|
+
var generateTarget = function (isLocal) {
|
|
206
|
+
dotenv_1.default.config();
|
|
207
|
+
var timestamp = utils_1.generateTimestamp();
|
|
208
|
+
var targetName = "cli-tests-cbd-" + timestamp;
|
|
209
|
+
var authConfig = isLocal
|
|
210
|
+
? undefined
|
|
211
|
+
: {
|
|
212
|
+
client: process.env.CLIENT,
|
|
213
|
+
secret: process.env.SECRET,
|
|
214
|
+
access_token: process.env.ACCESS_TOKEN,
|
|
215
|
+
refresh_token: process.env.REFRESH_TOKEN
|
|
216
|
+
};
|
|
217
|
+
return new utils_1.Target({
|
|
218
|
+
name: targetName,
|
|
219
|
+
serverType: utils_1.ServerType.SasViya,
|
|
220
|
+
serverUrl: process.env.VIYA_SERVER_URL,
|
|
221
|
+
appLoc: "/Public/app/cli-tests/" + targetName,
|
|
222
|
+
contextName: utils_4.contextName,
|
|
223
|
+
serviceConfig: {
|
|
224
|
+
serviceFolders: ['sasjs/testServices', 'sasjs/testJob', 'sasjs/services'],
|
|
225
|
+
initProgram: 'sasjs/testServices/serviceinit.sas',
|
|
226
|
+
termProgram: 'sasjs/testServices/serviceterm.sas',
|
|
227
|
+
macroVars: {}
|
|
228
|
+
},
|
|
229
|
+
jobConfig: {
|
|
230
|
+
jobFolders: ['sasjs/testJob'],
|
|
231
|
+
initProgram: 'sasjs/testServices/serviceinit.sas',
|
|
232
|
+
termProgram: 'sasjs/testServices/serviceterm.sas',
|
|
233
|
+
macroVars: {}
|
|
234
|
+
},
|
|
235
|
+
authConfig: authConfig,
|
|
236
|
+
deployConfig: {
|
|
237
|
+
deployServicePack: true,
|
|
238
|
+
deployScripts: ['']
|
|
239
|
+
}
|
|
240
|
+
});
|
|
241
|
+
};
|
|
242
|
+
exports.generateTarget = generateTarget;
|
|
@@ -125,7 +125,7 @@ var FlowCommand = /** @class */ (function (_super) {
|
|
|
125
125
|
target = (_b.sent()).target;
|
|
126
126
|
sasjs = new node_1.default({
|
|
127
127
|
serverUrl: target.serverUrl,
|
|
128
|
-
|
|
128
|
+
httpsAgentOptions: target.httpsAgentOptions,
|
|
129
129
|
appLoc: target.appLoc,
|
|
130
130
|
serverType: target.serverType
|
|
131
131
|
});
|
|
@@ -54,7 +54,7 @@ describe('sasjs flow', function () {
|
|
|
54
54
|
var target = generateTarget();
|
|
55
55
|
var sasjs = new node_1.default({
|
|
56
56
|
serverUrl: target.serverUrl,
|
|
57
|
-
|
|
57
|
+
httpsAgentOptions: target.httpsAgentOptions,
|
|
58
58
|
appLoc: target.appLoc,
|
|
59
59
|
serverType: target.serverType
|
|
60
60
|
});
|
|
@@ -132,7 +132,7 @@ var FolderCommand = /** @class */ (function (_super) {
|
|
|
132
132
|
}
|
|
133
133
|
sasjs = new node_1.default({
|
|
134
134
|
serverUrl: target.serverUrl,
|
|
135
|
-
|
|
135
|
+
httpsAgentOptions: target.httpsAgentOptions,
|
|
136
136
|
appLoc: target.appLoc,
|
|
137
137
|
serverType: target.serverType
|
|
138
138
|
});
|
|
@@ -259,7 +259,7 @@ var FolderCommand = /** @class */ (function (_super) {
|
|
|
259
259
|
}
|
|
260
260
|
sasjs = new node_1.default({
|
|
261
261
|
serverUrl: target.serverUrl,
|
|
262
|
-
|
|
262
|
+
httpsAgentOptions: target.httpsAgentOptions,
|
|
263
263
|
appLoc: target.appLoc,
|
|
264
264
|
serverType: target.serverType
|
|
265
265
|
});
|
|
@@ -52,7 +52,7 @@ describe('sasjs folder operations', function () {
|
|
|
52
52
|
var target = generateTarget();
|
|
53
53
|
var sasjs = new node_1.default({
|
|
54
54
|
serverUrl: target.serverUrl,
|
|
55
|
-
|
|
55
|
+
httpsAgentOptions: target.httpsAgentOptions,
|
|
56
56
|
appLoc: target.appLoc,
|
|
57
57
|
serverType: target.serverType
|
|
58
58
|
});
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
10
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
|
+
};
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
__exportStar(require("./viya"), exports);
|
|
14
|
+
__exportStar(require("./sasjs"), exports);
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import SASjs from '@sasjs/adapter/node';
|
|
2
|
+
export declare function executeJobSasjs(sasjs: SASjs, jobPath: string, logFile: string | undefined): Promise<{
|
|
3
|
+
status: string;
|
|
4
|
+
message: string;
|
|
5
|
+
log?: string | undefined;
|
|
6
|
+
logPath?: string | undefined;
|
|
7
|
+
error?: {} | undefined;
|
|
8
|
+
} | undefined>;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
+
function step(op) {
|
|
16
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
+
while (_) try {
|
|
18
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
+
switch (op[0]) {
|
|
21
|
+
case 0: case 1: t = op; break;
|
|
22
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
+
default:
|
|
26
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
+
if (t[2]) _.ops.pop();
|
|
31
|
+
_.trys.pop(); continue;
|
|
32
|
+
}
|
|
33
|
+
op = body.call(thisArg, _);
|
|
34
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.executeJobSasjs = void 0;
|
|
40
|
+
var utils_1 = require("../utils");
|
|
41
|
+
function executeJobSasjs(sasjs, jobPath, logFile) {
|
|
42
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
43
|
+
var result;
|
|
44
|
+
return __generator(this, function (_a) {
|
|
45
|
+
switch (_a.label) {
|
|
46
|
+
case 0: return [4 /*yield*/, sasjs.executeJobSASjs({
|
|
47
|
+
_program: jobPath
|
|
48
|
+
})];
|
|
49
|
+
case 1:
|
|
50
|
+
result = _a.sent();
|
|
51
|
+
if (!result) return [3 /*break*/, 5];
|
|
52
|
+
if (!(result.status === 'success')) return [3 /*break*/, 4];
|
|
53
|
+
process.logger.success('Job executed successfully!');
|
|
54
|
+
if (!(logFile && result.log)) return [3 /*break*/, 3];
|
|
55
|
+
return [4 /*yield*/, utils_1.saveLog(result.log, logFile, jobPath, false)];
|
|
56
|
+
case 2:
|
|
57
|
+
_a.sent();
|
|
58
|
+
_a.label = 3;
|
|
59
|
+
case 3: return [3 /*break*/, 5];
|
|
60
|
+
case 4:
|
|
61
|
+
process.logger.error(result.message);
|
|
62
|
+
process.logger.error(JSON.stringify(result.error, null, 2));
|
|
63
|
+
_a.label = 5;
|
|
64
|
+
case 5: return [2 /*return*/, result];
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
exports.executeJobSasjs = executeJobSasjs;
|
|
@@ -15,5 +15,5 @@ import { Target, AuthConfig } from '@sasjs/utils';
|
|
|
15
15
|
* @param {string | undefined} source - an optional path to a JSON file containing macro variables.
|
|
16
16
|
* @param {boolean} streamLog - a flag indicating if the logs should be streamed to the supplied log path during job execution. This is useful for getting feedback on long running jobs.
|
|
17
17
|
*/
|
|
18
|
-
export declare function
|
|
18
|
+
export declare function executeJobViya(sasjs: SASjs, authConfig: AuthConfig, jobPath: string, target: Target, waitForJob: boolean, output: string | boolean, logFile: string | undefined, statusFile: string | undefined, returnStatusOnly: boolean, ignoreWarnings: boolean, source: string | undefined, streamLog: boolean): Promise<any>;
|
|
19
19
|
export declare function getContextName(target: Target, returnStatusOnly?: boolean): string;
|
|
@@ -39,16 +39,16 @@ 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.getContextName = exports.
|
|
43
|
-
var displayResult_1 = require("
|
|
44
|
-
var file_1 = require("
|
|
45
|
-
var
|
|
46
|
-
var fetchLogFileContent_1 = require("../shared/fetchLogFileContent");
|
|
42
|
+
exports.getContextName = exports.executeJobViya = void 0;
|
|
43
|
+
var displayResult_1 = require("../../../../utils/displayResult");
|
|
44
|
+
var file_1 = require("../../../../utils/file");
|
|
45
|
+
var fetchLogFileContent_1 = require("../../../shared/fetchLogFileContent");
|
|
47
46
|
var path_1 = __importDefault(require("path"));
|
|
48
47
|
var node_1 = require("@sasjs/adapter/node");
|
|
49
|
-
var
|
|
50
|
-
var
|
|
51
|
-
var
|
|
48
|
+
var utils_1 = require("@sasjs/utils");
|
|
49
|
+
var utils_2 = require("../../../../utils/");
|
|
50
|
+
var command_1 = require("../../../../types/command");
|
|
51
|
+
var utils_3 = require("../utils");
|
|
52
52
|
/**
|
|
53
53
|
* Triggers existing job for execution.
|
|
54
54
|
* @param {object} sasjs - configuration object of SAS adapter.
|
|
@@ -64,7 +64,7 @@ var utils_3 = require("../../utils");
|
|
|
64
64
|
* @param {string | undefined} source - an optional path to a JSON file containing macro variables.
|
|
65
65
|
* @param {boolean} streamLog - a flag indicating if the logs should be streamed to the supplied log path during job execution. This is useful for getting feedback on long running jobs.
|
|
66
66
|
*/
|
|
67
|
-
function
|
|
67
|
+
function executeJobViya(sasjs, authConfig, jobPath, target, waitForJob, output, logFile, statusFile, returnStatusOnly, ignoreWarnings, source, streamLog) {
|
|
68
68
|
var _a, _b;
|
|
69
69
|
return __awaiter(this, void 0, void 0, function () {
|
|
70
70
|
var pollOptions, result, startTime, contextName, macroVars, submittedJob, endTime, sessionLink, outputJson, currentDirPath, outputPath, folderPath, parentFolderPath, logObj, logUrl, logCount, logData, error_1;
|
|
@@ -92,18 +92,18 @@ function execute(sasjs, authConfig, jobPath, target, waitForJob, output, logFile
|
|
|
92
92
|
if (!source) return [3 /*break*/, 5];
|
|
93
93
|
if (!file_1.isJsonFile(source))
|
|
94
94
|
throw 'Source file has to be JSON.';
|
|
95
|
-
return [4 /*yield*/,
|
|
95
|
+
return [4 /*yield*/, utils_1.fileExists(source).catch(function (_) {
|
|
96
96
|
throw 'Error while checking if source file exists.';
|
|
97
97
|
})];
|
|
98
98
|
case 3:
|
|
99
99
|
_c.sent();
|
|
100
|
-
return [4 /*yield*/,
|
|
100
|
+
return [4 /*yield*/, utils_1.readFile(source).catch(function (_) {
|
|
101
101
|
throw 'Error while reading source file.';
|
|
102
102
|
})];
|
|
103
103
|
case 4:
|
|
104
104
|
source = _c.sent();
|
|
105
105
|
macroVars = JSON.parse(source);
|
|
106
|
-
if (!
|
|
106
|
+
if (!utils_1.isMacroVars(macroVars)) {
|
|
107
107
|
throw "Provided source is not valid. An example of valid source:\n{ macroVars: { name1: 'value1', name2: 'value2' } }";
|
|
108
108
|
}
|
|
109
109
|
_c.label = 5;
|
|
@@ -120,23 +120,23 @@ function execute(sasjs, authConfig, jobPath, target, waitForJob, output, logFile
|
|
|
120
120
|
return [4 /*yield*/, fetchLogFileContent_1.fetchLogFileContent(sasjs, authConfig.access_token, err.logUrl, 100000)];
|
|
121
121
|
case 1:
|
|
122
122
|
logData = _b.sent();
|
|
123
|
-
return [4 /*yield*/, saveLog(logData, logFile, jobPath, returnStatusOnly)];
|
|
123
|
+
return [4 /*yield*/, utils_3.saveLog(logData, logFile, jobPath, returnStatusOnly)];
|
|
124
124
|
case 2:
|
|
125
125
|
_b.sent();
|
|
126
126
|
_b.label = 3;
|
|
127
127
|
case 3:
|
|
128
128
|
displayResult_1.displayError(err);
|
|
129
|
-
terminateProcess(2);
|
|
129
|
+
utils_2.terminateProcess(2);
|
|
130
130
|
_b.label = 4;
|
|
131
131
|
case 4:
|
|
132
132
|
if (!(err === null || err === void 0 ? void 0 : err.log)) return [3 /*break*/, 6];
|
|
133
|
-
return [4 /*yield*/, saveLog(err.log, logFile, jobPath, returnStatusOnly)];
|
|
133
|
+
return [4 /*yield*/, utils_3.saveLog(err.log, logFile, jobPath, returnStatusOnly)];
|
|
134
134
|
case 5:
|
|
135
135
|
_b.sent();
|
|
136
136
|
_b.label = 6;
|
|
137
137
|
case 6:
|
|
138
138
|
if (returnStatusOnly)
|
|
139
|
-
terminateProcess(2);
|
|
139
|
+
utils_2.terminateProcess(2);
|
|
140
140
|
if ((err === null || err === void 0 ? void 0 : err.name) === 'NotFoundError') {
|
|
141
141
|
throw new Error("Job located at '" + jobPath + "' was not found.");
|
|
142
142
|
}
|
|
@@ -191,14 +191,14 @@ function execute(sasjs, authConfig, jobPath, target, waitForJob, output, logFile
|
|
|
191
191
|
folderPath = outputPath.split(path_1.default.sep);
|
|
192
192
|
folderPath.pop();
|
|
193
193
|
parentFolderPath = folderPath.join(path_1.default.sep);
|
|
194
|
-
return [4 /*yield*/,
|
|
194
|
+
return [4 /*yield*/, utils_1.folderExists(parentFolderPath)];
|
|
195
195
|
case 10:
|
|
196
196
|
if (!!(_c.sent())) return [3 /*break*/, 12];
|
|
197
|
-
return [4 /*yield*/,
|
|
197
|
+
return [4 /*yield*/, utils_1.createFolder(parentFolderPath)];
|
|
198
198
|
case 11:
|
|
199
199
|
_c.sent();
|
|
200
200
|
_c.label = 12;
|
|
201
|
-
case 12: return [4 /*yield*/,
|
|
201
|
+
case 12: return [4 /*yield*/, utils_1.createFile(outputPath, outputJson)];
|
|
202
202
|
case 13:
|
|
203
203
|
_c.sent();
|
|
204
204
|
if (!returnStatusOnly)
|
|
@@ -219,7 +219,7 @@ function execute(sasjs, authConfig, jobPath, target, waitForJob, output, logFile
|
|
|
219
219
|
return [4 /*yield*/, fetchLogFileContent_1.fetchLogFileContent(sasjs, authConfig.access_token, logUrl, logCount)];
|
|
220
220
|
case 16:
|
|
221
221
|
logData = _c.sent();
|
|
222
|
-
return [4 /*yield*/, saveLog(logData, logFile, jobPath, returnStatusOnly)];
|
|
222
|
+
return [4 /*yield*/, utils_3.saveLog(logData, logFile, jobPath, returnStatusOnly)];
|
|
223
223
|
case 17:
|
|
224
224
|
_c.sent();
|
|
225
225
|
_c.label = 18;
|
|
@@ -237,11 +237,11 @@ function execute(sasjs, authConfig, jobPath, target, waitForJob, output, logFile
|
|
|
237
237
|
if (waitForJob && returnStatusOnly && submittedJob.state) {
|
|
238
238
|
switch (submittedJob.state) {
|
|
239
239
|
case 'completed':
|
|
240
|
-
terminateProcess(0);
|
|
240
|
+
utils_2.terminateProcess(0);
|
|
241
241
|
case 'warning':
|
|
242
|
-
terminateProcess(ignoreWarnings ? 0 : 1);
|
|
242
|
+
utils_2.terminateProcess(ignoreWarnings ? 0 : 1);
|
|
243
243
|
case 'error':
|
|
244
|
-
terminateProcess(2);
|
|
244
|
+
utils_2.terminateProcess(2);
|
|
245
245
|
default:
|
|
246
246
|
break;
|
|
247
247
|
}
|
|
@@ -249,7 +249,7 @@ function execute(sasjs, authConfig, jobPath, target, waitForJob, output, logFile
|
|
|
249
249
|
return [3 /*break*/, 22];
|
|
250
250
|
case 21:
|
|
251
251
|
if (returnStatusOnly && result === 2) {
|
|
252
|
-
terminateProcess(2);
|
|
252
|
+
utils_2.terminateProcess(2);
|
|
253
253
|
}
|
|
254
254
|
_c.label = 22;
|
|
255
255
|
case 22:
|
|
@@ -261,12 +261,12 @@ function execute(sasjs, authConfig, jobPath, target, waitForJob, output, logFile
|
|
|
261
261
|
});
|
|
262
262
|
});
|
|
263
263
|
}
|
|
264
|
-
exports.
|
|
264
|
+
exports.executeJobViya = executeJobViya;
|
|
265
265
|
// REFACTOR: should be a utility
|
|
266
266
|
function getContextName(target, returnStatusOnly) {
|
|
267
267
|
var _a;
|
|
268
268
|
if (returnStatusOnly === void 0) { returnStatusOnly = false; }
|
|
269
|
-
var defaultContextName =
|
|
269
|
+
var defaultContextName = utils_2.contextName;
|
|
270
270
|
if (target === null || target === void 0 ? void 0 : target.contextName)
|
|
271
271
|
return target.contextName;
|
|
272
272
|
if (!returnStatusOnly) {
|
|
@@ -297,14 +297,14 @@ function displayStatus(submittedJob, statusFile, error, displayStatusFilePath) {
|
|
|
297
297
|
folderPath = statusFile.split(path_1.default.sep);
|
|
298
298
|
folderPath.pop();
|
|
299
299
|
parentFolderPath = folderPath.join(path_1.default.sep);
|
|
300
|
-
return [4 /*yield*/,
|
|
300
|
+
return [4 /*yield*/, utils_1.folderExists(parentFolderPath)];
|
|
301
301
|
case 1:
|
|
302
302
|
if (!!(_a.sent())) return [3 /*break*/, 3];
|
|
303
|
-
return [4 /*yield*/,
|
|
303
|
+
return [4 /*yield*/, utils_1.createFolder(parentFolderPath)];
|
|
304
304
|
case 2:
|
|
305
305
|
_a.sent();
|
|
306
306
|
_a.label = 3;
|
|
307
|
-
case 3: return [4 /*yield*/,
|
|
307
|
+
case 3: return [4 /*yield*/, utils_1.createFile(statusFile, status)];
|
|
308
308
|
case 4:
|
|
309
309
|
_a.sent();
|
|
310
310
|
if (displayStatusFilePath)
|
|
@@ -315,42 +315,3 @@ function displayStatus(submittedJob, statusFile, error, displayStatusFilePath) {
|
|
|
315
315
|
});
|
|
316
316
|
});
|
|
317
317
|
}
|
|
318
|
-
var saveLog = function (logData, logFile, jobPath, returnStatusOnly) { return __awaiter(void 0, void 0, void 0, function () {
|
|
319
|
-
var logPath, folderPath, parentFolderPath, logLines;
|
|
320
|
-
var _a;
|
|
321
|
-
return __generator(this, function (_b) {
|
|
322
|
-
switch (_b.label) {
|
|
323
|
-
case 0:
|
|
324
|
-
if (logFile) {
|
|
325
|
-
logPath = logFile;
|
|
326
|
-
}
|
|
327
|
-
else {
|
|
328
|
-
logPath = path_1.default.join(process.projectDir, jobPath.split('/').slice(-1).pop() + ".log");
|
|
329
|
-
}
|
|
330
|
-
folderPath = logPath.split(path_1.default.sep);
|
|
331
|
-
folderPath.pop();
|
|
332
|
-
parentFolderPath = folderPath.join(path_1.default.sep);
|
|
333
|
-
return [4 /*yield*/, utils_2.folderExists(parentFolderPath)];
|
|
334
|
-
case 1:
|
|
335
|
-
if (!!(_b.sent())) return [3 /*break*/, 3];
|
|
336
|
-
return [4 /*yield*/, utils_2.createFolder(parentFolderPath)];
|
|
337
|
-
case 2:
|
|
338
|
-
_b.sent();
|
|
339
|
-
_b.label = 3;
|
|
340
|
-
case 3:
|
|
341
|
-
logLines = typeof logData === 'object' ? utils_1.parseLogLines(logData) : logData;
|
|
342
|
-
(_a = process.logger) === null || _a === void 0 ? void 0 : _a.info("Creating log file at " + logPath + " .");
|
|
343
|
-
return [4 /*yield*/, utils_2.createFile(logPath, logLines)];
|
|
344
|
-
case 4:
|
|
345
|
-
_b.sent();
|
|
346
|
-
if (!returnStatusOnly)
|
|
347
|
-
displayResult_1.displaySuccess("Log saved to " + logPath);
|
|
348
|
-
return [2 /*return*/];
|
|
349
|
-
}
|
|
350
|
-
});
|
|
351
|
-
}); };
|
|
352
|
-
var terminateProcess = function (status) {
|
|
353
|
-
var _a;
|
|
354
|
-
(_a = process.logger) === null || _a === void 0 ? void 0 : _a.info("Process will be terminated with the status code " + status + ".");
|
|
355
|
-
process.exit(status);
|
|
356
|
-
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const saveLog: (logData: any, logFile: string | undefined, jobPath: string, returnStatusOnly: boolean) => Promise<void>;
|