@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,201 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const chalk = require("chalk");
|
|
4
|
+
const terminal_kit_1 = require("terminal-kit");
|
|
5
|
+
const semver_1 = require("semver");
|
|
6
|
+
const core_1 = require("@oclif/core");
|
|
7
|
+
const die_1 = require("../../lib/die");
|
|
8
|
+
const formatVersionState_1 = require("../../lib/formatVersionState");
|
|
9
|
+
const handleInterrupt_1 = require("../../lib/handleInterrupt");
|
|
10
|
+
const TerminalSpinner_1 = require("../../lib/TerminalSpinner");
|
|
11
|
+
const Rivendell_1 = require("../../lib/Rivendell");
|
|
12
|
+
const formatError_1 = require("../../lib/formatError");
|
|
13
|
+
const Shards_1 = require("../../lib/Shards");
|
|
14
|
+
const unpublish_1 = require("./unpublish");
|
|
15
|
+
const TerminalConfirm_1 = require("../../lib/TerminalConfirm");
|
|
16
|
+
var AppVersionState = Rivendell_1.Rivendell.AppVersionState;
|
|
17
|
+
const STOPPED_STATES = [
|
|
18
|
+
AppVersionState.START_FAILED,
|
|
19
|
+
AppVersionState.STOPPED,
|
|
20
|
+
AppVersionState.STOP_FAILED,
|
|
21
|
+
];
|
|
22
|
+
const UNPUBLISHABLE_STATES = [
|
|
23
|
+
AppVersionState.RUNNING,
|
|
24
|
+
AppVersionState.START_FAILED,
|
|
25
|
+
AppVersionState.STOP_FAILED,
|
|
26
|
+
];
|
|
27
|
+
const PUBLISHABLE_STATES = [
|
|
28
|
+
AppVersionState.NEW,
|
|
29
|
+
AppVersionState.PUBLISHED,
|
|
30
|
+
AppVersionState.START_FAILED,
|
|
31
|
+
];
|
|
32
|
+
class PublishCommand extends core_1.Command {
|
|
33
|
+
async run() {
|
|
34
|
+
(0, handleInterrupt_1.handleInterrupt)();
|
|
35
|
+
const { args, flags } = await this.parse(PublishCommand);
|
|
36
|
+
const appVersionStr = args.appVersion;
|
|
37
|
+
if (!/[\w-]+@\d+\.\d+\.\d+(?:-\w+\.\d+)?/.test(appVersionStr)) {
|
|
38
|
+
(0, die_1.die)('appVersion is required in the format of app@1.0.0');
|
|
39
|
+
}
|
|
40
|
+
const [appId, version] = appVersionStr.split('@');
|
|
41
|
+
this.log(chalk.gray(`Publishing ${appVersionStr} to the directory...`));
|
|
42
|
+
let success = true;
|
|
43
|
+
try {
|
|
44
|
+
const primaryAppVersion = await Rivendell_1.Rivendell.fetchAppVersion({ appId, version }, 'us');
|
|
45
|
+
const manifest = JSON.parse(primaryAppVersion.manifestJson);
|
|
46
|
+
const shards = await (0, Shards_1.applicableShards)('', manifest);
|
|
47
|
+
for (const shard of shards) {
|
|
48
|
+
try {
|
|
49
|
+
const appVersion = await Rivendell_1.Rivendell.fetchAppVersion({ appId, version }, shard);
|
|
50
|
+
if (appVersion.state === AppVersionState.RUNNING) {
|
|
51
|
+
this.log(chalk.green(`Already published in ${shard}. Skipping...`));
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
if (!PUBLISHABLE_STATES.includes(appVersion.state)) {
|
|
55
|
+
throw new Error(`AppVersion must be in a publishable state. ` +
|
|
56
|
+
`Currently: ${(0, formatVersionState_1.formatVersionState)(appVersion.state)}`);
|
|
57
|
+
}
|
|
58
|
+
await Rivendell_1.Rivendell.publish(appId, version, shard);
|
|
59
|
+
this.log(chalk.green(`Success. ${appVersionStr} is being published to ${shard}.`));
|
|
60
|
+
const context = { appId, version };
|
|
61
|
+
await this.watchForPublishCompletion(context, await this.isStopped(context, shard), shard, flags);
|
|
62
|
+
// since we are handling the interrupt, disable the handler so we can exit cleanly
|
|
63
|
+
terminal_kit_1.terminal.removeAllListeners('key');
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
success = false;
|
|
67
|
+
this.error(chalk.red(`Error publishing in shard ${shard}: ${(0, formatError_1.formatError)(error)}`), { exit: false });
|
|
68
|
+
if (shards[shards.length - 1] !== shard &&
|
|
69
|
+
!(await TerminalConfirm_1.TerminalConfirm.ask('Continue with other shards?', flags.noPrompt, true))) {
|
|
70
|
+
break;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
const pre = (0, semver_1.prerelease)(version);
|
|
75
|
+
if (pre && pre[0] !== 'dev') {
|
|
76
|
+
await this.checkOrphanedDeploys(appId, shards);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
catch (e) {
|
|
80
|
+
(0, die_1.die)((0, formatError_1.formatError)(e));
|
|
81
|
+
}
|
|
82
|
+
if (!success) {
|
|
83
|
+
(0, die_1.die)(chalk.red(`Failed to publish ${appVersionStr} to all shards.`));
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
async checkOrphanedDeploys(appId, currentShards) {
|
|
87
|
+
const criteria = {
|
|
88
|
+
appId,
|
|
89
|
+
states: UNPUBLISHABLE_STATES,
|
|
90
|
+
};
|
|
91
|
+
const versions = await Rivendell_1.Rivendell.searchAppVersions(criteria, 'us');
|
|
92
|
+
if (versions.length) {
|
|
93
|
+
versions.sort((x, y) => (0, semver_1.rcompare)(x.id.version, y.id.version));
|
|
94
|
+
const undeployVersions = {};
|
|
95
|
+
for (const version of versions) {
|
|
96
|
+
const appVersion = await Rivendell_1.Rivendell.fetchAppVersion({ appId, version: version.id.version }, 'us');
|
|
97
|
+
const shards = await (0, Shards_1.applicableShards)('', JSON.parse(appVersion.manifestJson));
|
|
98
|
+
const check = shards.filter((x) => !currentShards.includes(x));
|
|
99
|
+
for (const s of check) {
|
|
100
|
+
undeployVersions[s] = await Rivendell_1.Rivendell.searchAppVersions(criteria, s);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
if (Object.keys(undeployVersions).length) {
|
|
104
|
+
this.log(`You are no longer targeting the availability: ${Object.keys(undeployVersions)}, ` + `do you want to unpublish the following apps:`);
|
|
105
|
+
this.log(Object.entries(undeployVersions)
|
|
106
|
+
.map((x) => x[1]
|
|
107
|
+
.map((y) => `* ${y.id.appId}@${y.id.version} in ${x[0]}`)
|
|
108
|
+
.join('\n'))
|
|
109
|
+
.join('\n'));
|
|
110
|
+
// when noPrompt flag is enabled, default answer is no for destructive operation
|
|
111
|
+
if (await TerminalConfirm_1.TerminalConfirm.ask(chalk.red('Do you want to unpublish the listed AppVersions now?'), false, false)) {
|
|
112
|
+
for (const [shard, toUndeploy] of Object.entries(undeployVersions)) {
|
|
113
|
+
for (const version of toUndeploy) {
|
|
114
|
+
await unpublish_1.default.run([
|
|
115
|
+
`${version.id.appId}@${version.id.version}`,
|
|
116
|
+
'-a',
|
|
117
|
+
shard,
|
|
118
|
+
'--no-prompt',
|
|
119
|
+
]);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
async isStopped(context, shard) {
|
|
127
|
+
const appVersion = await Rivendell_1.Rivendell.fetchAppVersion(context, shard);
|
|
128
|
+
return STOPPED_STATES.includes(appVersion.state);
|
|
129
|
+
}
|
|
130
|
+
watchForPublishCompletion(context, wasStopped, shard, flags) {
|
|
131
|
+
this.log(chalk.gray(`Watching for publish (${shard}) to complete... CTRL+C to stop checking.`));
|
|
132
|
+
return new Promise((resolve, reject) => {
|
|
133
|
+
const spinner = flags.noProgress
|
|
134
|
+
? null
|
|
135
|
+
: new TerminalSpinner_1.TerminalSpinner().start('');
|
|
136
|
+
let attempts = 0;
|
|
137
|
+
let ignoreStopped = wasStopped;
|
|
138
|
+
const checkStatus = () => {
|
|
139
|
+
attempts++;
|
|
140
|
+
Rivendell_1.Rivendell.fetchAppVersion(context, shard)
|
|
141
|
+
.then((appVersion) => {
|
|
142
|
+
const state = appVersion.state;
|
|
143
|
+
if (ignoreStopped && !STOPPED_STATES.includes(state)) {
|
|
144
|
+
ignoreStopped = false;
|
|
145
|
+
}
|
|
146
|
+
if (state === AppVersionState.RUNNING ||
|
|
147
|
+
(!ignoreStopped && STOPPED_STATES.includes(state))) {
|
|
148
|
+
if (spinner) {
|
|
149
|
+
spinner.stop();
|
|
150
|
+
}
|
|
151
|
+
if (state === AppVersionState.RUNNING) {
|
|
152
|
+
this.log(chalk.green(`${context.appId}@${context.version} has been published to ${shard}.`));
|
|
153
|
+
}
|
|
154
|
+
else {
|
|
155
|
+
(0, die_1.die)(`Publish to ${shard} failed. ${context.appId}@${context.version} ` +
|
|
156
|
+
`in ${(0, formatVersionState_1.formatVersionState)(state)} state.`);
|
|
157
|
+
}
|
|
158
|
+
resolve();
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
if (attempts > 300) {
|
|
162
|
+
(0, die_1.die)('Timed out waiting for completion');
|
|
163
|
+
}
|
|
164
|
+
if (spinner) {
|
|
165
|
+
spinner.update(`Status: ${(0, formatVersionState_1.formatVersionState)(state)}`);
|
|
166
|
+
setTimeout(checkStatus, 2000);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
})
|
|
170
|
+
.catch((e) => {
|
|
171
|
+
if (spinner) {
|
|
172
|
+
spinner.stop();
|
|
173
|
+
}
|
|
174
|
+
reject(e);
|
|
175
|
+
});
|
|
176
|
+
};
|
|
177
|
+
checkStatus();
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
exports.default = PublishCommand;
|
|
182
|
+
PublishCommand.description = 'Publish (make available) a specific app version that has been reviewed and approved';
|
|
183
|
+
PublishCommand.flags = {
|
|
184
|
+
noProgress: core_1.Flags.boolean({
|
|
185
|
+
aliases: ['no-progress'],
|
|
186
|
+
description: 'Do not show progress spinner',
|
|
187
|
+
default: false,
|
|
188
|
+
}),
|
|
189
|
+
noPrompt: core_1.Flags.boolean({
|
|
190
|
+
aliases: ['no-prompt'],
|
|
191
|
+
description: 'Use default answers for prompts (default is yes, except destructive operations)',
|
|
192
|
+
default: false,
|
|
193
|
+
}),
|
|
194
|
+
};
|
|
195
|
+
PublishCommand.args = {
|
|
196
|
+
appVersion: core_1.Args.string({
|
|
197
|
+
description: 'The App ID and version (e.g. my_app@1.0.0)',
|
|
198
|
+
required: true,
|
|
199
|
+
}),
|
|
200
|
+
};
|
|
201
|
+
//# sourceMappingURL=publish.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publish.js","sourceRoot":"","sources":["../../../src/commands/directory/publish.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Command } from '@oclif/core';
|
|
2
|
+
export default class StatusCommand extends Command {
|
|
3
|
+
static description: string;
|
|
4
|
+
static flags: {
|
|
5
|
+
availability: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
6
|
+
};
|
|
7
|
+
static args: {
|
|
8
|
+
appId: import("@oclif/core/lib/interfaces").Arg<string | undefined, Record<string, unknown>>;
|
|
9
|
+
};
|
|
10
|
+
run(): Promise<void>;
|
|
11
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const core_1 = require("@oclif/core");
|
|
4
|
+
const die_1 = require("../../lib/die");
|
|
5
|
+
const formatReviewStatus_1 = require("../../lib/formatReviewStatus");
|
|
6
|
+
const formatVersionState_1 = require("../../lib/formatVersionState");
|
|
7
|
+
const formatError_1 = require("../../lib/formatError");
|
|
8
|
+
const Rivendell_1 = require("../../lib/Rivendell");
|
|
9
|
+
const AppContext_1 = require("../../lib/AppContext");
|
|
10
|
+
var AppVersionState = Rivendell_1.Rivendell.AppVersionState;
|
|
11
|
+
class StatusCommand extends core_1.Command {
|
|
12
|
+
async run() {
|
|
13
|
+
var _a;
|
|
14
|
+
const { args, flags } = await this.parse(StatusCommand);
|
|
15
|
+
const context = (0, AppContext_1.appContext)((_a = args.appId) !== null && _a !== void 0 ? _a : '');
|
|
16
|
+
if (!context.appId || !context.version) {
|
|
17
|
+
return (0, die_1.die)('App ID and version are required');
|
|
18
|
+
}
|
|
19
|
+
try {
|
|
20
|
+
const appVersion = await Rivendell_1.Rivendell.fetchAppVersion(context, flags.availability);
|
|
21
|
+
this.log(`Version state: ${(0, formatVersionState_1.formatVersionState)(appVersion.state)}`);
|
|
22
|
+
if (appVersion.reviewStatus) {
|
|
23
|
+
const reviewStatus = appVersion.reviewStatus;
|
|
24
|
+
const appVersionState = appVersion.state;
|
|
25
|
+
if (appVersionState === AppVersionState.PUBLISHED) {
|
|
26
|
+
this.log(`Review status: ${(0, formatReviewStatus_1.formatReviewStatus)(reviewStatus, appVersionState)}`);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
catch (e) {
|
|
31
|
+
(0, die_1.die)((0, formatError_1.formatError)(e));
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
exports.default = StatusCommand;
|
|
36
|
+
StatusCommand.description = 'Get the status of a particular app version';
|
|
37
|
+
StatusCommand.flags = {
|
|
38
|
+
availability: core_1.Flags.string({
|
|
39
|
+
char: 'a',
|
|
40
|
+
description: 'The availability zone that will be targeted (default: us)',
|
|
41
|
+
default: 'us',
|
|
42
|
+
}),
|
|
43
|
+
};
|
|
44
|
+
StatusCommand.args = {
|
|
45
|
+
appId: core_1.Args.string({
|
|
46
|
+
description: 'The App ID and version to look up (e.g. myapp@1.0.0)',
|
|
47
|
+
required: false,
|
|
48
|
+
}),
|
|
49
|
+
};
|
|
50
|
+
//# sourceMappingURL=status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/commands/directory/status.ts"],"names":[],"mappings":";;AAAA,sCAAmD;AACnD,uCAAoC;AACpC,qEAAkE;AAClE,qEAAkE;AAClE,uDAAoD;AACpD,mDAAgD;AAChD,qDAAkD;AAClD,IAAO,eAAe,GAAG,qBAAS,CAAC,eAAe,CAAC;AAGnD,MAAqB,aAAc,SAAQ,cAAO;IAkBzC,KAAK,CAAC,GAAG;;QACd,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QACxD,MAAM,OAAO,GAAG,IAAA,uBAAU,EAAC,MAAA,IAAI,CAAC,KAAK,mCAAI,EAAE,CAAC,CAAC;QAE7C,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;YACtC,OAAO,IAAA,SAAG,EAAC,iCAAiC,CAAC,CAAC;SAC/C;QAED,IAAI;YACF,MAAM,UAAU,GAAG,MAAM,qBAAS,CAAC,eAAe,CAChD,OAAO,EACP,KAAK,CAAC,YAAY,CACnB,CAAC;YACF,IAAI,CAAC,GAAG,CACN,kBAAkB,IAAA,uCAAkB,EAClC,UAAU,CAAC,KAAwB,CACpC,EAAE,CACJ,CAAC;YAEF,IAAI,UAAU,CAAC,YAAY,EAAE;gBAC3B,MAAM,YAAY,GAAG,UAAU,CAAC,YAA4B,CAAC;gBAC7D,MAAM,eAAe,GAAG,UAAU,CAAC,KAAwB,CAAC;gBAC5D,IAAI,eAAe,KAAK,eAAe,CAAC,SAAS,EAAE;oBACjD,IAAI,CAAC,GAAG,CACN,kBAAkB,IAAA,uCAAkB,EAClC,YAAY,EACZ,eAAe,CAChB,EAAE,CACJ,CAAC;iBACH;aACF;SACF;QAAC,OAAO,CAAM,EAAE;YACf,IAAA,SAAG,EAAC,IAAA,yBAAW,EAAC,CAAC,CAAC,CAAC,CAAC;SACrB;IACH,CAAC;;AApDH,gCAqDC;AApDe,yBAAW,GAAG,4CAA4C,CAAC;AAE3D,mBAAK,GAAG;IACpB,YAAY,EAAE,YAAK,CAAC,MAAM,CAAC;QACzB,IAAI,EAAE,GAAG;QACT,WAAW,EAAE,2DAA2D;QACxE,OAAO,EAAE,IAAI;KACd,CAAC;CACH,CAAC;AAEY,kBAAI,GAAG;IACnB,KAAK,EAAE,WAAI,CAAC,MAAM,CAAC;QACjB,WAAW,EAAE,sDAAsD;QACnE,QAAQ,EAAE,KAAK;KAChB,CAAC;CACH,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Command } from '@oclif/core';
|
|
2
|
+
export default class UninstallCommand extends Command {
|
|
3
|
+
static description: string;
|
|
4
|
+
static args: {
|
|
5
|
+
appId: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
|
|
6
|
+
trackerId: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
|
|
7
|
+
};
|
|
8
|
+
static flags: {
|
|
9
|
+
noPrompt: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
10
|
+
availability: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
11
|
+
};
|
|
12
|
+
run(): Promise<void>;
|
|
13
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
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 Rivendell_1 = require("../../lib/Rivendell");
|
|
7
|
+
const formatError_1 = require("../../lib/formatError");
|
|
8
|
+
const TerminalConfirm_1 = require("../../lib/TerminalConfirm");
|
|
9
|
+
class UninstallCommand extends core_1.Command {
|
|
10
|
+
async run() {
|
|
11
|
+
var _a, _b;
|
|
12
|
+
const { args, flags } = await this.parse(UninstallCommand);
|
|
13
|
+
try {
|
|
14
|
+
const install = await Rivendell_1.Rivendell.fetchAppInstallation(args.appId, args.trackerId, flags.availability);
|
|
15
|
+
const appVersion = await Rivendell_1.Rivendell.fetchAppVersion({ appId: install.appId, version: install.version }, flags.availability || 'us');
|
|
16
|
+
const manifest = JSON.parse(appVersion.manifestJson);
|
|
17
|
+
const hasOpalFunction = manifest.functions
|
|
18
|
+
&& Object.values(manifest.functions).some((fn) => fn.opal_tool === true);
|
|
19
|
+
const hasOpalCategory = (_b = (_a = manifest.meta) === null || _a === void 0 ? void 0 : _a.categories) === null || _b === void 0 ? void 0 : _b.includes('Opal');
|
|
20
|
+
const isOpalApp = hasOpalFunction || hasOpalCategory;
|
|
21
|
+
if (isOpalApp) {
|
|
22
|
+
if (!await TerminalConfirm_1.TerminalConfirm.ask(chalk.red(`The app contains Opal tools that may have been added to Opal. If the app is uninstalled, the tools will stop working properly in Opal. Please make sure the tools are removed from Opal first, before uninstalling the app. Are you sure you want to uninstall?`), flags.noPrompt, true)) {
|
|
23
|
+
(0, die_1.die)('Operation cancelled.');
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
await Rivendell_1.Rivendell.uninstall(install.id, flags.availability);
|
|
27
|
+
this.log(chalk.green(`Uninstalled ${install.appId} from ${install.trackerId} (${flags.availability || 'us'})`));
|
|
28
|
+
}
|
|
29
|
+
catch (e) {
|
|
30
|
+
(0, die_1.die)((0, formatError_1.formatError)(e));
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
exports.default = UninstallCommand;
|
|
35
|
+
UninstallCommand.description = 'Uninstall an app from an account';
|
|
36
|
+
UninstallCommand.args = {
|
|
37
|
+
appId: core_1.Args.string({ description: 'The App ID', required: true }),
|
|
38
|
+
trackerId: core_1.Args.string({
|
|
39
|
+
description: 'The Tracker ID of the account to uninstall from',
|
|
40
|
+
required: true,
|
|
41
|
+
}),
|
|
42
|
+
};
|
|
43
|
+
UninstallCommand.flags = {
|
|
44
|
+
noPrompt: core_1.Flags.boolean({
|
|
45
|
+
aliases: ['no-prompt'],
|
|
46
|
+
description: 'Use default answer to any prompt question (default is yes)',
|
|
47
|
+
default: false,
|
|
48
|
+
}),
|
|
49
|
+
availability: core_1.Flags.string({
|
|
50
|
+
char: 'a',
|
|
51
|
+
description: 'The availability zone that will be targeted (default: us)',
|
|
52
|
+
default: 'us',
|
|
53
|
+
}),
|
|
54
|
+
};
|
|
55
|
+
//# sourceMappingURL=uninstall.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../../src/commands/directory/uninstall.ts"],"names":[],"mappings":";;AAAA,+BAA+B;AAC/B,sCAAmD;AACnD,uCAAoC;AACpC,mDAAgD;AAChD,uDAAoD;AACpD,+DAA0D;AAE1D,MAAqB,gBAAiB,SAAQ,cAAO;IAwB5C,KAAK,CAAC,GAAG;;QACd,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAE3D,IAAI;YACF,MAAM,OAAO,GAAG,MAAM,qBAAS,CAAC,oBAAoB,CAClD,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,SAAS,EACd,KAAK,CAAC,YAAY,CACnB,CAAC;YACF,MAAM,UAAU,GAAG,MAAM,qBAAS,CAAC,eAAe,CAChD,EAAC,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAC,EAChD,KAAK,CAAC,YAAY,IAAI,IAAI,CAC3B,CAAC;YACF,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;YACrD,MAAM,eAAe,GAAG,QAAQ,CAAC,SAAS;mBACrC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,EAAO,EAAE,EAAE,CAAC,EAAE,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC;YAChF,MAAM,eAAe,GAAG,MAAA,MAAA,QAAQ,CAAC,IAAI,0CAAE,UAAU,0CAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;YACpE,MAAM,SAAS,GAAG,eAAe,IAAI,eAAe,CAAC;YACrD,IAAI,SAAS,EAAE;gBACb,IAAI,CAAC,MAAM,iCAAe,CAAC,GAAG,CAC5B,KAAK,CAAC,GAAG,CAAC,iQAAiQ,CAAC,EAC5Q,KAAK,CAAC,QAAQ,EACd,IAAI,CACL,EAAE;oBACD,IAAA,SAAG,EAAC,sBAAsB,CAAC,CAAC;iBAC7B;aACF;YACD,MAAM,qBAAS,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;YAC1D,IAAI,CAAC,GAAG,CACN,KAAK,CAAC,KAAK,CACT,eAAe,OAAO,CAAC,KAAK,SAAS,OAAO,CAAC,SAAS,KACpD,KAAK,CAAC,YAAY,IAAI,IACxB,GAAG,CACJ,CACF,CAAC;SACH;QAAC,OAAO,CAAM,EAAE;YACf,IAAA,SAAG,EAAC,IAAA,yBAAW,EAAC,CAAC,CAAC,CAAC,CAAC;SACrB;IACH,CAAC;;AA9DH,mCA+DC;AA9De,4BAAW,GAAG,kCAAkC,CAAC;AAEjD,qBAAI,GAAG;IACnB,KAAK,EAAE,WAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACjE,SAAS,EAAE,WAAI,CAAC,MAAM,CAAC;QACrB,WAAW,EAAE,iDAAiD;QAC9D,QAAQ,EAAE,IAAI;KACf,CAAC;CACH,CAAC;AAEY,sBAAK,GAAG;IACpB,QAAQ,EAAE,YAAK,CAAC,OAAO,CAAC;QACtB,OAAO,EAAE,CAAC,WAAW,CAAC;QACtB,WAAW,EAAE,4DAA4D;QACzE,OAAO,EAAE,KAAK;KACf,CAAC;IACF,YAAY,EAAE,YAAK,CAAC,MAAM,CAAC;QACzB,IAAI,EAAE,GAAG;QACT,WAAW,EAAE,2DAA2D;QACxE,OAAO,EAAE,IAAI;KACd,CAAC;CACH,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Command } from '@oclif/core';
|
|
2
|
+
export default class UnpublishCommand extends Command {
|
|
3
|
+
static description: string;
|
|
4
|
+
static flags: {
|
|
5
|
+
force: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
6
|
+
noProgress: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
7
|
+
noPrompt: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
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
|
+
};
|
|
13
|
+
run(): Promise<void>;
|
|
14
|
+
private uninstallEverywhere;
|
|
15
|
+
private uninstall;
|
|
16
|
+
private watchForCompletion;
|
|
17
|
+
}
|
|
@@ -0,0 +1,187 @@
|
|
|
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 formatVersionState_1 = require("../../lib/formatVersionState");
|
|
7
|
+
const handleInterrupt_1 = require("../../lib/handleInterrupt");
|
|
8
|
+
const TerminalSpinner_1 = require("../../lib/TerminalSpinner");
|
|
9
|
+
const Rivendell_1 = require("../../lib/Rivendell");
|
|
10
|
+
var AppVersionState = Rivendell_1.Rivendell.AppVersionState;
|
|
11
|
+
var SortDirection = Rivendell_1.Rivendell.SortDirection;
|
|
12
|
+
const formatError_1 = require("../../lib/formatError");
|
|
13
|
+
const Shards_1 = require("../../lib/Shards");
|
|
14
|
+
const TerminalConfirm_1 = require("../../lib/TerminalConfirm");
|
|
15
|
+
const UNPUBLISHABLE_STATES = [
|
|
16
|
+
AppVersionState.RUNNING,
|
|
17
|
+
AppVersionState.START_FAILED,
|
|
18
|
+
AppVersionState.STOP_FAILED,
|
|
19
|
+
];
|
|
20
|
+
class UnpublishCommand extends core_1.Command {
|
|
21
|
+
async run() {
|
|
22
|
+
(0, handleInterrupt_1.handleInterrupt)();
|
|
23
|
+
const { args, flags } = await this.parse(UnpublishCommand);
|
|
24
|
+
if (!/[\w-]+@\d+\.\d+\.\d+(?:-\w+\.\d+)?/.test(args.appVersion)) {
|
|
25
|
+
return (0, die_1.die)('appVersion is required in the format of app@1.0.0');
|
|
26
|
+
}
|
|
27
|
+
const [appId, version] = args.appVersion.split('@');
|
|
28
|
+
let success = true;
|
|
29
|
+
try {
|
|
30
|
+
const primaryAppVersion = await Rivendell_1.Rivendell.fetchAppVersion({ appId, version }, flags.availability);
|
|
31
|
+
const primaryShardAppState = primaryAppVersion.state;
|
|
32
|
+
if (!UNPUBLISHABLE_STATES.includes(primaryShardAppState) &&
|
|
33
|
+
AppVersionState.STOPPED !== primaryShardAppState) {
|
|
34
|
+
throw new Error(`AppVersion must be in an unpublishable state in the primary shard. Currently: ${(0, formatVersionState_1.formatVersionState)(primaryShardAppState)}`);
|
|
35
|
+
}
|
|
36
|
+
const manifest = JSON.parse(primaryAppVersion.manifestJson);
|
|
37
|
+
const shards = await (0, Shards_1.applicableShards)(flags.availability, manifest);
|
|
38
|
+
const confirmUnpublish = await TerminalConfirm_1.TerminalConfirm.ask(chalk.red('Unpublishing is not reversible. Are you sure you want to unpublish? [y/n]'), flags['no-prompt'], true);
|
|
39
|
+
if (!confirmUnpublish) {
|
|
40
|
+
(0, die_1.die)('Operation cancelled.');
|
|
41
|
+
}
|
|
42
|
+
for (const shard of shards) {
|
|
43
|
+
const uninstalled = await this.uninstallEverywhere(appId, version, shard, flags.force, flags['no-prompt']);
|
|
44
|
+
if (!uninstalled) {
|
|
45
|
+
process.exit();
|
|
46
|
+
}
|
|
47
|
+
this.log(chalk.green(`Unpublishing ${args.appVersion} is from ${shard}.`));
|
|
48
|
+
try {
|
|
49
|
+
const appVersion = await Rivendell_1.Rivendell.fetchAppVersion({ appId, version }, shard);
|
|
50
|
+
const appState = appVersion.state;
|
|
51
|
+
if (AppVersionState.STOPPED === appState) {
|
|
52
|
+
this.log(chalk.yellow(`${args.appVersion} is already unpublished in ${shard}. Skipping...`));
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
if (!UNPUBLISHABLE_STATES.includes(appState)) {
|
|
56
|
+
throw new Error(`AppVersion must be in an unpublishable state. Currently: ${(0, formatVersionState_1.formatVersionState)(appState)}`);
|
|
57
|
+
}
|
|
58
|
+
await Rivendell_1.Rivendell.unpublish(appId, version, shard);
|
|
59
|
+
this.log(chalk.green(`${args.appVersion} is being unpublished in ${shard}.`));
|
|
60
|
+
await this.watchForCompletion({ appId, version }, shard, flags['no-progress']);
|
|
61
|
+
}
|
|
62
|
+
catch (error) {
|
|
63
|
+
success = false;
|
|
64
|
+
this.log(chalk.red(`Error unpublishing in shard ${shard}: ${(0, formatError_1.formatError)(error)}`));
|
|
65
|
+
if (shards[shards.length - 1] !== shard &&
|
|
66
|
+
!(await TerminalConfirm_1.TerminalConfirm.ask('Continue with other shards?', flags['no-prompt'], true))) {
|
|
67
|
+
break;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
catch (e) {
|
|
73
|
+
(0, die_1.die)((0, formatError_1.formatError)(e));
|
|
74
|
+
}
|
|
75
|
+
if (!success) {
|
|
76
|
+
(0, die_1.die)(chalk.red(`Failed to unpublish ${args.appVersion} from all shards.`));
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
async uninstallEverywhere(appId, version, shard, force, noPrompt) {
|
|
80
|
+
const criteria = {
|
|
81
|
+
appId,
|
|
82
|
+
version,
|
|
83
|
+
sorts: [{ field: 'trackerId', direction: SortDirection.DESC }],
|
|
84
|
+
};
|
|
85
|
+
try {
|
|
86
|
+
const installations = await Rivendell_1.Rivendell.searchAppInstallations(criteria, shard);
|
|
87
|
+
if (!installations.length) {
|
|
88
|
+
return true;
|
|
89
|
+
}
|
|
90
|
+
const doUninstall = async () => {
|
|
91
|
+
for (const appInstallation of installations) {
|
|
92
|
+
await this.uninstall(appInstallation, shard);
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
if (force) {
|
|
96
|
+
await doUninstall();
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
const trackers = installations.map((installation) => installation.trackerId);
|
|
100
|
+
this.log(`${appId}@${version} is currently installed in ${trackers.length} account(s) in ${shard}:`);
|
|
101
|
+
this.log(` (${trackers.join(', ')})\n`);
|
|
102
|
+
this.log(chalk.red('Are you sure you want to uninstall from all these accounts? [y/n]'));
|
|
103
|
+
if (await TerminalConfirm_1.TerminalConfirm.ask(chalk.red('Are you sure you want to uninstall from all these accounts?'), noPrompt, false)) {
|
|
104
|
+
await doUninstall();
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
return false;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return true;
|
|
111
|
+
}
|
|
112
|
+
catch (e) {
|
|
113
|
+
throw e;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
async uninstall(appInstallation, shard) {
|
|
117
|
+
await Rivendell_1.Rivendell.uninstall(appInstallation.id, shard);
|
|
118
|
+
this.log(chalk.gray(`Uninstalled ${appInstallation.appId} from ${appInstallation.trackerId} in ${shard}`));
|
|
119
|
+
}
|
|
120
|
+
async watchForCompletion(context, shard, noProgress) {
|
|
121
|
+
this.log(chalk.gray(`Watching for unpublish to complete in ${shard}... CTRL+C to stop checking.`));
|
|
122
|
+
return new Promise((resolve, reject) => {
|
|
123
|
+
const spinner = noProgress ? null : new TerminalSpinner_1.TerminalSpinner().start('');
|
|
124
|
+
let attempts = 0;
|
|
125
|
+
const checkStatus = () => {
|
|
126
|
+
attempts++;
|
|
127
|
+
Rivendell_1.Rivendell.fetchAppVersion(context, shard)
|
|
128
|
+
.then((appVersion) => {
|
|
129
|
+
const state = appVersion.state;
|
|
130
|
+
if (state === AppVersionState.STOPPED) {
|
|
131
|
+
if (spinner) {
|
|
132
|
+
spinner.stop();
|
|
133
|
+
}
|
|
134
|
+
this.log(chalk.green(`${context.appId}@${context.version} has been unpublished in ${shard}.`));
|
|
135
|
+
resolve();
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
if (attempts > 300) {
|
|
139
|
+
(0, die_1.die)('Timed out waiting for completion');
|
|
140
|
+
}
|
|
141
|
+
if (spinner) {
|
|
142
|
+
spinner.update(`Status: ${(0, formatVersionState_1.formatVersionState)(state)}`);
|
|
143
|
+
setTimeout(checkStatus, 2000);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
})
|
|
147
|
+
.catch((e) => {
|
|
148
|
+
if (spinner) {
|
|
149
|
+
spinner.stop();
|
|
150
|
+
}
|
|
151
|
+
reject(e);
|
|
152
|
+
});
|
|
153
|
+
};
|
|
154
|
+
checkStatus();
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
exports.default = UnpublishCommand;
|
|
159
|
+
UnpublishCommand.description = 'Unpublish an app version (uninstall everywhere and undeploy)';
|
|
160
|
+
UnpublishCommand.flags = {
|
|
161
|
+
force: core_1.Flags.boolean({
|
|
162
|
+
char: 'f',
|
|
163
|
+
description: 'Force uninstall from all accounts without confirmation',
|
|
164
|
+
}),
|
|
165
|
+
noProgress: core_1.Flags.boolean({
|
|
166
|
+
aliases: ['no-progress'],
|
|
167
|
+
description: 'Disable progress spinner',
|
|
168
|
+
default: false,
|
|
169
|
+
}),
|
|
170
|
+
noPrompt: core_1.Flags.boolean({
|
|
171
|
+
aliases: ['no-prompt'],
|
|
172
|
+
description: 'Use default answer to prompts (default yes, except destructive ops)',
|
|
173
|
+
default: false,
|
|
174
|
+
}),
|
|
175
|
+
availability: core_1.Flags.string({
|
|
176
|
+
char: 'a',
|
|
177
|
+
description: 'The availability zone that will be targeted (default: us)',
|
|
178
|
+
default: 'us',
|
|
179
|
+
}),
|
|
180
|
+
};
|
|
181
|
+
UnpublishCommand.args = {
|
|
182
|
+
appVersion: core_1.Args.string({
|
|
183
|
+
description: 'The App ID and version (e.g. my_app@1.0.0)',
|
|
184
|
+
required: true,
|
|
185
|
+
}),
|
|
186
|
+
};
|
|
187
|
+
//# sourceMappingURL=unpublish.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unpublish.js","sourceRoot":"","sources":["../../../src/commands/directory/unpublish.ts"],"names":[],"mappings":";;AAAA,+BAA+B;AAC/B,sCAAmD;AAEnD,uCAAoC;AACpC,qEAAkE;AAClE,+DAA4D;AAC5D,+DAA4D;AAC5D,mDAAgD;AAChD,IAAO,eAAe,GAAG,qBAAS,CAAC,eAAe,CAAC;AACnD,IAAO,aAAa,GAAG,qBAAS,CAAC,aAAa,CAAC;AAE/C,uDAAoD;AACpD,6CAAoD;AACpD,+DAA4D;AAE5D,MAAM,oBAAoB,GAAG;IAC3B,eAAe,CAAC,OAAO;IACvB,eAAe,CAAC,YAAY;IAC5B,eAAe,CAAC,WAAW;CAC5B,CAAC;AAEF,MAAqB,gBAAiB,SAAQ,cAAO;IAkC5C,KAAK,CAAC,GAAG;QACd,IAAA,iCAAe,GAAE,CAAC;QAElB,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAE3D,IAAI,CAAC,oCAAoC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YAC/D,OAAO,IAAA,SAAG,EAAC,mDAAmD,CAAC,CAAC;SACjE;QAED,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACpD,IAAI,OAAO,GAAG,IAAI,CAAC;QAEnB,IAAI;YACF,MAAM,iBAAiB,GAAG,MAAM,qBAAS,CAAC,eAAe,CACvD,EAAE,KAAK,EAAE,OAAO,EAAE,EAClB,KAAK,CAAC,YAAY,CACnB,CAAC;YACF,MAAM,oBAAoB,GAAG,iBAAiB,CAAC,KAAwB,CAAC;YAExE,IACE,CAAC,oBAAoB,CAAC,QAAQ,CAAC,oBAAoB,CAAC;gBACpD,eAAe,CAAC,OAAO,KAAK,oBAAoB,EAChD;gBACA,MAAM,IAAI,KAAK,CACb,iFAAiF,IAAA,uCAAkB,EACjG,oBAAoB,CACrB,EAAE,CACJ,CAAC;aACH;YAED,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CACzB,iBAAiB,CAAC,YAAY,CACxB,CAAC;YACT,MAAM,MAAM,GAAG,MAAM,IAAA,yBAAgB,EAAC,KAAK,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;YAEpE,MAAM,gBAAgB,GAAG,MAAM,iCAAe,CAAC,GAAG,CAChD,KAAK,CAAC,GAAG,CACP,2EAA2E,CAC5E,EACD,KAAK,CAAC,WAAW,CAAC,EAClB,IAAI,CACL,CAAC;YAEF,IAAI,CAAC,gBAAgB,EAAE;gBACrB,IAAA,SAAG,EAAC,sBAAsB,CAAC,CAAC;aAC7B;YAED,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;gBAC1B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAChD,KAAK,EACL,OAAO,EACP,KAAK,EACL,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,WAAW,CAAC,CACnB,CAAC;gBACF,IAAI,CAAC,WAAW,EAAE;oBAChB,OAAO,CAAC,IAAI,EAAE,CAAC;iBAChB;gBAED,IAAI,CAAC,GAAG,CACN,KAAK,CAAC,KAAK,CAAC,gBAAgB,IAAI,CAAC,UAAU,YAAY,KAAK,GAAG,CAAC,CACjE,CAAC;gBAEF,IAAI;oBACF,MAAM,UAAU,GAAG,MAAM,qBAAS,CAAC,eAAe,CAChD,EAAE,KAAK,EAAE,OAAO,EAAE,EAClB,KAAK,CACN,CAAC;oBACF,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAwB,CAAC;oBAErD,IAAI,eAAe,CAAC,OAAO,KAAK,QAAQ,EAAE;wBACxC,IAAI,CAAC,GAAG,CACN,KAAK,CAAC,MAAM,CACV,GAAG,IAAI,CAAC,UAAU,8BAA8B,KAAK,eAAe,CACrE,CACF,CAAC;wBACF,SAAS;qBACV;oBAED,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;wBAC5C,MAAM,IAAI,KAAK,CACb,4DAA4D,IAAA,uCAAkB,EAC5E,QAAQ,CACT,EAAE,CACJ,CAAC;qBACH;oBAED,MAAM,qBAAS,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;oBACjD,IAAI,CAAC,GAAG,CACN,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,UAAU,4BAA4B,KAAK,GAAG,CAAC,CACpE,CAAC;oBACF,MAAM,IAAI,CAAC,kBAAkB,CAC3B,EAAE,KAAK,EAAE,OAAO,EAAE,EAClB,KAAK,EACL,KAAK,CAAC,aAAa,CAAC,CACrB,CAAC;iBACH;gBAAC,OAAO,KAAU,EAAE;oBACnB,OAAO,GAAG,KAAK,CAAC;oBAChB,IAAI,CAAC,GAAG,CACN,KAAK,CAAC,GAAG,CACP,+BAA+B,KAAK,KAAK,IAAA,yBAAW,EAAC,KAAK,CAAC,EAAE,CAC9D,CACF,CAAC;oBACF,IACE,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,KAAK;wBACnC,CAAC,CAAC,MAAM,iCAAe,CAAC,GAAG,CACzB,6BAA6B,EAC7B,KAAK,CAAC,WAAW,CAAC,EAClB,IAAI,CACL,CAAC,EACF;wBACA,MAAM;qBACP;iBACF;aACF;SACF;QAAC,OAAO,CAAM,EAAE;YACf,IAAA,SAAG,EAAC,IAAA,yBAAW,EAAC,CAAC,CAAC,CAAC,CAAC;SACrB;QAED,IAAI,CAAC,OAAO,EAAE;YACZ,IAAA,SAAG,EAAC,KAAK,CAAC,GAAG,CAAC,uBAAuB,IAAI,CAAC,UAAU,mBAAmB,CAAC,CAAC,CAAC;SAC3E;IACH,CAAC;IAEO,KAAK,CAAC,mBAAmB,CAC/B,KAAa,EACb,OAAe,EACf,KAAa,EACb,KAAc,EACd,QAAiB;QAEjB,MAAM,QAAQ,GAAG;YACf,KAAK;YACL,OAAO;YACP,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,CAAC,IAAI,EAAE,CAAC;SAC/D,CAAC;QAEF,IAAI;YACF,MAAM,aAAa,GAAG,MAAM,qBAAS,CAAC,sBAAsB,CAC1D,QAAQ,EACR,KAAK,CACN,CAAC;YAEF,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;gBACzB,OAAO,IAAI,CAAC;aACb;YAED,MAAM,WAAW,GAAG,KAAK,IAAI,EAAE;gBAC7B,KAAK,MAAM,eAAe,IAAI,aAAa,EAAE;oBAC3C,MAAM,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;iBAC9C;YACH,CAAC,CAAC;YAEF,IAAI,KAAK,EAAE;gBACT,MAAM,WAAW,EAAE,CAAC;aACrB;iBAAM;gBACL,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAChC,CAAC,YAAY,EAAE,EAAE,CAAC,YAAY,CAAC,SAAS,CACzC,CAAC;gBACF,IAAI,CAAC,GAAG,CACN,GAAG,KAAK,IAAI,OAAO,8BAA8B,QAAQ,CAAC,MAAM,kBAAkB,KAAK,GAAG,CAC3F,CAAC;gBACF,IAAI,CAAC,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACzC,IAAI,CAAC,GAAG,CACN,KAAK,CAAC,GAAG,CACP,mEAAmE,CACpE,CACF,CAAC;gBAEF,IACE,MAAM,iCAAe,CAAC,GAAG,CACvB,KAAK,CAAC,GAAG,CACP,6DAA6D,CAC9D,EACD,QAAQ,EACR,KAAK,CACN,EACD;oBACA,MAAM,WAAW,EAAE,CAAC;iBACrB;qBAAM;oBACL,OAAO,KAAK,CAAC;iBACd;aACF;YAED,OAAO,IAAI,CAAC;SACb;QAAC,OAAO,CAAC,EAAE;YACV,MAAM,CAAC,CAAC;SACT;IACH,CAAC;IAEO,KAAK,CAAC,SAAS,CAAC,eAAgC,EAAE,KAAa;QACrE,MAAM,qBAAS,CAAC,SAAS,CAAC,eAAe,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,GAAG,CACN,KAAK,CAAC,IAAI,CACR,eAAe,eAAe,CAAC,KAAK,SAAS,eAAe,CAAC,SAAS,OAAO,KAAK,EAAE,CACrF,CACF,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAC9B,OAAmB,EACnB,KAAa,EACb,UAAmB;QAEnB,IAAI,CAAC,GAAG,CACN,KAAK,CAAC,IAAI,CACR,yCAAyC,KAAK,8BAA8B,CAC7E,CACF,CAAC;QAEF,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC3C,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,iCAAe,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACpE,IAAI,QAAQ,GAAG,CAAC,CAAC;YAEjB,MAAM,WAAW,GAAG,GAAG,EAAE;gBACvB,QAAQ,EAAE,CAAC;gBACX,qBAAS,CAAC,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC;qBACtC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE;oBACnB,MAAM,KAAK,GAAG,UAAU,CAAC,KAAwB,CAAC;oBAClD,IAAI,KAAK,KAAK,eAAe,CAAC,OAAO,EAAE;wBACrC,IAAI,OAAO,EAAE;4BACX,OAAO,CAAC,IAAI,EAAE,CAAC;yBAChB;wBACD,IAAI,CAAC,GAAG,CACN,KAAK,CAAC,KAAK,CACT,GAAG,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,OAAO,4BAA4B,KAAK,GAAG,CACxE,CACF,CAAC;wBACF,OAAO,EAAE,CAAC;qBACX;yBAAM;wBACL,IAAI,QAAQ,GAAG,GAAG,EAAE;4BAClB,IAAA,SAAG,EAAC,kCAAkC,CAAC,CAAC;yBACzC;wBACD,IAAI,OAAO,EAAE;4BACX,OAAO,CAAC,MAAM,CAAC,WAAW,IAAA,uCAAkB,EAAC,KAAK,CAAC,EAAE,CAAC,CAAC;4BACvD,UAAU,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;yBAC/B;qBACF;gBACH,CAAC,CAAC;qBACD,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;oBACX,IAAI,OAAO,EAAE;wBACX,OAAO,CAAC,IAAI,EAAE,CAAC;qBAChB;oBACD,MAAM,CAAC,CAAC,CAAC,CAAC;gBACZ,CAAC,CAAC,CAAC;YACP,CAAC,CAAC;YAEF,WAAW,EAAE,CAAC;QAChB,CAAC,CAAC,CAAC;IACL,CAAC;;AA3RH,mCA4RC;AA3Re,4BAAW,GACvB,8DAA8D,CAAC;AAEnD,sBAAK,GAAG;IACpB,KAAK,EAAE,YAAK,CAAC,OAAO,CAAC;QACnB,IAAI,EAAE,GAAG;QACT,WAAW,EAAE,wDAAwD;KACtE,CAAC;IACF,UAAU,EAAE,YAAK,CAAC,OAAO,CAAC;QACxB,OAAO,EAAE,CAAC,aAAa,CAAC;QACxB,WAAW,EAAE,0BAA0B;QACvC,OAAO,EAAE,KAAK;KACf,CAAC;IACF,QAAQ,EAAE,YAAK,CAAC,OAAO,CAAC;QACtB,OAAO,EAAE,CAAC,WAAW,CAAC;QACtB,WAAW,EACT,qEAAqE;QACvE,OAAO,EAAE,KAAK;KACf,CAAC;IACF,YAAY,EAAE,YAAK,CAAC,MAAM,CAAC;QACzB,IAAI,EAAE,GAAG;QACT,WAAW,EAAE,2DAA2D;QACxE,OAAO,EAAE,IAAI;KACd,CAAC;CACH,CAAC;AAEY,qBAAI,GAAG;IACnB,UAAU,EAAE,WAAI,CAAC,MAAM,CAAC;QACtB,WAAW,EAAE,4CAA4C;QACzD,QAAQ,EAAE,IAAI;KACf,CAAC;CACH,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Command } from '@oclif/core';
|
|
2
|
+
export default class UpgradeCommand extends Command {
|
|
3
|
+
static description: string;
|
|
4
|
+
static flags: {
|
|
5
|
+
toVersion: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
6
|
+
availability: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
7
|
+
};
|
|
8
|
+
static args: {
|
|
9
|
+
appId: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
|
|
10
|
+
trackerId: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
|
|
11
|
+
};
|
|
12
|
+
private STATUS_CHECK_ERROR_THRESHOLD;
|
|
13
|
+
run(): Promise<void>;
|
|
14
|
+
private watchForCompletion;
|
|
15
|
+
}
|