@codiac.io/codiac-cli 1.3.36 → 1.3.38
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
CHANGED
|
@@ -21,7 +21,7 @@ $ npm install -g @codiac.io/codiac-cli
|
|
|
21
21
|
$ codiac COMMAND
|
|
22
22
|
running command...
|
|
23
23
|
$ codiac (--version|-v)
|
|
24
|
-
@codiac.io/codiac-cli/1.3.
|
|
24
|
+
@codiac.io/codiac-cli/1.3.38 linux-x64 node-v16.17.1
|
|
25
25
|
$ codiac --help [COMMAND]
|
|
26
26
|
USAGE
|
|
27
27
|
$ codiac COMMAND
|
|
@@ -1,15 +1,30 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
|
|
1
|
+
import { Command } from '@oclif/core';
|
|
2
|
+
import { ISecurable } from "@codiac.io/codiac-common/security";
|
|
3
|
+
import { CabinetScope } from '../../apis/codiac-relay/contracts';
|
|
4
|
+
import { CommandBaseExec } from '../../command-base-exec';
|
|
5
|
+
import { InteractionModes } from "../../uilogic/config-ui-utils";
|
|
6
|
+
import { AtLeast } from '@codiac.io/codiac-common/contracts';
|
|
7
|
+
import { RootMap } from "../../apis/codiac-api/contracts";
|
|
8
|
+
export type CabinetCreateRequest = CabinetScope & ISecurable & {
|
|
9
|
+
enterprise: string;
|
|
10
|
+
cluster: string;
|
|
11
|
+
};
|
|
12
|
+
export default class CabinetCreate extends CommandBaseExec<CabinetCreateRequest> {
|
|
4
13
|
static description: string;
|
|
5
14
|
static aliases: string[];
|
|
6
15
|
static args: {
|
|
7
16
|
cabinet: import("@oclif/core/lib/interfaces/parser").Arg<string | undefined, Record<string, unknown>>;
|
|
8
17
|
};
|
|
18
|
+
static examples: Command.Example[];
|
|
9
19
|
static flags: {
|
|
10
20
|
help: import("@oclif/core/lib/interfaces").BooleanFlag<void>;
|
|
11
21
|
enterprise: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
12
22
|
environment: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
23
|
+
cluster: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
24
|
+
silent: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
25
|
+
echo: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
26
|
+
"to-script": import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
27
|
+
"take-defaults": import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
13
28
|
as: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
14
29
|
remember: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
15
30
|
rememberAs: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
@@ -17,5 +32,11 @@ export default class CabinetCreate extends CommandBaseEnterprise {
|
|
|
17
32
|
withoutdefaults: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
18
33
|
verbose: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
19
34
|
};
|
|
20
|
-
|
|
35
|
+
protected bootstrap(): void;
|
|
36
|
+
captureArgs(enterpriseCode: string): Promise<[AtLeast<CabinetCreateRequest, "enterprise">, (InteractionModes | undefined), boolean]>;
|
|
37
|
+
validatePartial(partial: CabinetCreateRequest, rootMap: RootMap): Promise<CabinetCreateRequest>;
|
|
38
|
+
buildCandidate_silently(partial: CabinetCreateRequest, rootMap: RootMap): Promise<CabinetCreateRequest>;
|
|
39
|
+
buildCandidate_interactively(partial: AtLeast<CabinetCreateRequest, "enterprise">, rootMap: RootMap, takeDefaults: boolean): Promise<CabinetCreateRequest>;
|
|
40
|
+
buildCommandString(candidate: CabinetCreateRequest, cmd: string[]): string[];
|
|
41
|
+
executeTask(candidate: CabinetCreateRequest): Promise<void>;
|
|
21
42
|
}
|
|
@@ -1,115 +1,161 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const tslib_1 = require("tslib");
|
|
4
|
-
require("reflect-metadata");
|
|
5
4
|
const core_1 = require("@oclif/core");
|
|
6
5
|
const cli_common_1 = require("../../cli-common");
|
|
7
|
-
const
|
|
6
|
+
const command_base_exec_1 = require("../../command-base-exec");
|
|
8
7
|
const cloud_provider_contextualizer_1 = require("../../uilogic/cloud-provider-contextualizer");
|
|
8
|
+
const config_ui_utils_1 = require("../../uilogic/config-ui-utils");
|
|
9
9
|
const prettify_1 = require("../../prettify");
|
|
10
|
-
class CabinetCreate extends
|
|
11
|
-
|
|
10
|
+
class CabinetCreate extends command_base_exec_1.CommandBaseExec {
|
|
11
|
+
bootstrap() {
|
|
12
|
+
super.bootstrap();
|
|
13
|
+
cloud_provider_contextualizer_1.CloudProviderContextualizer.bootstrap(this.ioc);
|
|
14
|
+
}
|
|
15
|
+
captureArgs(enterpriseCode) {
|
|
16
|
+
var _a, _b, _c;
|
|
17
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
18
|
+
const { args, flags } = yield this.parse(CabinetCreate);
|
|
19
|
+
//Defaults enterprise
|
|
20
|
+
let partial = { enterprise: enterpriseCode };
|
|
21
|
+
if (args.cabinet)
|
|
22
|
+
partial.cabinet = args.cabinet;
|
|
23
|
+
if (flags.environment)
|
|
24
|
+
partial.environment = flags.environment;
|
|
25
|
+
if (flags.cluster)
|
|
26
|
+
partial.cluster = flags.cluster;
|
|
27
|
+
//Overrides enterpriseCode if passed in
|
|
28
|
+
if (flags.enterprise)
|
|
29
|
+
partial.enterprise = flags.enterprise;
|
|
30
|
+
const interactionMode = (_b = (_a = (flags.echo ? config_ui_utils_1.InteractionModes.echo : undefined)) !== null && _a !== void 0 ? _a : (flags["to-script"] ? config_ui_utils_1.InteractionModes.toscript : undefined)) !== null && _b !== void 0 ? _b : (flags.silent ? config_ui_utils_1.InteractionModes.silent : undefined);
|
|
31
|
+
const takeDefaults = (_c = flags['take-defaults']) !== null && _c !== void 0 ? _c : false;
|
|
32
|
+
return [partial, interactionMode, takeDefaults];
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
validatePartial(partial, rootMap) {
|
|
36
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
37
|
+
if (!partial.cabinet)
|
|
38
|
+
throw new Error("Cabinet name must be set");
|
|
39
|
+
if (!partial.environment)
|
|
40
|
+
throw new Error("Environment must be set");
|
|
41
|
+
if (!partial.enterprise) {
|
|
42
|
+
if (rootMap.enterprises.length > 1)
|
|
43
|
+
throw new Error("Enterprise must be set");
|
|
44
|
+
else
|
|
45
|
+
partial.enterprise = rootMap.enterprises[0].name;
|
|
46
|
+
}
|
|
47
|
+
if (!partial.cluster)
|
|
48
|
+
throw new Error("Cluster must be set");
|
|
49
|
+
// Validate cabinet name
|
|
50
|
+
const cabinetNameRegex = /^[a-z0-9]([-a-z0-9]*[a-z0-9])?$/;
|
|
51
|
+
if (!cabinetNameRegex.test(partial.cabinet)) {
|
|
52
|
+
throw new Error("Invalid cabinet name. It must consist of lowercase alphanumeric characters or '-', and must start and end with an alphanumeric character. Maximum length is 63 characters.");
|
|
53
|
+
}
|
|
54
|
+
// Matches EKS
|
|
55
|
+
if (partial.cabinet.length > 63) {
|
|
56
|
+
throw new Error("Cabinet name is too long. Maximum length is 63 characters.");
|
|
57
|
+
}
|
|
58
|
+
//validate enterprise exists
|
|
59
|
+
let enterprise = rootMap.enterprises.find(e => e.name === partial.enterprise);
|
|
60
|
+
if (!enterprise)
|
|
61
|
+
throw new Error(`Enterprise ${partial.enterprise} not found`);
|
|
62
|
+
//Validate Environment exists
|
|
63
|
+
let environment = enterprise === null || enterprise === void 0 ? void 0 : enterprise.environments.find(env => env.name === partial.environment);
|
|
64
|
+
if (!environment)
|
|
65
|
+
throw new Error(`Environment ${partial.environment} not found in enterprise ${partial.enterprise}`);
|
|
66
|
+
//Validate cluster exists & maybe default to first if not set?
|
|
67
|
+
let clusters = (environment === null || environment === void 0 ? void 0 : environment.clusters) || [];
|
|
68
|
+
let cluster = clusters.find(c => c.name === partial.cluster);
|
|
69
|
+
if (!cluster)
|
|
70
|
+
throw new Error(`Cluster ${partial.cluster} not found in environment ${partial.environment}`);
|
|
71
|
+
//Validate cabinet name and not duplicate
|
|
72
|
+
let cabinet = environment.cabinets.find(cab => cab.name === partial.cabinet);
|
|
73
|
+
if (cabinet)
|
|
74
|
+
throw new Error(`Cabinet ${partial.cabinet} already exists in environment ${partial.environment}`);
|
|
75
|
+
return partial;
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
buildCandidate_silently(partial, rootMap) {
|
|
12
79
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
this.logger.error(`Error creating cabinet: ${result.message || ""}; ${result.error.message}`, result.error);
|
|
70
|
-
this._ui.userMessage(`Error creating cabinet: ${result.message || ""}; ${result.error.message}`);
|
|
71
|
-
}
|
|
72
|
-
else if (!result.success) {
|
|
73
|
-
this.logger.notice(`Cabinet creation failed without error. ${result.message}`);
|
|
74
|
-
this._ui.userMessage(`Cabinet creation failed without error. ${result.message}`);
|
|
75
|
-
}
|
|
76
|
-
else if (result.output) {
|
|
77
|
-
let cab = result.output;
|
|
78
|
-
this.logger.notice(`${this._styler.colorGood("Success!")} Cabinet [${this._styler.hilite(cab.name)}] created for enterprise [${cab.enterpriseCode}]`);
|
|
79
|
-
this._ui.userMessage(`${this._styler.colorGood("Success!")} Cabinet [${this._styler.hilite(cab.name)}] created for enterprise [${cab.enterpriseCode}]`);
|
|
80
|
-
} // else { this._ui.userMessage("Supposedly succeeded, but we didnt get the response back that we expected. You might want to verify the cabinet."); }
|
|
81
|
-
}
|
|
82
|
-
catch (err) {
|
|
83
|
-
this._ui.userMessage(`Error ${(_b = err.name) !== null && _b !== void 0 ? _b : ""} ${(_c = err.message) !== null && _c !== void 0 ? _c : ""}`);
|
|
84
|
-
}
|
|
85
|
-
finally {
|
|
86
|
-
return;
|
|
87
|
-
}
|
|
88
|
-
}));
|
|
89
|
-
}
|
|
90
|
-
catch (err) {
|
|
91
|
-
this.handleError(err);
|
|
92
|
-
reject(err);
|
|
93
|
-
}
|
|
94
|
-
}));
|
|
95
|
-
}));
|
|
80
|
+
partial = yield this.validatePartial(partial, rootMap);
|
|
81
|
+
return partial;
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
buildCandidate_interactively(partial, rootMap, takeDefaults) {
|
|
85
|
+
var _a;
|
|
86
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
87
|
+
let environment;
|
|
88
|
+
let cluster;
|
|
89
|
+
let cabinetName;
|
|
90
|
+
let candidate;
|
|
91
|
+
let confirm;
|
|
92
|
+
// Wrap in a do-while loop to allow for re-entry if the user wants to re-enter any values after confirmation
|
|
93
|
+
do {
|
|
94
|
+
cabinetName = (_a = partial.cabinet) !== null && _a !== void 0 ? _a : (yield this._ui.prompt("cabinetName", "Cabinet name: ", true));
|
|
95
|
+
[environment, cluster] = yield this.rootMapUtils.promptForEnviroCluster(rootMap, partial.enterprise, partial.environment, undefined, undefined);
|
|
96
|
+
let uiCloudProvider = this.ioc.get(cloud_provider_contextualizer_1.CloudProviderContextualizer);
|
|
97
|
+
yield uiCloudProvider.promptForCloudProviderCreds(this.ioc, cluster.provider);
|
|
98
|
+
candidate = {
|
|
99
|
+
enterprise: partial.enterprise,
|
|
100
|
+
environment: environment.name,
|
|
101
|
+
cabinet: cabinetName,
|
|
102
|
+
cluster: cluster.name
|
|
103
|
+
};
|
|
104
|
+
// We want to validate before we show the user the full/final preview
|
|
105
|
+
candidate = yield this.validatePartial(candidate, rootMap);
|
|
106
|
+
// CONFIRM
|
|
107
|
+
let preview = Object.assign(Object.assign({}, candidate), { cluster: { name: cluster.name, provider: cluster.provider, location: cluster.locationName } });
|
|
108
|
+
this.dataAuthUtils.removeAcl(preview);
|
|
109
|
+
this._ui.userMessage((0, prettify_1.prettify)(preview));
|
|
110
|
+
this._ui.userMessage("You are about to create this cabinet");
|
|
111
|
+
confirm = yield this._ui.promptConfirm("confirm", `Continue? (ctrl-C to cancel)`, false);
|
|
112
|
+
} while (confirm !== true);
|
|
113
|
+
return candidate;
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
buildCommandString(candidate, cmd) {
|
|
117
|
+
cmd.push(candidate.cabinet);
|
|
118
|
+
cmd.push("--enterprise", candidate.enterprise);
|
|
119
|
+
cmd.push("--environment", candidate.environment);
|
|
120
|
+
cmd.push("--cluster", candidate.cluster);
|
|
121
|
+
cmd.push("--silent");
|
|
122
|
+
return cmd;
|
|
123
|
+
}
|
|
124
|
+
executeTask(candidate) {
|
|
125
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
126
|
+
this._ui.startSpinner(`Creating new cabinet [${candidate.enterprise}/${candidate.cabinet}]...`);
|
|
127
|
+
let result = yield this.genRelayClient.Call.postExecuteCabinetMaker({ targetCabinet: candidate, targetClusterName: candidate.cluster });
|
|
128
|
+
this._ui.stopSpinner(`${result.success ? "Success!" : "Failed."}`);
|
|
129
|
+
if (result.error) {
|
|
130
|
+
this.logger.error(`Error creating cabinet: ${result.message || ""}; ${result.error.message}`, result.error);
|
|
131
|
+
this._ui.userMessage(`Error creating cabinet: ${result.message || ""}; ${result.error.message}`);
|
|
132
|
+
}
|
|
133
|
+
else if (!result.success) {
|
|
134
|
+
this.logger.notice(`Cabinet creation failed without error. ${result.message}`);
|
|
135
|
+
this._ui.userMessage(`Cabinet creation failed without error. ${result.message}`);
|
|
96
136
|
}
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
this.logger.
|
|
100
|
-
|
|
101
|
-
// return new Promise<void>(async (res,rej) => rej(new Error(`Error parsing arguments: ${err}`)));
|
|
137
|
+
else if (result.output) {
|
|
138
|
+
let cab = result.output;
|
|
139
|
+
this.logger.notice(`${this._styler.colorGood("Success!")} Cabinet [${this._styler.hilite(cab.name)}] created for enterprise [${cab.enterpriseCode}]`);
|
|
140
|
+
this._ui.userMessage(`${this._styler.colorGood("Success!")} Cabinet [${this._styler.hilite(cab.name)}] created for enterprise [${cab.enterpriseCode}]`);
|
|
102
141
|
}
|
|
103
142
|
});
|
|
104
143
|
}
|
|
105
144
|
}
|
|
106
145
|
exports.default = CabinetCreate;
|
|
107
|
-
CabinetCreate.description = 'Initializes a cabinet for a given enterprise and environment.
|
|
146
|
+
CabinetCreate.description = 'Initializes a cabinet for a given enterprise and environment. Returns an error if the cabinet already exists.';
|
|
108
147
|
CabinetCreate.aliases = ["cab:create"];
|
|
109
148
|
CabinetCreate.args = {
|
|
110
149
|
cabinet: core_1.Args.string({ required: false, description: 'The name of the cabinet to create' })
|
|
111
150
|
};
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
151
|
+
//TODO: Finish me!!
|
|
152
|
+
CabinetCreate.examples = [
|
|
153
|
+
{ description: "Create a cabinet interativley.", command: "cod cabinet create" },
|
|
154
|
+
{ description: "Create a cabinet interativley and assemble a non-interactive command string.", command: "cod cabinet create --echo" },
|
|
155
|
+
{ description: "Assemble a non-interactive command string WITHOUT actually creating a cabinet (dry run).", command: "cod cabinet create --to-script" },
|
|
156
|
+
{ description: "Create a cabinet silently.", command: "cod cabinet create my-cab-name --enterprise main -e dev-environemt -c my-cluster --silent" },
|
|
157
|
+
];
|
|
158
|
+
CabinetCreate.flags = Object.assign(Object.assign({}, cli_common_1.commandBase.globalFlags), { help: core_1.Flags.help({ char: 'h' }), enterprise: core_1.Flags.string({ description: '(required only if more than one enterprise exists) The name of the enterprise under which to create this cabinet.' }), environment: core_1.Flags.string({ char: 'e', multiple: false, description: '(optional: defaults to that of the current project branch) The name of the environment this cabinet will be grouped under.' }), cluster: core_1.Flags.string({ char: 'c', description: '(optional: defaults to the first cluster in the environment) The name of the cluster to use for the cabinet.' }), silent: core_1.Flags.boolean({ exclusive: ["echo", "to-script"], description: 'Non-Interactive mode; executes without any user interaction and fails on any missing or invalid arguments.' }), echo: core_1.Flags.boolean({ exclusive: ["to-script", "silent"], description: 'Echo interaction mode; renders the equivalent non-interactive cli command for future use before final execution.' }), "to-script": core_1.Flags.boolean({ exclusive: ["echo", "silent"], description: 'Toscript interaction mode; renders the equivalent non-interactive cli command WITHOUT any execution.' }),
|
|
159
|
+
//Not sure what to do with this one yet
|
|
160
|
+
"take-defaults": core_1.Flags.boolean({ exclusive: ["silent"], description: "Setting this to true prevents prompting for confirmation on parameters that were passed in or were automatically set to default values (Irrelevant in --silent mode)." }) });
|
|
115
161
|
//# sourceMappingURL=create.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/commands/cabinet/create.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/commands/cabinet/create.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,7 +14,7 @@ const cli_tools_1 = require("@codiac.io/cli-tools");
|
|
|
14
14
|
const INTERFACES_CLI_1 = require("../ops/INTERFACES_CLI");
|
|
15
15
|
const Docker = require("dockerode");
|
|
16
16
|
const DEFAULT_IMAGE_NAME = "codiacimages/codiac-relay";
|
|
17
|
-
const DEFAULT_IMAGE_TAG = "1.4.
|
|
17
|
+
const DEFAULT_IMAGE_TAG = "1.4.8"; // "1.3.27";
|
|
18
18
|
const DEFAULT_CONTAINER_NAME = "codiac-relay";
|
|
19
19
|
const DEFAULT_HEALTH_CHECK_URL = "http://localhost:5799/heartbeat-json"; // /ready-state";
|
|
20
20
|
const DEFAULT_RETRY_TIMOUT_IN_MINUTES = 1;
|
package/oclif.manifest.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "1.3.
|
|
2
|
+
"version": "1.3.38",
|
|
3
3
|
"commands": {
|
|
4
4
|
"branch": {
|
|
5
5
|
"id": "branch",
|
|
@@ -2106,7 +2106,7 @@
|
|
|
2106
2106
|
},
|
|
2107
2107
|
"cabinet:create": {
|
|
2108
2108
|
"id": "cabinet:create",
|
|
2109
|
-
"description": "Initializes a cabinet for a given enterprise and environment.
|
|
2109
|
+
"description": "Initializes a cabinet for a given enterprise and environment. Returns an error if the cabinet already exists.",
|
|
2110
2110
|
"strict": true,
|
|
2111
2111
|
"pluginName": "@codiac.io/codiac-cli",
|
|
2112
2112
|
"pluginAlias": "@codiac.io/codiac-cli",
|
|
@@ -2115,6 +2115,24 @@
|
|
|
2115
2115
|
"cab:create"
|
|
2116
2116
|
],
|
|
2117
2117
|
"hiddenAliases": [],
|
|
2118
|
+
"examples": [
|
|
2119
|
+
{
|
|
2120
|
+
"description": "Create a cabinet interativley.",
|
|
2121
|
+
"command": "cod cabinet create"
|
|
2122
|
+
},
|
|
2123
|
+
{
|
|
2124
|
+
"description": "Create a cabinet interativley and assemble a non-interactive command string.",
|
|
2125
|
+
"command": "cod cabinet create --echo"
|
|
2126
|
+
},
|
|
2127
|
+
{
|
|
2128
|
+
"description": "Assemble a non-interactive command string WITHOUT actually creating a cabinet (dry run).",
|
|
2129
|
+
"command": "cod cabinet create --to-script"
|
|
2130
|
+
},
|
|
2131
|
+
{
|
|
2132
|
+
"description": "Create a cabinet silently.",
|
|
2133
|
+
"command": "cod cabinet create my-cab-name --enterprise main -e dev-environemt -c my-cluster --silent"
|
|
2134
|
+
}
|
|
2135
|
+
],
|
|
2118
2136
|
"flags": {
|
|
2119
2137
|
"as": {
|
|
2120
2138
|
"name": "as",
|
|
@@ -2172,6 +2190,52 @@
|
|
|
2172
2190
|
"char": "e",
|
|
2173
2191
|
"description": "(optional: defaults to that of the current project branch) The name of the environment this cabinet will be grouped under.",
|
|
2174
2192
|
"multiple": false
|
|
2193
|
+
},
|
|
2194
|
+
"cluster": {
|
|
2195
|
+
"name": "cluster",
|
|
2196
|
+
"type": "option",
|
|
2197
|
+
"char": "c",
|
|
2198
|
+
"description": "(optional: defaults to the first cluster in the environment) The name of the cluster to use for the cabinet.",
|
|
2199
|
+
"multiple": false
|
|
2200
|
+
},
|
|
2201
|
+
"silent": {
|
|
2202
|
+
"name": "silent",
|
|
2203
|
+
"type": "boolean",
|
|
2204
|
+
"description": "Non-Interactive mode; executes without any user interaction and fails on any missing or invalid arguments.",
|
|
2205
|
+
"allowNo": false,
|
|
2206
|
+
"exclusive": [
|
|
2207
|
+
"echo",
|
|
2208
|
+
"to-script"
|
|
2209
|
+
]
|
|
2210
|
+
},
|
|
2211
|
+
"echo": {
|
|
2212
|
+
"name": "echo",
|
|
2213
|
+
"type": "boolean",
|
|
2214
|
+
"description": "Echo interaction mode; renders the equivalent non-interactive cli command for future use before final execution.",
|
|
2215
|
+
"allowNo": false,
|
|
2216
|
+
"exclusive": [
|
|
2217
|
+
"to-script",
|
|
2218
|
+
"silent"
|
|
2219
|
+
]
|
|
2220
|
+
},
|
|
2221
|
+
"to-script": {
|
|
2222
|
+
"name": "to-script",
|
|
2223
|
+
"type": "boolean",
|
|
2224
|
+
"description": "Toscript interaction mode; renders the equivalent non-interactive cli command WITHOUT any execution.",
|
|
2225
|
+
"allowNo": false,
|
|
2226
|
+
"exclusive": [
|
|
2227
|
+
"echo",
|
|
2228
|
+
"silent"
|
|
2229
|
+
]
|
|
2230
|
+
},
|
|
2231
|
+
"take-defaults": {
|
|
2232
|
+
"name": "take-defaults",
|
|
2233
|
+
"type": "boolean",
|
|
2234
|
+
"description": "Setting this to true prevents prompting for confirmation on parameters that were passed in or were automatically set to default values (Irrelevant in --silent mode).",
|
|
2235
|
+
"allowNo": false,
|
|
2236
|
+
"exclusive": [
|
|
2237
|
+
"silent"
|
|
2238
|
+
]
|
|
2175
2239
|
}
|
|
2176
2240
|
},
|
|
2177
2241
|
"args": {
|
package/package.json
CHANGED