@optimizely/ocp-cli-v2 2.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/README.md +51 -0
- package/bin/ocp.js +3 -0
- package/bin/run.js +3 -0
- package/dist/commands/accounts/whoami.d.ts +5 -0
- package/dist/commands/accounts/whoami.js +22 -0
- package/dist/commands/accounts/whoami.js.map +1 -0
- package/dist/commands/accounts/whois.d.ts +12 -0
- package/dist/commands/accounts/whois.js +57 -0
- package/dist/commands/accounts/whois.js.map +1 -0
- package/dist/commands/app/BaseBuildCommand.d.ts +37 -0
- package/dist/commands/app/BaseBuildCommand.js +255 -0
- package/dist/commands/app/BaseBuildCommand.js.map +1 -0
- package/dist/commands/app/abandon.d.ts +11 -0
- package/dist/commands/app/abandon.js +146 -0
- package/dist/commands/app/abandon.js.map +1 -0
- package/dist/commands/app/getLogLevel.d.ts +16 -0
- package/dist/commands/app/getLogLevel.js +66 -0
- package/dist/commands/app/getLogLevel.js.map +1 -0
- package/dist/commands/app/init.d.ts +27 -0
- package/dist/commands/app/init.js +326 -0
- package/dist/commands/app/init.js.map +1 -0
- package/dist/commands/app/logs.d.ts +24 -0
- package/dist/commands/app/logs.js +231 -0
- package/dist/commands/app/logs.js.map +1 -0
- package/dist/commands/app/package.d.ts +8 -0
- package/dist/commands/app/package.js +51 -0
- package/dist/commands/app/package.js.map +1 -0
- package/dist/commands/app/prepare.d.ts +16 -0
- package/dist/commands/app/prepare.js +119 -0
- package/dist/commands/app/prepare.js.map +1 -0
- package/dist/commands/app/register.d.ts +10 -0
- package/dist/commands/app/register.js +102 -0
- package/dist/commands/app/register.js.map +1 -0
- package/dist/commands/app/setLogLevel.d.ts +16 -0
- package/dist/commands/app/setLogLevel.js +83 -0
- package/dist/commands/app/setLogLevel.js.map +1 -0
- package/dist/commands/app/validate.d.ts +5 -0
- package/dist/commands/app/validate.js +26 -0
- package/dist/commands/app/validate.js.map +1 -0
- package/dist/commands/availability/list.d.ts +6 -0
- package/dist/commands/availability/list.js +32 -0
- package/dist/commands/availability/list.js.map +1 -0
- package/dist/commands/dev-server/start.d.ts +36 -0
- package/dist/commands/dev-server/start.js +209 -0
- package/dist/commands/dev-server/start.js.map +1 -0
- package/dist/commands/dev.d.ts +8 -0
- package/dist/commands/dev.js +12 -0
- package/dist/commands/dev.js.map +1 -0
- package/dist/commands/directory/info.d.ts +13 -0
- package/dist/commands/directory/info.js +85 -0
- package/dist/commands/directory/info.js.map +1 -0
- package/dist/commands/directory/install.d.ts +12 -0
- package/dist/commands/directory/install.js +46 -0
- package/dist/commands/directory/install.js.map +1 -0
- package/dist/commands/directory/list.d.ts +14 -0
- package/dist/commands/directory/list.js +114 -0
- package/dist/commands/directory/list.js.map +1 -0
- package/dist/commands/directory/listFunctions.d.ts +15 -0
- package/dist/commands/directory/listFunctions.js +86 -0
- package/dist/commands/directory/listFunctions.js.map +1 -0
- package/dist/commands/directory/listGlobalFunctions.d.ts +13 -0
- package/dist/commands/directory/listGlobalFunctions.js +64 -0
- package/dist/commands/directory/listGlobalFunctions.js.map +1 -0
- package/dist/commands/directory/listInstalls.d.ts +15 -0
- package/dist/commands/directory/listInstalls.js +72 -0
- package/dist/commands/directory/listInstalls.js.map +1 -0
- package/dist/commands/directory/listSourceFunctions.d.ts +14 -0
- package/dist/commands/directory/listSourceFunctions.js +71 -0
- package/dist/commands/directory/listSourceFunctions.js.map +1 -0
- package/dist/commands/directory/publish.d.ts +15 -0
- package/dist/commands/directory/publish.js +201 -0
- package/dist/commands/directory/publish.js.map +1 -0
- package/dist/commands/directory/status.d.ts +11 -0
- package/dist/commands/directory/status.js +50 -0
- package/dist/commands/directory/status.js.map +1 -0
- package/dist/commands/directory/uninstall.d.ts +13 -0
- package/dist/commands/directory/uninstall.js +55 -0
- package/dist/commands/directory/uninstall.js.map +1 -0
- package/dist/commands/directory/unpublish.d.ts +17 -0
- package/dist/commands/directory/unpublish.js +187 -0
- package/dist/commands/directory/unpublish.js.map +1 -0
- package/dist/commands/directory/upgrade.d.ts +15 -0
- package/dist/commands/directory/upgrade.js +113 -0
- package/dist/commands/directory/upgrade.js.map +1 -0
- package/dist/commands/env/get.d.ts +5 -0
- package/dist/commands/env/get.js +23 -0
- package/dist/commands/env/get.js.map +1 -0
- package/dist/commands/env/set.d.ts +8 -0
- package/dist/commands/env/set.js +63 -0
- package/dist/commands/env/set.js.map +1 -0
- package/dist/commands/jobs/list.d.ts +27 -0
- package/dist/commands/jobs/list.js +245 -0
- package/dist/commands/jobs/list.js.map +1 -0
- package/dist/commands/jobs/runtimeStatus.d.ts +11 -0
- package/dist/commands/jobs/runtimeStatus.js +55 -0
- package/dist/commands/jobs/runtimeStatus.js.map +1 -0
- package/dist/commands/jobs/status.d.ts +11 -0
- package/dist/commands/jobs/status.js +57 -0
- package/dist/commands/jobs/status.js.map +1 -0
- package/dist/commands/jobs/terminate.d.ts +11 -0
- package/dist/commands/jobs/terminate.js +35 -0
- package/dist/commands/jobs/terminate.js.map +1 -0
- package/dist/commands/jobs/trigger.d.ts +14 -0
- package/dist/commands/jobs/trigger.js +47 -0
- package/dist/commands/jobs/trigger.js.map +1 -0
- package/dist/commands/review/list.d.ts +9 -0
- package/dist/commands/review/list.js +74 -0
- package/dist/commands/review/list.js.map +1 -0
- package/dist/commands/review/open.d.ts +8 -0
- package/dist/commands/review/open.js +32 -0
- package/dist/commands/review/open.js.map +1 -0
- package/dist/hooks/command-not-found.d.ts +3 -0
- package/dist/hooks/command-not-found.js +93 -0
- package/dist/hooks/command-not-found.js.map +1 -0
- package/dist/hooks/preupdate.d.ts +10 -0
- package/dist/hooks/preupdate.js +42 -0
- package/dist/hooks/preupdate.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +59 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/AppContext.d.ts +9 -0
- package/dist/lib/AppContext.js +43 -0
- package/dist/lib/AppContext.js.map +1 -0
- package/dist/lib/AppPackager.d.ts +17 -0
- package/dist/lib/AppPackager.js +57 -0
- package/dist/lib/AppPackager.js.map +1 -0
- package/dist/lib/AppUpdater.d.ts +11 -0
- package/dist/lib/AppUpdater.js +143 -0
- package/dist/lib/AppUpdater.js.map +1 -0
- package/dist/lib/AppUploader.d.ts +9 -0
- package/dist/lib/AppUploader.js +37 -0
- package/dist/lib/AppUploader.js.map +1 -0
- package/dist/lib/BuildPipeline.d.ts +24 -0
- package/dist/lib/BuildPipeline.js +26 -0
- package/dist/lib/BuildPipeline.js.map +1 -0
- package/dist/lib/BuildPipelineFactory.d.ts +10 -0
- package/dist/lib/BuildPipelineFactory.js +23 -0
- package/dist/lib/BuildPipelineFactory.js.map +1 -0
- package/dist/lib/Config.d.ts +15 -0
- package/dist/lib/Config.js +47 -0
- package/dist/lib/Config.js.map +1 -0
- package/dist/lib/CustomHelp.d.ts +19 -0
- package/dist/lib/CustomHelp.js +81 -0
- package/dist/lib/CustomHelp.js.map +1 -0
- package/dist/lib/DependencyStage.d.ts +1 -0
- package/dist/lib/DependencyStage.js +3 -0
- package/dist/lib/DependencyStage.js.map +1 -0
- package/dist/lib/EnvironmentalOutput.d.ts +1 -0
- package/dist/lib/EnvironmentalOutput.js +22 -0
- package/dist/lib/EnvironmentalOutput.js.map +1 -0
- package/dist/lib/Moria.d.ts +51 -0
- package/dist/lib/Moria.js +30 -0
- package/dist/lib/Moria.js.map +1 -0
- package/dist/lib/MoriaApi.d.ts +22 -0
- package/dist/lib/MoriaApi.js +74 -0
- package/dist/lib/MoriaApi.js.map +1 -0
- package/dist/lib/NodeBuildPipeline.d.ts +25 -0
- package/dist/lib/NodeBuildPipeline.js +60 -0
- package/dist/lib/NodeBuildPipeline.js.map +1 -0
- package/dist/lib/PackageManager.d.ts +242 -0
- package/dist/lib/PackageManager.js +511 -0
- package/dist/lib/PackageManager.js.map +1 -0
- package/dist/lib/Rivendell.d.ts +409 -0
- package/dist/lib/Rivendell.js +391 -0
- package/dist/lib/Rivendell.js.map +1 -0
- package/dist/lib/RivendellApi.d.ts +22 -0
- package/dist/lib/RivendellApi.js +159 -0
- package/dist/lib/RivendellApi.js.map +1 -0
- package/dist/lib/Shards.d.ts +3 -0
- package/dist/lib/Shards.js +41 -0
- package/dist/lib/Shards.js.map +1 -0
- package/dist/lib/StringUtils.d.ts +1 -0
- package/dist/lib/StringUtils.js +9 -0
- package/dist/lib/StringUtils.js.map +1 -0
- package/dist/lib/TeminalPassthru.d.ts +7 -0
- package/dist/lib/TeminalPassthru.js +12 -0
- package/dist/lib/TeminalPassthru.js.map +1 -0
- package/dist/lib/TerminalConfirm.d.ts +3 -0
- package/dist/lib/TerminalConfirm.js +31 -0
- package/dist/lib/TerminalConfirm.js.map +1 -0
- package/dist/lib/TerminalInput.d.ts +32 -0
- package/dist/lib/TerminalInput.js +207 -0
- package/dist/lib/TerminalInput.js.map +1 -0
- package/dist/lib/TerminalMenu.d.ts +34 -0
- package/dist/lib/TerminalMenu.js +186 -0
- package/dist/lib/TerminalMenu.js.map +1 -0
- package/dist/lib/TerminalOutput.d.ts +5 -0
- package/dist/lib/TerminalOutput.js +12 -0
- package/dist/lib/TerminalOutput.js.map +1 -0
- package/dist/lib/TerminalSpinner.d.ts +14 -0
- package/dist/lib/TerminalSpinner.js +69 -0
- package/dist/lib/TerminalSpinner.js.map +1 -0
- package/dist/lib/Tracking.d.ts +15 -0
- package/dist/lib/Tracking.js +19 -0
- package/dist/lib/Tracking.js.map +1 -0
- package/dist/lib/build.d.ts +5 -0
- package/dist/lib/build.js +41 -0
- package/dist/lib/build.js.map +1 -0
- package/dist/lib/die.d.ts +5 -0
- package/dist/lib/die.js +14 -0
- package/dist/lib/die.js.map +1 -0
- package/dist/lib/directoryExists.d.ts +1 -0
- package/dist/lib/directoryExists.js +9 -0
- package/dist/lib/directoryExists.js.map +1 -0
- package/dist/lib/formatBuildState.d.ts +2 -0
- package/dist/lib/formatBuildState.js +23 -0
- package/dist/lib/formatBuildState.js.map +1 -0
- package/dist/lib/formatError.d.ts +1 -0
- package/dist/lib/formatError.js +55 -0
- package/dist/lib/formatError.js.map +1 -0
- package/dist/lib/formatJobStatus.d.ts +3 -0
- package/dist/lib/formatJobStatus.js +28 -0
- package/dist/lib/formatJobStatus.js.map +1 -0
- package/dist/lib/formatReviewStatus.d.ts +4 -0
- package/dist/lib/formatReviewStatus.js +28 -0
- package/dist/lib/formatReviewStatus.js.map +1 -0
- package/dist/lib/formatTimstamp.d.ts +1 -0
- package/dist/lib/formatTimstamp.js +25 -0
- package/dist/lib/formatTimstamp.js.map +1 -0
- package/dist/lib/formatVersionState.d.ts +2 -0
- package/dist/lib/formatVersionState.js +37 -0
- package/dist/lib/formatVersionState.js.map +1 -0
- package/dist/lib/gatherAppEnv.d.ts +3 -0
- package/dist/lib/gatherAppEnv.js +71 -0
- package/dist/lib/gatherAppEnv.js.map +1 -0
- package/dist/lib/handleInterrupt.d.ts +1 -0
- package/dist/lib/handleInterrupt.js +17 -0
- package/dist/lib/handleInterrupt.js.map +1 -0
- package/dist/lib/jobRuntime.d.ts +3 -0
- package/dist/lib/jobRuntime.js +16 -0
- package/dist/lib/jobRuntime.js.map +1 -0
- package/dist/lib/migrateOptiCli.d.ts +1 -0
- package/dist/lib/migrateOptiCli.js +30 -0
- package/dist/lib/migrateOptiCli.js.map +1 -0
- package/dist/lib/parseDate.d.ts +2 -0
- package/dist/lib/parseDate.js +26 -0
- package/dist/lib/parseDate.js.map +1 -0
- package/dist/lib/templating/TemplateRenderer.d.ts +13 -0
- package/dist/lib/templating/TemplateRenderer.js +63 -0
- package/dist/lib/templating/TemplateRenderer.js.map +1 -0
- package/dist/lib/templating/fetchTemplatesManifest.d.ts +1 -0
- package/dist/lib/templating/fetchTemplatesManifest.js +9 -0
- package/dist/lib/templating/fetchTemplatesManifest.js.map +1 -0
- package/dist/lib/templating/types.d.ts +27 -0
- package/dist/lib/templating/types.js +3 -0
- package/dist/lib/templating/types.js.map +1 -0
- package/dist/oclif.manifest.json +1616 -0
- package/dist/utils/utils.d.ts +5 -0
- package/dist/utils/utils.js +61 -0
- package/dist/utils/utils.js.map +1 -0
- package/package.json +180 -0
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Command } from '@oclif/core';
|
|
2
|
+
export default class Logs extends Command {
|
|
3
|
+
static description: string;
|
|
4
|
+
static flags: {
|
|
5
|
+
appId: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
6
|
+
buildId: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
7
|
+
appVersion: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
8
|
+
trackerId: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
9
|
+
jobId: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
10
|
+
level: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
11
|
+
from: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
12
|
+
to: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
13
|
+
tail: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
14
|
+
search: import("@oclif/core/lib/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
15
|
+
availability: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
16
|
+
};
|
|
17
|
+
run(): Promise<void>;
|
|
18
|
+
private printLogEntry;
|
|
19
|
+
private formatLevel;
|
|
20
|
+
private dumpLogs;
|
|
21
|
+
private tailLogs;
|
|
22
|
+
private buildRequests;
|
|
23
|
+
private buildRequest;
|
|
24
|
+
}
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const core_1 = require("@oclif/core");
|
|
4
|
+
const chalk = require("chalk");
|
|
5
|
+
const parseDate_1 = require("../../lib/parseDate");
|
|
6
|
+
const die_1 = require("../../lib/die");
|
|
7
|
+
const handleInterrupt_1 = require("../../lib/handleInterrupt");
|
|
8
|
+
const TerminalSpinner_1 = require("../../lib/TerminalSpinner");
|
|
9
|
+
const Moria_1 = require("../../lib/Moria");
|
|
10
|
+
const Rivendell_1 = require("../../lib/Rivendell");
|
|
11
|
+
const formatError_1 = require("../../lib/formatError");
|
|
12
|
+
var LogLevel = Moria_1.Moria.LogLevel;
|
|
13
|
+
const TAIL_CONFIG = Object.freeze({
|
|
14
|
+
minWindowMs: 30000,
|
|
15
|
+
lagMs: 15000,
|
|
16
|
+
queryIntervalMs: 5000,
|
|
17
|
+
dedupeCacheSize: 5000,
|
|
18
|
+
});
|
|
19
|
+
const PAGE_SIZE = 5000;
|
|
20
|
+
const INTERVAL = 24 * 60 * 60 * 1000;
|
|
21
|
+
class Logs extends core_1.Command {
|
|
22
|
+
async run() {
|
|
23
|
+
const { flags } = await this.parse(Logs);
|
|
24
|
+
(0, handleInterrupt_1.handleInterrupt)();
|
|
25
|
+
if (!(0, parseDate_1.isValidDateOrEpochOrDurationString)(flags.from)) {
|
|
26
|
+
(0, die_1.die)(chalk.red('Invalid "--from" input, should be an ISO string,' +
|
|
27
|
+
'an epoch timestamp, or relative string (i.e. "5m" for 5 minutes.'));
|
|
28
|
+
}
|
|
29
|
+
const fromDate = (0, parseDate_1.parseDate)(flags.from);
|
|
30
|
+
let toDate;
|
|
31
|
+
if (!flags.appId && !flags.buildId && !flags.jobId) {
|
|
32
|
+
(0, die_1.die)('Either App ID, Build ID or Job ID must be specified.');
|
|
33
|
+
}
|
|
34
|
+
if ((flags.appId && flags.buildId) ||
|
|
35
|
+
(flags.appId && flags.jobId) ||
|
|
36
|
+
(flags.buildId && flags.jobId) ||
|
|
37
|
+
(flags.appId && flags.buildId && flags.jobId)) {
|
|
38
|
+
(0, die_1.die)('Only App ID, Build ID or Job ID should be specified.');
|
|
39
|
+
}
|
|
40
|
+
if (flags.appId && !flags.trackerId && !(await Rivendell_1.Rivendell.isAdmin())) {
|
|
41
|
+
(0, die_1.die)('Tracker ID must be specified for developer role if App ID is specified.');
|
|
42
|
+
}
|
|
43
|
+
if (flags.tail) {
|
|
44
|
+
if (flags.to) {
|
|
45
|
+
(0, die_1.die)('Cannot specify --tail if specifying --to');
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
if (flags.to && !(0, parseDate_1.isValidDateOrEpochOrDurationString)(flags.to)) {
|
|
50
|
+
(0, die_1.die)(chalk.red('Invalid "--to" input, should be an ISO string, ' +
|
|
51
|
+
'an epoch timestamp, or relative string (i.e. "5m" for 5 minutes.'));
|
|
52
|
+
}
|
|
53
|
+
toDate = flags.to ? (0, parseDate_1.parseDate)(flags.to) : new Date();
|
|
54
|
+
if (fromDate >= toDate) {
|
|
55
|
+
(0, die_1.die)(chalk.red('--from must be before --to'));
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
const availability = flags.availability || 'us';
|
|
59
|
+
const shard = (await Rivendell_1.Rivendell.shards()).find((_shard) => _shard.id === availability);
|
|
60
|
+
if (!shard) {
|
|
61
|
+
(0, die_1.die)('Could not find the specified availability zone.');
|
|
62
|
+
}
|
|
63
|
+
if (flags.level) {
|
|
64
|
+
if (!Object.values(LogLevel).includes(flags.level.toUpperCase())) {
|
|
65
|
+
(0, die_1.die)(`Invalid log level. Valid values: ${Object.values(LogLevel).join(', ')}`);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
try {
|
|
69
|
+
if (flags.tail) {
|
|
70
|
+
await this.tailLogs(shard, (0, parseDate_1.parseDate)('5m'), flags);
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
const spinner = new TerminalSpinner_1.TerminalSpinner().start('');
|
|
74
|
+
try {
|
|
75
|
+
await this.dumpLogs(shard, fromDate, this.printLogEntry(), spinner, toDate, flags);
|
|
76
|
+
}
|
|
77
|
+
finally {
|
|
78
|
+
spinner.stop();
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
catch (e) {
|
|
83
|
+
(0, die_1.die)((0, formatError_1.formatError)(e));
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
printLogEntry() {
|
|
87
|
+
return (entry) => {
|
|
88
|
+
const columns = [
|
|
89
|
+
new Date(entry.time).toISOString(),
|
|
90
|
+
this.formatLevel(entry.level),
|
|
91
|
+
entry.message,
|
|
92
|
+
];
|
|
93
|
+
this.log(columns.join(' '));
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
formatLevel(level) {
|
|
97
|
+
const padding = 5;
|
|
98
|
+
switch (level.toUpperCase()) {
|
|
99
|
+
case LogLevel.DEBUG: {
|
|
100
|
+
return chalk.blue('DEBUG'.padEnd(padding));
|
|
101
|
+
}
|
|
102
|
+
case LogLevel.INFO: {
|
|
103
|
+
return chalk.gray('INFO'.padEnd(padding));
|
|
104
|
+
}
|
|
105
|
+
case LogLevel.WARN: {
|
|
106
|
+
return chalk.yellow('WARN'.padEnd(padding));
|
|
107
|
+
}
|
|
108
|
+
case LogLevel.ERROR: {
|
|
109
|
+
return chalk.red('ERROR'.padEnd(padding));
|
|
110
|
+
}
|
|
111
|
+
default:
|
|
112
|
+
return '';
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
async dumpLogs(shard, from, cb, spinner, to, flags) {
|
|
116
|
+
let count = 0;
|
|
117
|
+
const requests = this.buildRequests(from, to, flags);
|
|
118
|
+
for (const request of requests) {
|
|
119
|
+
let result;
|
|
120
|
+
do {
|
|
121
|
+
spinner.update(chalk.gray(`Querying logs until ${request.end ? new Date(request.end).toISOString() : 'now'}`));
|
|
122
|
+
result = await Moria_1.Moria.searchLogging(request, shard);
|
|
123
|
+
result.entries.forEach(cb);
|
|
124
|
+
request.cursor = result.cursor;
|
|
125
|
+
count += result.entries.length;
|
|
126
|
+
} while (result.entries.length > 0);
|
|
127
|
+
}
|
|
128
|
+
return count;
|
|
129
|
+
}
|
|
130
|
+
async tailLogs(shard, from, flags) {
|
|
131
|
+
const dedupeCache = new Set();
|
|
132
|
+
let start = from.valueOf();
|
|
133
|
+
const callback = (entry) => {
|
|
134
|
+
if (!dedupeCache.has(entry.id)) {
|
|
135
|
+
this.printLogEntry()(entry);
|
|
136
|
+
dedupeCache.add(entry.id);
|
|
137
|
+
if (dedupeCache.size > TAIL_CONFIG.dedupeCacheSize) {
|
|
138
|
+
const next = dedupeCache.entries().next();
|
|
139
|
+
if (!next.done) {
|
|
140
|
+
dedupeCache.delete(next.value[0]);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
start = Math.max(start, entry.time);
|
|
144
|
+
}
|
|
145
|
+
};
|
|
146
|
+
const spinner = new TerminalSpinner_1.TerminalSpinner().start('');
|
|
147
|
+
const query = async () => {
|
|
148
|
+
const end = Date.now() - TAIL_CONFIG.lagMs;
|
|
149
|
+
start = Math.min(start, end + TAIL_CONFIG.minWindowMs);
|
|
150
|
+
await this.dumpLogs(shard, start, callback, spinner, end, flags);
|
|
151
|
+
spinner.update(chalk.gray('Waiting for more logs...'));
|
|
152
|
+
setTimeout(query, TAIL_CONFIG.queryIntervalMs);
|
|
153
|
+
};
|
|
154
|
+
await query();
|
|
155
|
+
}
|
|
156
|
+
buildRequests(from, to, flags) {
|
|
157
|
+
let start = typeof from === 'number' ? from : from.valueOf();
|
|
158
|
+
const end = to
|
|
159
|
+
? typeof to === 'number'
|
|
160
|
+
? to
|
|
161
|
+
: to.valueOf()
|
|
162
|
+
: new Date().valueOf();
|
|
163
|
+
const requests = [];
|
|
164
|
+
while (start + INTERVAL < end) {
|
|
165
|
+
requests.push(this.buildRequest(start, start + INTERVAL - 1, flags));
|
|
166
|
+
start += INTERVAL;
|
|
167
|
+
}
|
|
168
|
+
if (start < end) {
|
|
169
|
+
requests.push(this.buildRequest(start, to, flags));
|
|
170
|
+
}
|
|
171
|
+
return requests;
|
|
172
|
+
}
|
|
173
|
+
buildRequest(from, to, flags) {
|
|
174
|
+
return {
|
|
175
|
+
context: {
|
|
176
|
+
appId: flags.appId,
|
|
177
|
+
appVersion: flags.appVersion,
|
|
178
|
+
jobId: flags.jobId,
|
|
179
|
+
trackerId: flags.trackerId,
|
|
180
|
+
buildId: flags.buildId,
|
|
181
|
+
},
|
|
182
|
+
pageSize: PAGE_SIZE,
|
|
183
|
+
start: typeof from === 'number' ? from : from.valueOf(),
|
|
184
|
+
end: to ? (typeof to === 'number' ? to : to.valueOf()) : undefined,
|
|
185
|
+
level: flags.level.toUpperCase(),
|
|
186
|
+
terms: flags.search,
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
exports.default = Logs;
|
|
191
|
+
Logs.description = 'Fetch app logs';
|
|
192
|
+
Logs.flags = {
|
|
193
|
+
appId: core_1.Flags.string({
|
|
194
|
+
description: 'The App ID (e.g. my_app). Either App ID or Build ID must be specified.',
|
|
195
|
+
}),
|
|
196
|
+
buildId: core_1.Flags.string({
|
|
197
|
+
description: "The ID of the build. Either App ID or Build ID must be specified. Build IDs are printed by 'ocp app prepare' command.",
|
|
198
|
+
}),
|
|
199
|
+
appVersion: core_1.Flags.string({ description: 'The app version (e.g. 1.0.0)' }),
|
|
200
|
+
trackerId: core_1.Flags.string({
|
|
201
|
+
description: 'The Tracker ID of the ODP account (required for developers)',
|
|
202
|
+
}),
|
|
203
|
+
jobId: core_1.Flags.string({
|
|
204
|
+
description: "Show logs for given execution of a job. Use 'ocp jobs list' command to get the job ID",
|
|
205
|
+
}),
|
|
206
|
+
level: core_1.Flags.string({
|
|
207
|
+
description: `Filter app logs by log level. Valid values: ${Object.values(LogLevel).join(', ')}`,
|
|
208
|
+
default: 'debug',
|
|
209
|
+
}),
|
|
210
|
+
from: core_1.Flags.string({
|
|
211
|
+
description: 'A start time as an ISO string, an epoch timestamp, or relative string (i.e. "5m" for 5 minutes.) Default: 24h',
|
|
212
|
+
default: '24h',
|
|
213
|
+
}),
|
|
214
|
+
to: core_1.Flags.string({
|
|
215
|
+
description: 'A end time as an ISO string, an epoch timestamp, or relative string (i.e. "5m" for 5 minutes)',
|
|
216
|
+
}),
|
|
217
|
+
tail: core_1.Flags.boolean({
|
|
218
|
+
description: 'Tails the logs',
|
|
219
|
+
default: false,
|
|
220
|
+
}),
|
|
221
|
+
search: core_1.Flags.string({
|
|
222
|
+
description: 'String to search for in log messages. Can be specified multiple times.',
|
|
223
|
+
multiple: true,
|
|
224
|
+
}),
|
|
225
|
+
availability: core_1.Flags.string({
|
|
226
|
+
char: 'a',
|
|
227
|
+
description: 'The availability zone that will be targeted (default: us)',
|
|
228
|
+
default: 'us',
|
|
229
|
+
}),
|
|
230
|
+
};
|
|
231
|
+
//# sourceMappingURL=logs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logs.js","sourceRoot":"","sources":["../../../src/commands/app/logs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const fs = require("fs");
|
|
4
|
+
const path = require("path");
|
|
5
|
+
const core_1 = require("@oclif/core");
|
|
6
|
+
const AppContext_1 = require("../../lib/AppContext");
|
|
7
|
+
const AppPackager_1 = require("../../lib/AppPackager");
|
|
8
|
+
const die_1 = require("../../lib/die");
|
|
9
|
+
const directoryExists_1 = require("../../lib/directoryExists");
|
|
10
|
+
const formatError_1 = require("../../lib/formatError");
|
|
11
|
+
class Package extends core_1.Command {
|
|
12
|
+
async run() {
|
|
13
|
+
const { args } = await this.parse(Package);
|
|
14
|
+
try {
|
|
15
|
+
const workingDir = process.cwd();
|
|
16
|
+
if (!(0, directoryExists_1.directoryExists)(args.path)) {
|
|
17
|
+
(0, die_1.die)('Specified path to app does not exist');
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
process.chdir(args.path);
|
|
21
|
+
const context = (0, AppContext_1.appContext)();
|
|
22
|
+
if (!context.appId || !context.version) {
|
|
23
|
+
(0, die_1.die)('Unable to read App ID or version info. Ensure you are uploading the right directory.');
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
if (context) {
|
|
27
|
+
if (!context.runtime) {
|
|
28
|
+
(0, die_1.die)('Runtime is not specified in app.yml');
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
const packageData = await new AppPackager_1.AppPackager('./', context.runtime).package();
|
|
32
|
+
const zipFileName = `${context.appId}@${context.version}.zip`;
|
|
33
|
+
fs.writeFileSync(path.join(workingDir, zipFileName), packageData);
|
|
34
|
+
this.log(`Created package ${zipFileName}`);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
catch (e) {
|
|
38
|
+
(0, die_1.die)((0, formatError_1.formatError)(e));
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
exports.default = Package;
|
|
43
|
+
Package.description = 'Prepare a package for manual upload';
|
|
44
|
+
Package.args = {
|
|
45
|
+
path: core_1.Args.string({
|
|
46
|
+
description: 'The root directory of the app',
|
|
47
|
+
required: false,
|
|
48
|
+
default: './',
|
|
49
|
+
}),
|
|
50
|
+
};
|
|
51
|
+
//# sourceMappingURL=package.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package.js","sourceRoot":"","sources":["../../../src/commands/app/package.ts"],"names":[],"mappings":";;AAAA,yBAAyB;AACzB,6BAA6B;AAC7B,sCAA4C;AAC5C,qDAAkD;AAClD,uDAAoD;AACpD,uCAAoC;AACpC,+DAA4D;AAC5D,uDAAoD;AAEpD,MAAqB,OAAQ,SAAQ,cAAO;IAWnC,KAAK,CAAC,GAAG;QACd,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAE3C,IAAI;YACF,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;YACjC,IAAI,CAAC,IAAA,iCAAe,EAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBAC/B,IAAA,SAAG,EAAC,sCAAsC,CAAC,CAAC;gBAC5C,OAAO;aACR;YACD,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEzB,MAAM,OAAO,GAAG,IAAA,uBAAU,GAAE,CAAC;YAC7B,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;gBACtC,IAAA,SAAG,EACD,sFAAsF,CACvF,CAAC;gBACF,OAAO;aACR;YAED,IAAI,OAAO,EAAE;gBACX,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;oBACpB,IAAA,SAAG,EAAC,qCAAqC,CAAC,CAAC;oBAC3C,OAAO;iBACR;gBACD,MAAM,WAAW,GAAG,MAAM,IAAI,yBAAW,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;gBAC3E,MAAM,WAAW,GAAG,GAAG,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,OAAO,MAAM,CAAC;gBAC9D,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,CAAC;gBAClE,IAAI,CAAC,GAAG,CAAC,mBAAmB,WAAW,EAAE,CAAC,CAAC;aAC5C;SACF;QAAC,OAAO,CAAM,EAAE;YACf,IAAA,SAAG,EAAC,IAAA,yBAAW,EAAC,CAAC,CAAC,CAAC,CAAC;SACrB;IACH,CAAC;;AA3CH,0BA4CC;AA3Ce,mBAAW,GAAG,qCAAqC,CAAC;AAEpD,YAAI,GAAG;IACnB,IAAI,EAAE,WAAI,CAAC,MAAM,CAAC;QAChB,WAAW,EAAE,+BAA+B;QAC5C,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,IAAI;KACd,CAAC;CACH,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { BaseBuildCommand } from './BaseBuildCommand';
|
|
2
|
+
export default class Prepare extends BaseBuildCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static flags: {
|
|
5
|
+
publish: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
6
|
+
usePreviousAppEnvValues: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
7
|
+
bumpDevVersion: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
8
|
+
noProgress: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
9
|
+
upgradeDeps: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
10
|
+
rcDependencies: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
11
|
+
noPrompt: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
12
|
+
path: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
13
|
+
};
|
|
14
|
+
run(): Promise<void>;
|
|
15
|
+
private updateVersionInAppManifest;
|
|
16
|
+
}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const core_1 = require("@oclif/core");
|
|
4
|
+
const chalk = require("chalk");
|
|
5
|
+
const semver = require("semver");
|
|
6
|
+
const fs = require("fs");
|
|
7
|
+
const path = require("path");
|
|
8
|
+
const AppContext_1 = require("../../lib/AppContext");
|
|
9
|
+
const publish_1 = require("../directory/publish");
|
|
10
|
+
const BaseBuildCommand_1 = require("./BaseBuildCommand");
|
|
11
|
+
const TerminalConfirm_1 = require("../../lib/TerminalConfirm");
|
|
12
|
+
const Rivendell_1 = require("../../lib/Rivendell");
|
|
13
|
+
const formatError_1 = require("../../lib/formatError");
|
|
14
|
+
const die_1 = require("../../lib/die");
|
|
15
|
+
class Prepare extends BaseBuildCommand_1.BaseBuildCommand {
|
|
16
|
+
async run() {
|
|
17
|
+
var _a, _b;
|
|
18
|
+
await super.run();
|
|
19
|
+
const { flags } = await this.parse(Prepare);
|
|
20
|
+
this.noPrompt = flags.noPrompt;
|
|
21
|
+
this.noProgress = flags.noProgress;
|
|
22
|
+
try {
|
|
23
|
+
const context = (0, AppContext_1.appContext)();
|
|
24
|
+
if (!context.appId || !context.version) {
|
|
25
|
+
this.log(chalk.gray('App id or version missing in the manifest\n'));
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
const requiresReview = await this.requiresReview(context.version);
|
|
29
|
+
if (requiresReview) {
|
|
30
|
+
const isInReview = await this.isInReview(context.appId, context.version);
|
|
31
|
+
const reviewMessage = isInReview
|
|
32
|
+
? chalk.gray("The app version is already in review. This will update the review and the app can't be published until it is approved. " +
|
|
33
|
+
`${chalk.yellow('Are you sure?')}`)
|
|
34
|
+
: chalk.gray('You are uploading a release version of the app. ' +
|
|
35
|
+
"This will start a review process and the app can't be published until it is approved. " +
|
|
36
|
+
`${chalk.yellow('Are you sure?')}`);
|
|
37
|
+
const reviewConfirmation = await TerminalConfirm_1.TerminalConfirm.ask(reviewMessage, this.noPrompt, true);
|
|
38
|
+
if (!reviewConfirmation) {
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
if (context.version && flags.bumpDevVersion) {
|
|
43
|
+
if (this.isDevVersion(context.version)) {
|
|
44
|
+
const bumpedVersion = (_b = (_a = semver
|
|
45
|
+
.parse(context.version)) === null || _a === void 0 ? void 0 : _a.inc('prerelease', 'dev')) === null || _b === void 0 ? void 0 : _b.format();
|
|
46
|
+
if (!bumpedVersion) {
|
|
47
|
+
this.log(chalk.red(`Cannot parse app version: ${context.version}`));
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
this.log(chalk.gray(`Bumping dev version to ${bumpedVersion}`));
|
|
51
|
+
this.updateVersionInAppManifest(context.version, bumpedVersion);
|
|
52
|
+
context.version = bumpedVersion;
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
this.log(chalk.yellow('Not a dev version. Ignoring --bump-dev-version flag'));
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
await this.runInternal({
|
|
59
|
+
upload: true,
|
|
60
|
+
publish: true,
|
|
61
|
+
usePreviousAppEnvValues: flags.usePreviousAppEnvValues,
|
|
62
|
+
});
|
|
63
|
+
await this.reviewAppVersion(context.appId, context.version);
|
|
64
|
+
if (flags.publish) {
|
|
65
|
+
await publish_1.default.run([
|
|
66
|
+
`${context.appId}@${context.version}`,
|
|
67
|
+
...(this.noProgress ? ['--no-progress'] : []),
|
|
68
|
+
...(this.noPrompt ? ['--no-prompt'] : []),
|
|
69
|
+
]);
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
if (requiresReview) {
|
|
73
|
+
const appVersion = `${context.appId}@${context.version}`;
|
|
74
|
+
const appReview = await Rivendell_1.Rivendell.getReviewUrl(appVersion);
|
|
75
|
+
const reviewUrl = appReview.url;
|
|
76
|
+
this.log(chalk.gray(`\nYour app has been sent to review. Your code will be available in a private repository on GitHub, ` +
|
|
77
|
+
`and you will receive an invitation from GitHub by email for access.` +
|
|
78
|
+
`It is important you accept this invitation in order to receive communications about your app from the review team.`));
|
|
79
|
+
this.log(chalk.gray(`\nOnce the review is approved, your app can be deployed to app directory.\n`));
|
|
80
|
+
this.log(chalk.gray(`You can run ${chalk.white(`ocp review open ${appVersion}`)} to open the review URL at any time.`));
|
|
81
|
+
this.log(chalk.gray(`The URL for your repo is ${chalk.white(`${reviewUrl}`)}\n`));
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
this.log(chalk.gray(`\nUse ${chalk.white(`ocp directory publish ${context.appId}@${context.version}`)} to publish and release your app\n`));
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
process.exit(0);
|
|
88
|
+
}
|
|
89
|
+
catch (e) {
|
|
90
|
+
(0, die_1.die)((0, formatError_1.formatError)(e));
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
updateVersionInAppManifest(oldVersion, newVersion) {
|
|
94
|
+
const file = path.join(process.cwd(), 'app.yml');
|
|
95
|
+
const contents = fs.readFileSync(file, 'utf8');
|
|
96
|
+
const updated = contents.replace(new RegExp(`(version\\s*:\\s*)${oldVersion}`), `$1${newVersion}`);
|
|
97
|
+
fs.writeFileSync(file, updated);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
exports.default = Prepare;
|
|
101
|
+
Prepare.description = 'Validate, package, upload and build an app to prepare for publishing';
|
|
102
|
+
Prepare.flags = {
|
|
103
|
+
...BaseBuildCommand_1.BaseBuildCommand.flags,
|
|
104
|
+
publish: core_1.Flags.boolean({
|
|
105
|
+
description: 'Automatically publish if the upload is successful',
|
|
106
|
+
default: false,
|
|
107
|
+
}),
|
|
108
|
+
usePreviousAppEnvValues: core_1.Flags.boolean({
|
|
109
|
+
aliases: ['use-previous-app-env-values'],
|
|
110
|
+
description: 'Use app env values (.env file) from the previous version of the app. Any values in local .env file will be ignored',
|
|
111
|
+
default: false,
|
|
112
|
+
}),
|
|
113
|
+
bumpDevVersion: core_1.Flags.boolean({
|
|
114
|
+
aliases: ['bump-dev-version'],
|
|
115
|
+
description: 'Bump dev version before building. Allows quickly testing dev versions',
|
|
116
|
+
default: false,
|
|
117
|
+
}),
|
|
118
|
+
};
|
|
119
|
+
//# sourceMappingURL=prepare.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prepare.js","sourceRoot":"","sources":["../../../src/commands/app/prepare.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Command } from '@oclif/core';
|
|
2
|
+
export default class Register extends Command {
|
|
3
|
+
static description: string;
|
|
4
|
+
run(): Promise<void>;
|
|
5
|
+
private getShards;
|
|
6
|
+
private registerAppInShard;
|
|
7
|
+
private handleRegistrationError;
|
|
8
|
+
private checkAppAccess;
|
|
9
|
+
private handleError;
|
|
10
|
+
}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const chalk = require("chalk");
|
|
4
|
+
const core_1 = require("@oclif/core");
|
|
5
|
+
const die_1 = require("../../lib/die");
|
|
6
|
+
const formatError_1 = require("../../lib/formatError");
|
|
7
|
+
const Rivendell_1 = require("../../lib/Rivendell");
|
|
8
|
+
const RivendellApi_1 = require("../../lib/RivendellApi");
|
|
9
|
+
const http2_1 = require("http2");
|
|
10
|
+
const prompts_1 = require("@inquirer/prompts");
|
|
11
|
+
var ApiError = RivendellApi_1.RivendellApi.ApiError;
|
|
12
|
+
class Register extends core_1.Command {
|
|
13
|
+
async run() {
|
|
14
|
+
try {
|
|
15
|
+
const id = await (0, prompts_1.input)({ message: 'The app id to reserve' });
|
|
16
|
+
const name = await (0, prompts_1.input)({ message: 'The display name of the app' });
|
|
17
|
+
const accountType = await (0, prompts_1.select)({
|
|
18
|
+
message: 'Target product for the app',
|
|
19
|
+
choices: [
|
|
20
|
+
{
|
|
21
|
+
name: `${chalk.bold('Connect Platform')} - ${chalk.gray("for developing an app for Optimizely's holistic integration solution, Optimizely Connect Platform (OCP).")}`,
|
|
22
|
+
value: 'HUB',
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
name: `${chalk.bold('Data Platform')} - ${chalk.gray("for developing an app for Optimizely's customer data platform solution, Optimizely Data Platform (ODP)")}`,
|
|
26
|
+
value: 'ODP',
|
|
27
|
+
},
|
|
28
|
+
],
|
|
29
|
+
});
|
|
30
|
+
const personal = await (0, prompts_1.confirm)({
|
|
31
|
+
message: 'Keep this app private and not share it with other developers in your organization?',
|
|
32
|
+
default: false,
|
|
33
|
+
});
|
|
34
|
+
const shards = await this.getShards();
|
|
35
|
+
this.log(`Registering app ${id} in all shards`);
|
|
36
|
+
for (const shard of shards) {
|
|
37
|
+
await this.registerAppInShard(id, name, accountType, personal, shard.id);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
this.handleError(error);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
async getShards() {
|
|
45
|
+
const shards = await Rivendell_1.Rivendell.shards();
|
|
46
|
+
return shards.sort((first, second) => {
|
|
47
|
+
if (first.id === 'us') {
|
|
48
|
+
return -1;
|
|
49
|
+
}
|
|
50
|
+
else if (second.id === 'us') {
|
|
51
|
+
return 1;
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
return first.id.localeCompare(second.id);
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
async registerAppInShard(id, name, accountType, personal, shardId) {
|
|
59
|
+
try {
|
|
60
|
+
const app = await Rivendell_1.Rivendell.registerApp(id, name, accountType, personal, shardId);
|
|
61
|
+
this.log(`Registered app ${app.id} with name "${app.name}" in ${shardId}`);
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
await this.handleRegistrationError(error, id, shardId);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
async handleRegistrationError(error, id, shardId) {
|
|
68
|
+
var _a;
|
|
69
|
+
if (error instanceof ApiError && ((_a = error.response) === null || _a === void 0 ? void 0 : _a.status) === http2_1.constants.HTTP_STATUS_CONFLICT) {
|
|
70
|
+
await this.checkAppAccess(id, shardId);
|
|
71
|
+
this.log(`App ${id} is already registered in shard ${shardId}`);
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
throw error;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
async checkAppAccess(id, shardId) {
|
|
78
|
+
var _a;
|
|
79
|
+
try {
|
|
80
|
+
await Rivendell_1.Rivendell.fetchApp(id, shardId);
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
if (error instanceof ApiError && ((_a = error.response) === null || _a === void 0 ? void 0 : _a.status) === http2_1.constants.HTTP_STATUS_NOT_FOUND) {
|
|
84
|
+
throw new Error(`App ${id} already registered by another vendor`);
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
throw error;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
handleError(error) {
|
|
92
|
+
if ((error === null || error === void 0 ? void 0 : error.name) === 'ExitPromptError') {
|
|
93
|
+
(0, die_1.die)((0, formatError_1.formatError)(new Error('Command interrupted. No changes were made')));
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
(0, die_1.die)((0, formatError_1.formatError)(error));
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
exports.default = Register;
|
|
101
|
+
Register.description = 'Register an app in all shards';
|
|
102
|
+
//# sourceMappingURL=register.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register.js","sourceRoot":"","sources":["../../../src/commands/app/register.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Command } from '@oclif/core';
|
|
2
|
+
export default class SetLogLevelCommand extends Command {
|
|
3
|
+
static aliases: string[];
|
|
4
|
+
static description: string;
|
|
5
|
+
static flags: {
|
|
6
|
+
trackerId: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
7
|
+
timeToLive: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
8
|
+
availability: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
9
|
+
};
|
|
10
|
+
static args: {
|
|
11
|
+
appVersion: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
|
|
12
|
+
logLevel: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
|
|
13
|
+
};
|
|
14
|
+
run(): Promise<void>;
|
|
15
|
+
private getLogLevel;
|
|
16
|
+
}
|