@tenonhq/dovetail-core 0.0.85
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/README.md +6 -0
- package/dist/FileLogger.js +207 -0
- package/dist/FileUtils.js +387 -0
- package/dist/Logger.js +88 -0
- package/dist/MultiScopeWatcher.js +615 -0
- package/dist/PluginManager.js +125 -0
- package/dist/_defaultOptionsOLD.js +44 -0
- package/dist/allScopesCommands.js +418 -0
- package/dist/appUtils.js +929 -0
- package/dist/benchmark.js +104 -0
- package/dist/bootstrap.js +62 -0
- package/dist/claudeCommand.js +60 -0
- package/dist/clickupCommands.js +472 -0
- package/dist/clickupPushHelper.js +33 -0
- package/dist/commander.js +466 -0
- package/dist/commands.js +378 -0
- package/dist/config.js +697 -0
- package/dist/constants.js +15 -0
- package/dist/createRecordCommand.js +314 -0
- package/dist/dashboardCommand.js +38 -0
- package/dist/defaultOptions.js +14 -0
- package/dist/deleteRecordCommand.js +282 -0
- package/dist/flowDesigner/values.js +55 -0
- package/dist/genericUtils.js +189 -0
- package/dist/gitUtils.js +99 -0
- package/dist/index.js +35 -0
- package/dist/initSystem/corePlugin.js +344 -0
- package/dist/initSystem/discovery.js +107 -0
- package/dist/initSystem/orchestrator.js +408 -0
- package/dist/logMessages.js +82 -0
- package/dist/loginCommand.js +20 -0
- package/dist/migrateCommand.js +123 -0
- package/dist/projectFiles.js +32 -0
- package/dist/recentEdits.js +66 -0
- package/dist/schemaCommand.js +85 -0
- package/dist/snClient.js +519 -0
- package/dist/tests/benchmarkRefresh.test.js +265 -0
- package/dist/tests/clickupCommands.test.js +384 -0
- package/dist/tests/clickupPushHelper.test.js +124 -0
- package/dist/tests/configFallback.test.js +68 -0
- package/dist/tests/cred.test.js +59 -0
- package/dist/tests/discovery.test.js +67 -0
- package/dist/tests/ensureUpdateSetWarnings.test.js +218 -0
- package/dist/tests/errorLogLevels.test.js +273 -0
- package/dist/tests/example.test.js +6 -0
- package/dist/tests/fileContextSkipReason.test.js +116 -0
- package/dist/tests/globalDebounce.test.js +308 -0
- package/dist/tests/migrateCommand.test.js +113 -0
- package/dist/tests/multi-scope-watcher.test.js +558 -0
- package/dist/tests/orchestrator.test.js +23 -0
- package/dist/tests/pushFiles.test.js +248 -0
- package/dist/tests/rateLimitCoordination.test.js +271 -0
- package/dist/tests/resolveConfigReadOnly.test.js +67 -0
- package/dist/tests/retryOnHttpErr.test.js +154 -0
- package/dist/tests/scopeCaching.test.js +115 -0
- package/dist/tests/serializeUpdateSetConfig.test.js +325 -0
- package/dist/tests/snClient.fallback.test.js +120 -0
- package/dist/tests/syncManifestRefresh.test.js +287 -0
- package/dist/tests/syncManifestWhitelist.test.js +192 -0
- package/dist/tests/taskClear.test.js +170 -0
- package/dist/tests/taskStaleness.test.js +220 -0
- package/dist/tests/unwrapSNResponseError.test.js +145 -0
- package/dist/tests/v2Values.test.js +79 -0
- package/dist/tests/validateTaskId.test.js +304 -0
- package/dist/tests/verifyUpdateSetSwitch.test.js +277 -0
- package/dist/tests/writeEnvVar.test.js +119 -0
- package/dist/updateSetCommands.js +702 -0
- package/dist/wizard.js +40 -0
- package/package.json +69 -0
- package/skills/dove-configure-pipeline.md +158 -0
- package/skills/dove-create-plugin.md +174 -0
- package/skills/dove-create-record.md +135 -0
- package/skills/dove-debug-build.md +117 -0
- package/skills/dove-delete-record.md +104 -0
- package/skills/dove-manage-tables.md +174 -0
- package/skills/dove-manage-update-sets.md +88 -0
- package/skills/dove-setup-project.md +154 -0
- package/skills/dove-troubleshoot-sync.md +113 -0
package/dist/commands.js
ADDED
|
@@ -0,0 +1,378 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.setLogLevel = setLogLevel;
|
|
40
|
+
exports.refreshCommand = refreshCommand;
|
|
41
|
+
exports.pushCommand = pushCommand;
|
|
42
|
+
exports.downloadCommand = downloadCommand;
|
|
43
|
+
exports.initCommand = initCommand;
|
|
44
|
+
exports.buildCommand = buildCommand;
|
|
45
|
+
exports.deployCommand = deployCommand;
|
|
46
|
+
exports.taskClearCommand = taskClearCommand;
|
|
47
|
+
exports.statusCommand = statusCommand;
|
|
48
|
+
const ConfigManager = __importStar(require("./config"));
|
|
49
|
+
const AppUtils = __importStar(require("./appUtils"));
|
|
50
|
+
const orchestrator_1 = require("./initSystem/orchestrator");
|
|
51
|
+
const Logger_1 = require("./Logger");
|
|
52
|
+
const FileLogger_1 = require("./FileLogger");
|
|
53
|
+
const logMessages_1 = require("./logMessages");
|
|
54
|
+
const snClient_1 = require("./snClient");
|
|
55
|
+
const inquirer_1 = __importDefault(require("inquirer"));
|
|
56
|
+
const gitUtils_1 = require("./gitUtils");
|
|
57
|
+
const FileUtils_1 = require("./FileUtils");
|
|
58
|
+
const projectFiles_1 = require("./projectFiles");
|
|
59
|
+
const path = __importStar(require("path"));
|
|
60
|
+
const fs = __importStar(require("fs"));
|
|
61
|
+
function setLogLevel(args) {
|
|
62
|
+
Logger_1.logger.setLogLevel(args.logLevel);
|
|
63
|
+
}
|
|
64
|
+
async function refreshCommand(args, log = true) {
|
|
65
|
+
setLogLevel(args);
|
|
66
|
+
try {
|
|
67
|
+
if (!log)
|
|
68
|
+
setLogLevel({ logLevel: "warn" });
|
|
69
|
+
FileLogger_1.fileLogger.debug("Syncing manifest from instance (force=" + !!args.force + ", benchmark=" + !!args.benchmark + ")");
|
|
70
|
+
await AppUtils.syncManifest(args.scope, {
|
|
71
|
+
force: !!args.force,
|
|
72
|
+
benchmark: !!args.benchmark,
|
|
73
|
+
});
|
|
74
|
+
Logger_1.logger.success("Refresh complete!");
|
|
75
|
+
setLogLevel(args);
|
|
76
|
+
}
|
|
77
|
+
catch (e) {
|
|
78
|
+
throw e;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
async function pushCommand(args) {
|
|
82
|
+
setLogLevel(args);
|
|
83
|
+
try {
|
|
84
|
+
const { updateSet, ci: skipPrompt, target, diff } = args;
|
|
85
|
+
let encodedPaths;
|
|
86
|
+
if (target !== undefined && target !== "")
|
|
87
|
+
encodedPaths = target;
|
|
88
|
+
else
|
|
89
|
+
encodedPaths = await (0, gitUtils_1.gitDiffToEncodedPaths)(diff);
|
|
90
|
+
const fileList = await AppUtils.getAppFileList(encodedPaths);
|
|
91
|
+
const instance = process.env.SN_INSTANCE || "unknown";
|
|
92
|
+
Logger_1.logger.info(fileList.length + " files to push to " + instance);
|
|
93
|
+
if (!skipPrompt) {
|
|
94
|
+
const targetServer = process.env.SN_INSTANCE;
|
|
95
|
+
if (!targetServer) {
|
|
96
|
+
Logger_1.logger.error("No SN_INSTANCE configured. Set it in your .env file.");
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
const answers = await inquirer_1.default.prompt([
|
|
100
|
+
{
|
|
101
|
+
type: "confirm",
|
|
102
|
+
name: "confirmed",
|
|
103
|
+
message: "Pushing will overwrite code in your instance. Are you sure?",
|
|
104
|
+
default: false,
|
|
105
|
+
},
|
|
106
|
+
]);
|
|
107
|
+
if (!answers["confirmed"])
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
// Handle --clickup flag: resolve ClickUp task into an update set name
|
|
111
|
+
let resolvedUpdateSet = updateSet;
|
|
112
|
+
if (!resolvedUpdateSet && args.clickup) {
|
|
113
|
+
try {
|
|
114
|
+
const { resolveClickUpForPush } = await Promise.resolve().then(() => __importStar(require("./clickupPushHelper")));
|
|
115
|
+
resolvedUpdateSet = await resolveClickUpForPush(args.clickup);
|
|
116
|
+
}
|
|
117
|
+
catch (cuErr) {
|
|
118
|
+
if (cuErr instanceof Error)
|
|
119
|
+
Logger_1.logger.error(cuErr.message);
|
|
120
|
+
process.exit(1);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
// Extract scope from file list and auto-swap to it
|
|
124
|
+
var pushScope;
|
|
125
|
+
if (fileList.length > 0) {
|
|
126
|
+
var fieldKeys = Object.keys(fileList[0].fields);
|
|
127
|
+
if (fieldKeys.length > 0) {
|
|
128
|
+
pushScope = fileList[0].fields[fieldKeys[0]].scope;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
if (pushScope) {
|
|
132
|
+
try {
|
|
133
|
+
var client = (0, snClient_1.defaultClient)();
|
|
134
|
+
await client.changeScope(pushScope);
|
|
135
|
+
Logger_1.logger.info("Switched to scope: " + pushScope);
|
|
136
|
+
}
|
|
137
|
+
catch (scopeErr) {
|
|
138
|
+
Logger_1.logger.warn("Could not auto-switch scope: " + scopeErr);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
// Does not create update set if updateSetName is blank
|
|
142
|
+
if (resolvedUpdateSet) {
|
|
143
|
+
if (!skipPrompt) {
|
|
144
|
+
let answers = await inquirer_1.default.prompt([
|
|
145
|
+
{
|
|
146
|
+
type: "confirm",
|
|
147
|
+
name: "confirmed",
|
|
148
|
+
message: `A new Update Set "${resolvedUpdateSet}" will be created for these pushed changes. Do you want to proceed?`,
|
|
149
|
+
default: false,
|
|
150
|
+
},
|
|
151
|
+
]);
|
|
152
|
+
if (!answers["confirmed"]) {
|
|
153
|
+
process.exit(0);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
const newUpdateSet = await AppUtils.createAndAssignUpdateSet(resolvedUpdateSet, pushScope);
|
|
157
|
+
Logger_1.logger.debug(`New Update Set Created(${newUpdateSet.name}) sys_id:${newUpdateSet.id}`);
|
|
158
|
+
}
|
|
159
|
+
const pushResults = await AppUtils.pushFiles(fileList);
|
|
160
|
+
(0, logMessages_1.logPushResults)(pushResults);
|
|
161
|
+
}
|
|
162
|
+
catch (e) {
|
|
163
|
+
Logger_1.logger.getInternalLogger().error(e);
|
|
164
|
+
process.exit(1);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
async function downloadCommand(args) {
|
|
168
|
+
setLogLevel(args);
|
|
169
|
+
try {
|
|
170
|
+
let answers = await inquirer_1.default.prompt([
|
|
171
|
+
{
|
|
172
|
+
type: "confirm",
|
|
173
|
+
name: "confirmed",
|
|
174
|
+
message: "Downloading will overwrite manifest and files. Are you sure?",
|
|
175
|
+
default: false,
|
|
176
|
+
},
|
|
177
|
+
]);
|
|
178
|
+
if (!answers["confirmed"]) {
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
const instance = process.env.SN_INSTANCE || "unknown";
|
|
182
|
+
Logger_1.logger.info("Downloading from " + instance + " (scope: " + (args.scope || "default") + ")...");
|
|
183
|
+
const client = (0, snClient_1.defaultClient)();
|
|
184
|
+
const config = ConfigManager.getConfig();
|
|
185
|
+
// Resolve config for this scope (strips _ directives for API, provides table whitelist)
|
|
186
|
+
var resolved = ConfigManager.resolveConfigForScope(args.scope);
|
|
187
|
+
var apiConfig = Object.assign({}, config, {
|
|
188
|
+
includes: resolved.apiIncludes,
|
|
189
|
+
excludes: resolved.apiExcludes,
|
|
190
|
+
});
|
|
191
|
+
const man = await (0, snClient_1.unwrapSNResponse)(client.getManifest(args.scope, apiConfig, true));
|
|
192
|
+
// Client-side table filtering — only keep tables in the _tables whitelist
|
|
193
|
+
if (resolved.tables && resolved.tables.length > 0) {
|
|
194
|
+
var allTableNames = Object.keys(man.tables || {});
|
|
195
|
+
var filtered = {};
|
|
196
|
+
for (var i = 0; i < allTableNames.length; i++) {
|
|
197
|
+
if (resolved.tables.indexOf(allTableNames[i]) !== -1) {
|
|
198
|
+
filtered[allTableNames[i]] = man.tables[allTableNames[i]];
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
var filteredOut = allTableNames.length - Object.keys(filtered).length;
|
|
202
|
+
if (filteredOut > 0) {
|
|
203
|
+
Logger_1.logger.info("Filtered " + filteredOut + " tables not in _tables whitelist");
|
|
204
|
+
}
|
|
205
|
+
man.tables = filtered;
|
|
206
|
+
}
|
|
207
|
+
const tableCount = Object.keys(man.tables).length;
|
|
208
|
+
var recordCount = 0;
|
|
209
|
+
Object.keys(man.tables).forEach(function (tableName) {
|
|
210
|
+
recordCount += Object.keys(man.tables[tableName].records).length;
|
|
211
|
+
});
|
|
212
|
+
Logger_1.logger.info("Received " + tableCount + " tables, " + recordCount + " records");
|
|
213
|
+
FileLogger_1.fileLogger.debug("Download manifest: " + tableCount + " tables, " + recordCount + " records");
|
|
214
|
+
await AppUtils.processManifest(man, true);
|
|
215
|
+
Logger_1.logger.success("Download complete — " + recordCount + " records written");
|
|
216
|
+
}
|
|
217
|
+
catch (e) {
|
|
218
|
+
throw e;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
async function initCommand(args) {
|
|
222
|
+
setLogLevel(args);
|
|
223
|
+
try {
|
|
224
|
+
await (0, orchestrator_1.runInit)({ logLevel: args.logLevel });
|
|
225
|
+
}
|
|
226
|
+
catch (e) {
|
|
227
|
+
throw e;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
async function buildCommand(args) {
|
|
231
|
+
setLogLevel(args);
|
|
232
|
+
try {
|
|
233
|
+
const encodedPaths = await (0, gitUtils_1.gitDiffToEncodedPaths)(args.diff);
|
|
234
|
+
const fileList = await AppUtils.getAppFileList(encodedPaths);
|
|
235
|
+
Logger_1.logger.info(`${fileList.length} files to build.`);
|
|
236
|
+
const results = await AppUtils.buildFiles(fileList);
|
|
237
|
+
(0, logMessages_1.logBuildResults)(results);
|
|
238
|
+
}
|
|
239
|
+
catch (e) {
|
|
240
|
+
process.exit(1);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
async function getDeployPaths() {
|
|
244
|
+
let changedPaths = [];
|
|
245
|
+
try {
|
|
246
|
+
changedPaths = ConfigManager.getDiffFile().changed || [];
|
|
247
|
+
}
|
|
248
|
+
catch (e) { }
|
|
249
|
+
if (changedPaths.length > 0) {
|
|
250
|
+
const { confirmed } = await inquirer_1.default.prompt([
|
|
251
|
+
{
|
|
252
|
+
type: "confirm",
|
|
253
|
+
name: "confirmed",
|
|
254
|
+
message: "Would you like to deploy only files changed in your diff file?",
|
|
255
|
+
default: false,
|
|
256
|
+
},
|
|
257
|
+
]);
|
|
258
|
+
if (confirmed)
|
|
259
|
+
return changedPaths;
|
|
260
|
+
}
|
|
261
|
+
return (0, FileUtils_1.encodedPathsToFilePaths)(ConfigManager.getBuildPath());
|
|
262
|
+
}
|
|
263
|
+
async function deployCommand(args) {
|
|
264
|
+
setLogLevel(args);
|
|
265
|
+
try {
|
|
266
|
+
const targetServer = process.env.SN_INSTANCE || "";
|
|
267
|
+
if (!targetServer) {
|
|
268
|
+
Logger_1.logger.error("No SN_INSTANCE configured. Set it in your .env file.");
|
|
269
|
+
return;
|
|
270
|
+
}
|
|
271
|
+
const { confirmed } = await inquirer_1.default.prompt([
|
|
272
|
+
{
|
|
273
|
+
type: "confirm",
|
|
274
|
+
name: "confirmed",
|
|
275
|
+
message: "Deploying will overwrite code in your instance. Are you sure?",
|
|
276
|
+
default: false,
|
|
277
|
+
},
|
|
278
|
+
]);
|
|
279
|
+
if (!confirmed) {
|
|
280
|
+
return;
|
|
281
|
+
}
|
|
282
|
+
const paths = await getDeployPaths();
|
|
283
|
+
Logger_1.logger.silly(`${paths.length} paths found...`);
|
|
284
|
+
Logger_1.logger.silly(JSON.stringify(paths, null, 2));
|
|
285
|
+
const appFileList = await AppUtils.getAppFileList(paths);
|
|
286
|
+
// Auto-swap to scope detected from files
|
|
287
|
+
if (appFileList.length > 0) {
|
|
288
|
+
var fieldKeys = Object.keys(appFileList[0].fields);
|
|
289
|
+
if (fieldKeys.length > 0) {
|
|
290
|
+
var deployScope = appFileList[0].fields[fieldKeys[0]].scope;
|
|
291
|
+
if (deployScope) {
|
|
292
|
+
try {
|
|
293
|
+
var client = (0, snClient_1.defaultClient)();
|
|
294
|
+
await client.changeScope(deployScope);
|
|
295
|
+
Logger_1.logger.info("Switched to scope: " + deployScope);
|
|
296
|
+
}
|
|
297
|
+
catch (scopeErr) {
|
|
298
|
+
Logger_1.logger.warn("Could not auto-switch scope: " + scopeErr);
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
const pushResults = await AppUtils.pushFiles(appFileList);
|
|
304
|
+
(0, logMessages_1.logPushResults)(pushResults);
|
|
305
|
+
}
|
|
306
|
+
catch (e) {
|
|
307
|
+
throw e;
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
async function taskClearCommand(args) {
|
|
311
|
+
setLogLevel(args);
|
|
312
|
+
var taskPath = (0, projectFiles_1.getActiveTaskPath)();
|
|
313
|
+
// Always sweep both filenames so a clear leaves no stale state behind.
|
|
314
|
+
var legacyTaskPath = path.resolve(process.cwd(), ".sinc-active-task.json");
|
|
315
|
+
var newTaskPath = path.resolve(process.cwd(), ".dove-active-task.json");
|
|
316
|
+
if (fs.existsSync(taskPath)) {
|
|
317
|
+
try {
|
|
318
|
+
var parsed = JSON.parse(fs.readFileSync(taskPath, "utf8"));
|
|
319
|
+
var taskName = parsed.taskName || parsed.taskId || "unknown";
|
|
320
|
+
[newTaskPath, legacyTaskPath].forEach(function (p) {
|
|
321
|
+
if (fs.existsSync(p))
|
|
322
|
+
fs.unlinkSync(p);
|
|
323
|
+
});
|
|
324
|
+
Logger_1.logger.success("Active task '" + taskName + "' cleared.");
|
|
325
|
+
}
|
|
326
|
+
catch (e) {
|
|
327
|
+
// File exists but can't be parsed — still remove it
|
|
328
|
+
[newTaskPath, legacyTaskPath].forEach(function (p) {
|
|
329
|
+
if (fs.existsSync(p))
|
|
330
|
+
fs.unlinkSync(p);
|
|
331
|
+
});
|
|
332
|
+
Logger_1.logger.success("Active task file removed.");
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
else {
|
|
336
|
+
Logger_1.logger.info("No active task is currently set.");
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
async function statusCommand() {
|
|
340
|
+
try {
|
|
341
|
+
const client = (0, snClient_1.defaultClient)();
|
|
342
|
+
var config = ConfigManager.getConfig();
|
|
343
|
+
let scopeObj = await (0, snClient_1.unwrapSNResponse)(client.getCurrentScope());
|
|
344
|
+
Logger_1.logger.info("Instance: " + (process.env.SN_INSTANCE || "not set"));
|
|
345
|
+
Logger_1.logger.info("User: " + (process.env.SN_USER || "not set"));
|
|
346
|
+
Logger_1.logger.info("Active scope: " + scopeObj.scope);
|
|
347
|
+
// Read update set config
|
|
348
|
+
var updateSetConfig = {};
|
|
349
|
+
var updateSetConfigPath = (0, projectFiles_1.getUpdateSetsConfigPath)();
|
|
350
|
+
try {
|
|
351
|
+
if (fs.existsSync(updateSetConfigPath)) {
|
|
352
|
+
updateSetConfig = JSON.parse(fs.readFileSync(updateSetConfigPath, "utf8"));
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
catch (e) {
|
|
356
|
+
Logger_1.logger.warn("Failed to parse update-sets config at " + updateSetConfigPath + ": " + (e instanceof Error ? e.message : String(e)));
|
|
357
|
+
}
|
|
358
|
+
if (config.scopes) {
|
|
359
|
+
var scopeNames = Object.keys(config.scopes);
|
|
360
|
+
Logger_1.logger.info("\nConfigured scopes (" + scopeNames.length + "):");
|
|
361
|
+
for (var i = 0; i < scopeNames.length; i++) {
|
|
362
|
+
var scopeName = scopeNames[i];
|
|
363
|
+
var scopeConf = config.scopes[scopeName];
|
|
364
|
+
var srcDir = (typeof scopeConf === "object" && scopeConf.sourceDirectory)
|
|
365
|
+
? scopeConf.sourceDirectory
|
|
366
|
+
: "src/" + scopeName;
|
|
367
|
+
var marker = scopeName === scopeObj.scope ? " (active)" : "";
|
|
368
|
+
var updateSetInfo = updateSetConfig[scopeName]
|
|
369
|
+
? " [update set: " + updateSetConfig[scopeName].name + "]"
|
|
370
|
+
: " [no update set configured]";
|
|
371
|
+
Logger_1.logger.info(" " + scopeName + marker + " — " + srcDir + updateSetInfo);
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
catch (e) {
|
|
376
|
+
throw e;
|
|
377
|
+
}
|
|
378
|
+
}
|