@codiac.io/codiac-cli 1.3.146 → 1.3.147

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.146 linux-x64 node-v22.15.1
24
+ @codiac.io/codiac-cli/1.3.147 linux-x64 node-v22.15.1
25
25
  $ codiac --help [COMMAND]
26
26
  USAGE
27
27
  $ codiac COMMAND
@@ -1,23 +1,33 @@
1
1
  import "reflect-metadata";
2
2
  import { Asset } from '../../apis/codiac-api/contracts';
3
- import { CommandBaseEnterprise } from '../../command-base-enterprise';
3
+ import { CabinetAssetList } from "../../apis/codiac-relay/contracts";
4
+ import { RootMap } from "../../apis/codiac-api/contracts";
5
+ import { CommandBaseExec, IEnterpriseEntity } from "../../command-base-exec";
6
+ import { AtLeast } from "@codiac.io/codiac-common/contracts";
7
+ import { InteractionModes } from "../../uilogic/config-ui-utils";
4
8
  /** The value provided as input that indicates
5
9
  * a user's desire to be prompted with a list from which choose the value(s),
6
10
  * instead of entering them manually or taking a default. */
7
11
  export declare const PROMPT_ME_DESIGNATOR = "?";
8
- export default class AssetRecycle extends CommandBaseEnterprise {
12
+ /** Includes enterprise */
13
+ export type CabinetAssetListNew = Omit<CabinetAssetList, "enterpriseCode"> & IEnterpriseEntity;
14
+ export default class AssetRecycle extends CommandBaseExec<CabinetAssetListNew> {
9
15
  static description: string;
10
16
  static dependsOn: string[];
11
17
  static flags: {
12
- help: import("@oclif/core/lib/interfaces").BooleanFlag<void>;
13
18
  enterpriseCode: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
14
19
  cabinetName: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
15
20
  asset: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
16
- version: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
17
21
  silent: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
22
+ echo: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
23
+ "to-script": import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
24
+ "take-defaults": import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
18
25
  };
19
26
  static args: {};
20
- run(): Promise<void>;
27
+ captureArgs(): Promise<[Partial<CabinetAssetListNew>, InteractionModes | undefined, boolean]>;
28
+ buildCandidate_silently(partial: AtLeast<CabinetAssetListNew, "enterprise">, rootMap: RootMap): Promise<CabinetAssetListNew | undefined>;
29
+ buildCandidate_interactively(partial: AtLeast<CabinetAssetListNew, "enterprise">, rootMap: RootMap, takeDefaults: boolean): Promise<CabinetAssetListNew | undefined>;
30
+ buildCommandString(candidate: CabinetAssetListNew, cmd: string[]): string[];
31
+ executeTask(candidate: CabinetAssetListNew): Promise<void>;
21
32
  promptForAsset(enterprise: string, assetSearch?: string): Promise<Asset>;
22
- private searchVersions;
23
33
  }
@@ -6,103 +6,233 @@ require("reflect-metadata");
6
6
  const core_1 = require("@oclif/core");
7
7
  const inquirer = require("inquirer");
8
8
  const _ = require("lodash");
9
- //const autocomplete = require("inquirer-autocomplete-prompt");
10
- const fuzzy = require("fuzzy");
11
- const command_base_enterprise_1 = require("../../command-base-enterprise");
12
- let assetVersions = [];
9
+ const command_base_exec_1 = require("../../command-base-exec");
10
+ const config_ui_utils_1 = require("../../uilogic/config-ui-utils");
13
11
  /** The value provided as input that indicates
14
12
  * a user's desire to be prompted with a list from which choose the value(s),
15
13
  * instead of entering them manually or taking a default. */
16
14
  exports.PROMPT_ME_DESIGNATOR = "?";
17
- class AssetRecycle extends command_base_enterprise_1.CommandBaseEnterprise {
18
- run() {
15
+ class AssetRecycle extends command_base_exec_1.CommandBaseExec {
16
+ captureArgs() {
17
+ var _a, _b;
19
18
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
20
- return new Promise((resolve, reject) => tslib_1.__awaiter(this, void 0, void 0, function* () {
21
- var _a;
22
- try {
23
- this.bootstrap();
24
- const { args, flags } = yield this.parse(AssetRecycle);
25
- (_a = this._relayContainer) === null || _a === void 0 ? void 0 : _a.ready$.subscribe(() => tslib_1.__awaiter(this, void 0, void 0, function* () {
26
- var _b;
27
- this._userCntx = yield this.establishTenantContext(this._userCntx);
28
- let rootMap = yield this.getRootMap();
29
- const interactionMode = this.getInteractionMode(flags.silent, flags.echo, flags['to-script']);
30
- let enterprise = (yield this.establishEnterpriseContext(rootMap, flags.enterpriseCode, interactionMode)).enterprise;
31
- _.remove(rootMap.enterprises, e => e.name != enterprise.name); // trim down to match legacy conditions
32
- let enterpriseCode = enterprise.name;
33
- // Select the asset(s) to deploy
34
- let assetVersions;
35
- if (flags.asset == exports.PROMPT_ME_DESIGNATOR) {
36
- let asset = yield this.promptForAsset(enterpriseCode);
37
- // let selected = await this.promptForVersion(enterpriseCode, asset, flags.version);
38
- assetVersions = [{ a: asset.name }];
39
- }
40
- else if (flags.asset) {
41
- let asset = yield this.promptForAsset(enterpriseCode, flags.asset);
42
- // let selected = await this.promptForVersion(enterpriseCode, asset, flags.version);
43
- assetVersions = [{ a: asset.name }];
44
- // if (!flags.version || flags.version == PROMPT_ME_DESIGNATOR) {
45
- // }
46
- }
47
- else {
48
- // Update sync codiac with what we've got here in the project.
49
- let requestedAssets = yield this.establishAssetContext(enterprise, flags.silent);
50
- assetVersions = requestedAssets.map(a => { return { a: a }; });
51
- // let versions = await this.declareAssetVersions(requestedAssets, enterpriseCode);
52
- // // We've updated Codiac. Now trigger the deploy.
53
- // assetVersions = requestedAssets.map(a => {
54
- // let version = versions.find(v => v.assetName == a);
55
- // return { a: a, v: version ? version.assetVersion : undefined };
56
- // });
57
- }
58
- let cab;
59
- [cab] = yield this.rootMapUtils.promptForCabinet(enterpriseCode, rootMap, flags.cabinetName, false, undefined);
60
- // let cabinet = await this.establishCabinet(flags.cabinetName);
61
- let cabCntx = { enterprise: cab.enterprise, environment: cab.environment, cabinet: cab.name };
62
- // Get the clusterdef so we can get cloud pvd creds
63
- let cluster = (_b = cab.cluster) !== null && _b !== void 0 ? _b : ((rootMap.clusters.length === 1) ? rootMap.clusters[0].name : undefined); // fall back to the one and only.
64
- if (cluster === undefined) {
65
- this.logger.warn(`Cannot confirm cloud provider credentials: cabinet has no cluster specified. Process will rely on cached credentials.`);
66
- // throw new Error(`Cannot determine cloud provider: cabinet has no cluster specified.`);
67
- }
68
- else {
69
- yield this.establishCloudProviderCreds(rootMap, cluster);
70
- }
71
- let assets = {
72
- enterpriseCode: cabCntx.enterprise,
73
- environment: cabCntx.environment,
74
- cabinetName: cabCntx.cabinet,
75
- assetNames: assetVersions.map(a => a.a)
76
- };
77
- this._ui.startSpinner(`Recycling assets in ${assets.cabinetName}...`);
78
- // let result = await this.relayClient.recycleAssets(assets);
79
- let result = yield this.genRelayClient.Call.postExecuteRecycleAssets(assets);
80
- this._ui.stopSpinner((result.success === true) ? "SUCCESS" : (result.error) ? "ERROR" : "FAILED");
81
- if (result.error) {
82
- this.logger.error(`Error recycling assets in ${assets.cabinetName}: ${result.message}`, result.error);
83
- this._ui.userMessage(`Error recycling assets in ${assets.cabinetName}: ${result.message}`);
84
- }
85
- else if (result.success) {
86
- this.logger.notice(`Recycled assets in ${assets.cabinetName}`);
87
- // this._ui.userMessage(`Recycled assets in ${assets.cabinetName}`); // The spinner is enough for the user message here.
88
- }
89
- else {
90
- this.logger.warn(`Failed recycling assets in ${assets.cabinetName}: ${result.message}`, result);
91
- this._ui.userMessage(`Failed recycling assets in ${assets.cabinetName}: ${result.message}`);
19
+ const { args, flags } = yield this.parse(AssetRecycle);
20
+ const partial = {};
21
+ if (flags.enterpriseCode) {
22
+ partial.enterprise = flags.enterpriseCode;
23
+ }
24
+ if (flags.asset) {
25
+ partial.assetNames = [flags.asset];
26
+ }
27
+ if (flags.cabinetName) {
28
+ partial.cabinetName = flags.cabinetName;
29
+ }
30
+ // ---------------------------------------------------------------
31
+ // TODO: move everything from here down into the base class
32
+ // ---------------------------------------------------------------
33
+ const interactionMode = (this.pipedInput) ? config_ui_utils_1.InteractionModes.silent : (_b = (_a = undefined !== null && undefined !== void 0 ? undefined : (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);
34
+ const takeDefaults = flags['take-defaults'];
35
+ return [partial, interactionMode, takeDefaults];
36
+ });
37
+ }
38
+ buildCandidate_silently(partial, rootMap) {
39
+ var _a;
40
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
41
+ try {
42
+ const ent = rootMap.enterprises.find(e => e.name == partial.enterprise); // assertion operator ok bc base class ensures it (or throws)
43
+ if (partial.assetNames == undefined || _.isEmpty(partial.assetNames)) {
44
+ throw new Error("You must specify asset.");
45
+ }
46
+ else {
47
+ for (let asset of partial.assetNames) {
48
+ if (!ent.assets.map(a => a.name).includes(asset)) {
49
+ throw new Error("No asset was found with that name.");
92
50
  }
93
- resolve();
94
- }));
51
+ }
95
52
  }
96
- catch (err) {
97
- this.handleError(err);
98
- reject(err);
53
+ if (partial.cabinetName == undefined || _.isEmpty(partial.cabinetName)) {
54
+ throw new Error("You must specify the cabinet.");
99
55
  }
100
- finally {
101
- yield this.closeConnections();
56
+ const env = this.rootMapUtils.deriveEnvironmentFrom(partial.enterprise, partial.cabinetName, rootMap);
57
+ partial.environment = env.name;
58
+ let candidate = {
59
+ enterprise: partial.enterprise,
60
+ environment: env.name,
61
+ cabinetName: partial.cabinetName,
62
+ assetNames: partial.assetNames
63
+ };
64
+ return candidate;
65
+ }
66
+ catch (err) {
67
+ err.message = "Invalid command input: ".concat((_a = err.message) !== null && _a !== void 0 ? _a : "(messageless error)");
68
+ throw err;
69
+ }
70
+ });
71
+ }
72
+ buildCandidate_interactively(partial, rootMap, takeDefaults) {
73
+ var _a;
74
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
75
+ const ent = rootMap.enterprises.find(e => e.name == partial.enterprise); // assertion operator ok bc base class ensures it (or throws)
76
+ // ASSET
77
+ if (partial.assetNames != undefined && !_.isEmpty(partial.assetNames)) {
78
+ // validate
79
+ const requestedAsset = partial.assetNames[0];
80
+ if (!ent.assets.find(a => a.name == requestedAsset)) {
81
+ delete partial.assetNames;
102
82
  }
103
- }));
83
+ }
84
+ if (partial.assetNames == undefined || _.isEmpty(partial.assetNames)) {
85
+ // Select if missing
86
+ let asset = yield this.promptForAsset(partial.enterprise);
87
+ partial.assetNames = [asset.name];
88
+ }
89
+ // CABINET/ENV
90
+ let cab;
91
+ if (partial.cabinetName != undefined && !_.isEmpty(partial.cabinetName)) {
92
+ // validate
93
+ try {
94
+ const env = this.rootMapUtils.deriveEnvironmentFrom(partial.enterprise, partial.cabinetName, rootMap);
95
+ partial.environment = env.name;
96
+ cab = env.cabinets.find(c => c.name == partial.cabinetName); // assertion ok bc the stmt above ensures it (or throws).
97
+ }
98
+ catch (err) {
99
+ // we dont want to throw here - tell em we coudnt find it and prompt for another instead.
100
+ delete partial.cabinetName;
101
+ this._ui.userMessage(err.message);
102
+ }
103
+ }
104
+ if (cab == undefined || partial.cabinetName == undefined || partial.environment == undefined) {
105
+ // Select if missing
106
+ [cab] = yield this.rootMapUtils.promptForCabinet(partial.enterprise, rootMap, partial.cabinetName, false, undefined);
107
+ partial.environment = cab.environment;
108
+ partial.cabinetName = cab.name;
109
+ }
110
+ // Get the clusterdef so we can get cloud pvd creds
111
+ let cluster = (_a = cab.cluster) !== null && _a !== void 0 ? _a : ((rootMap.clusters.length === 1) ? rootMap.clusters[0].name : undefined); // fall back to the one and only.
112
+ if (cluster === undefined) {
113
+ this.logger.warn(`Cannot confirm cloud provider credentials: cabinet has no cluster specified. Process will rely on default credentials.`);
114
+ }
115
+ else {
116
+ yield this.establishCloudProviderCreds(rootMap, cluster);
117
+ }
118
+ let candidate = {
119
+ enterprise: partial.enterprise,
120
+ environment: partial.environment,
121
+ cabinetName: partial.cabinetName,
122
+ assetNames: partial.assetNames
123
+ };
124
+ return candidate;
104
125
  });
105
126
  }
127
+ buildCommandString(candidate, cmd) {
128
+ cmd.push("-e", candidate.enterprise);
129
+ cmd.push("-c", candidate.cabinetName);
130
+ // This should only ever be a single asset in this command
131
+ // (Later we can still add support for multiple assets by allowing multi on these args)
132
+ cmd.push("-a", candidate.assetNames[0]);
133
+ cmd.push("--silent");
134
+ return cmd;
135
+ }
136
+ executeTask(candidate) {
137
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
138
+ this._ui.startSpinner(`Recycling assets in ${candidate.cabinetName}...`);
139
+ // let result = await this.relayClient.recycleAssets(assets);
140
+ const req = Object.assign(Object.assign({}, _.omit(candidate, "enterprise")), { enterpriseCode: candidate.enterprise });
141
+ let result = yield this.genRelayClient.Call.postExecuteRecycleAssets(req);
142
+ this._ui.stopSpinner((result.success === true) ? "SUCCESS" : (result.error) ? "ERROR" : "FAILED");
143
+ if (result.error) {
144
+ this.logger.error(`Error recycling assets in ${candidate.cabinetName}: ${result.message}`, result.error);
145
+ this._ui.userMessage(`Error recycling assets in ${candidate.cabinetName}: ${result.message}`);
146
+ }
147
+ else if (result.success) {
148
+ this.logger.notice(`Recycled assets in ${candidate.cabinetName}`);
149
+ // this._ui.userMessage(`Recycled assets in ${assets.cabinetName}`); // The spinner is enough for the user message here.
150
+ }
151
+ else {
152
+ this.logger.warn(`Failed recycling assets in ${candidate.cabinetName}: ${result.message}`, result);
153
+ this._ui.userMessage(`Failed recycling assets in ${candidate.cabinetName}: ${result.message}`);
154
+ }
155
+ return;
156
+ });
157
+ }
158
+ // async run() {
159
+ // return new Promise<void>(async (resolve, reject) => {
160
+ // try {
161
+ // this.bootstrap();
162
+ // const { args, flags } = await this.parse(AssetRecycle);
163
+ // this._relayContainer?.ready$
164
+ // .subscribe(async () => {
165
+ // this._userCntx = await this.establishTenantContext(this._userCntx);
166
+ // let rootMap = await this.getRootMap();
167
+ // const interactionMode = this.getInteractionMode(flags.silent, flags.echo, flags['to-script']);
168
+ // let enterprise = (await this.establishEnterpriseContext(rootMap, flags.enterpriseCode, interactionMode)).enterprise;
169
+ // _.remove(rootMap.enterprises, e => e.name != enterprise.name); // trim down to match legacy conditions
170
+ // let enterpriseCode = enterprise.name;
171
+ // // // Select the asset(s) to deploy
172
+ // // let assetVersions: AssetVersion[];
173
+ // // if (flags.asset == PROMPT_ME_DESIGNATOR) {
174
+ // // let asset = await this.promptForAsset(enterpriseCode);
175
+ // // // let selected = await this.promptForVersion(enterpriseCode, asset, flags.version);
176
+ // // assetVersions = [{ a: asset.name }];
177
+ // // } else if (flags.asset) {
178
+ // // let asset = await this.promptForAsset(enterpriseCode, flags.asset);
179
+ // // // let selected = await this.promptForVersion(enterpriseCode, asset, flags.version);
180
+ // // assetVersions = [{ a: asset.name }]
181
+ // // // if (!flags.version || flags.version == PROMPT_ME_DESIGNATOR) {
182
+ // // // }
183
+ // // } else {
184
+ // // // Update sync codiac with what we've got here in the project.
185
+ // // let requestedAssets = await this.establishAssetContext(enterprise, flags.silent);
186
+ // // assetVersions = requestedAssets.map(a => { return { a: a } });
187
+ // // // let versions = await this.declareAssetVersions(requestedAssets, enterpriseCode);
188
+ // // // // We've updated Codiac. Now trigger the deploy.
189
+ // // // assetVersions = requestedAssets.map(a => {
190
+ // // // let version = versions.find(v => v.assetName == a);
191
+ // // // return { a: a, v: version ? version.assetVersion : undefined };
192
+ // // // });
193
+ // // }
194
+ // // let cab: CabinetClusterRoot;
195
+ // // [cab] = await this.rootMapUtils.promptForCabinet(enterpriseCode, rootMap, flags.cabinetName, false, undefined);
196
+ // // // let cabinet = await this.establishCabinet(flags.cabinetName);
197
+ // // let cabCntx: CabinetScope = { enterprise: cab.enterprise, environment: cab.environment, cabinet: cab.name };
198
+ // // // Get the clusterdef so we can get cloud pvd creds
199
+ // // let cluster = cab.cluster ?? ((rootMap.clusters.length === 1) ? rootMap.clusters[0].name : undefined); // fall back to the one and only.
200
+ // // if (cluster === undefined) {
201
+ // // this.logger.warn(`Cannot confirm cloud provider credentials: cabinet has no cluster specified. Process will rely on cached credentials.`);
202
+ // // // throw new Error(`Cannot determine cloud provider: cabinet has no cluster specified.`);
203
+ // // } else {
204
+ // // await this.establishCloudProviderCreds(rootMap, cluster);
205
+ // // }
206
+ // // let assets: CabinetAssetList = {
207
+ // // enterpriseCode: cabCntx.enterprise,
208
+ // // environment: cabCntx.environment,
209
+ // // cabinetName: cabCntx.cabinet,
210
+ // // assetNames: assetVersions.map(a => a.a)
211
+ // // };
212
+ // // this._ui.startSpinner(`Recycling assets in ${assets.cabinetName}...`);
213
+ // // // let result = await this.relayClient.recycleAssets(assets);
214
+ // // let result = await this.genRelayClient.Call.postExecuteRecycleAssets(assets);
215
+ // // this._ui.stopSpinner((result.success === true) ? "SUCCESS" : (result.error) ? "ERROR" : "FAILED");
216
+ // // if (result.error) {
217
+ // // this.logger.error(`Error recycling assets in ${assets.cabinetName}: ${result.message}`, result.error);
218
+ // // this._ui.userMessage(`Error recycling assets in ${assets.cabinetName}: ${result.message}`);
219
+ // // } else if (result.success) {
220
+ // // this.logger.notice(`Recycled assets in ${assets.cabinetName}`);
221
+ // // // this._ui.userMessage(`Recycled assets in ${assets.cabinetName}`); // The spinner is enough for the user message here.
222
+ // // } else {
223
+ // // this.logger.warn(`Failed recycling assets in ${assets.cabinetName}: ${result.message}`, result);
224
+ // // this._ui.userMessage(`Failed recycling assets in ${assets.cabinetName}: ${result.message}`);
225
+ // // }
226
+ // resolve();
227
+ // })
228
+ // } catch (err) {
229
+ // this.handleError(err);
230
+ // reject(err);
231
+ // } finally {
232
+ // await this.closeConnections();
233
+ // }
234
+ // });
235
+ // }
106
236
  promptForAsset(enterprise, assetSearch) {
107
237
  return new Promise((resolve, reject) => tslib_1.__awaiter(this, void 0, void 0, function* () {
108
238
  try {
@@ -135,40 +265,19 @@ class AssetRecycle extends command_base_enterprise_1.CommandBaseEnterprise {
135
265
  }
136
266
  }));
137
267
  }
138
- searchVersions(answers, input) {
139
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
140
- return new Promise((resolve, reject) => tslib_1.__awaiter(this, void 0, void 0, function* () {
141
- try {
142
- // Whatever voodoo they're doing inside the autocomplete plugin,
143
- // they're redefining "this", so we cant use it here.
144
- // Great, we'll just HACK UP a fucking module scoped variable to hold onto the goddamn list then.
145
- // let vers = this.getVersions();
146
- input = input || "";
147
- setTimeout(() => {
148
- let options = { extract: (ver) => { return ver.value; } };
149
- let results = fuzzy.filter(input, assetVersions, options);
150
- let filtered = results.map((fr) => fr.original);
151
- resolve(filtered);
152
- }, _.random(30, 500)); // why a random number?
153
- }
154
- catch (err) {
155
- reject(err);
156
- }
157
- }));
158
- });
159
- }
160
268
  }
161
269
  exports.default = AssetRecycle;
162
270
  AssetRecycle.description = 'Deploys a given asset to a given cabinet. Defaults to current version.';
163
- AssetRecycle.dependsOn = ["enterpriseCode", "cabinetName"];
271
+ AssetRecycle.dependsOn = [/* "enterpriseCode", */ "cabinetName"];
164
272
  AssetRecycle.flags = {
165
- // ...commandBase.globalFlags,
166
- help: core_1.Flags.help({ char: 'h' }),
167
273
  enterpriseCode: core_1.Flags.string({ char: 'e', required: false, description: `Code (name) of the enterprise to deploy` }),
168
274
  cabinetName: core_1.Flags.string({ char: 'c', required: false, description: `Target cabinet name you want deploy` }),
169
275
  asset: core_1.Flags.string({ char: 'a', required: false, description: `Search string for the name of the asset to deploy (use ${exports.PROMPT_ME_DESIGNATOR} to be prompted).` }),
170
- version: core_1.Flags.string({ char: 'v', required: false, description: `Search string for the version of the asset to deploy (use ${exports.PROMPT_ME_DESIGNATOR} to be prompted).` }),
171
- silent: core_1.Flags.boolean({ char: 'y', dependsOn: AssetRecycle.dependsOn, required: false, description: `(Optional: defaults to false) Prevents confirmations of user-values that are remembered from prior runs. Requires: ${AssetRecycle.dependsOn}` })
276
+ // TODO: Move these into the base class
277
+ silent: core_1.Flags.boolean({ dependsOn: AssetRecycle.dependsOn, exclusive: ["echo", "to-script"], description: 'Non-Interactive mode; executes without any user interaction and fails on any missing or invalid arguments.' }),
278
+ 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.' }),
279
+ "to-script": core_1.Flags.boolean({ exclusive: ["echo", "silent"], description: 'Toscript interaction mode; renders the equivalent non-interactive cli command WITHOUT any execution.' }),
280
+ "take-defaults": core_1.Flags.boolean({ /* char: 'y', */ 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). This behavior does NOT apply to scenarios that the command needs to override invalid user input; such cases will always prompt for confirmation. eg: when no argument was provided for file or type, and only one exists, the system will render the autoselected file unless this flag is set." })
172
281
  };
173
282
  AssetRecycle.args = {};
174
283
  // type FuzzyResult = {
@@ -1 +1 @@
1
- {"version":3,"file":"recycle.js","sourceRoot":"","sources":["../../../src/commands/asset/recycle.ts"],"names":[],"mappings":";;;;AAAA,4BAA0B;AAC1B,sCAAoC;AACpC,qCAAsC;AACtC,4BAA6B;AAC7B,+DAA+D;AAC/D,+BAAgC;AAKhC,2EAAsE;AAItE,IAAI,aAAa,GAAmB,EAAE,CAAC;AAEvC;;4DAE4D;AAC/C,QAAA,oBAAoB,GAAG,GAAG,CAAC;AAExC,MAAqB,YAAa,SAAQ,+CAAqB;IAkBrD,GAAG;;YACL,OAAO,IAAI,OAAO,CAAO,CAAO,OAAO,EAAE,MAAM,EAAE,EAAE;;gBAC/C,IAAI;oBACA,IAAI,CAAC,SAAS,EAAE,CAAC;oBACjB,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;oBACvD,MAAA,IAAI,CAAC,eAAe,0CAAE,MAAM,CACvB,SAAS,CAAC,GAAS,EAAE;;wBAClB,IAAI,CAAC,SAAS,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;wBACnE,IAAI,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;wBACtC,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;wBAC9F,IAAI,UAAU,GAAG,CAAC,MAAM,IAAI,CAAC,0BAA0B,CAAC,OAAO,EAAE,KAAK,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC;wBACpH,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAE,uCAAuC;wBACvG,IAAI,cAAc,GAAG,UAAU,CAAC,IAAI,CAAC;wBAErC,gCAAgC;wBAChC,IAAI,aAA6B,CAAC;wBAClC,IAAI,KAAK,CAAC,KAAK,IAAI,4BAAoB,EAAE;4BACrC,IAAI,KAAK,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;4BACtD,oFAAoF;4BACpF,aAAa,GAAG,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;yBACvC;6BAAM,IAAI,KAAK,CAAC,KAAK,EAAE;4BACpB,IAAI,KAAK,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;4BACnE,oFAAoF;4BACpF,aAAa,GAAG,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;4BACnC,iEAAiE;4BACjE,IAAI;yBACP;6BAAM;4BACH,8DAA8D;4BAC9D,IAAI,eAAe,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;4BACjF,aAAa,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA,CAAC,CAAC,CAAC,CAAC;4BAC9D,mFAAmF;4BACnF,oDAAoD;4BACpD,6CAA6C;4BAC7C,wDAAwD;4BACxD,oEAAoE;4BACpE,MAAM;yBACT;wBAGD,IAAI,GAAuB,CAAC;wBAC5B,CAAC,GAAG,CAAC,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,cAAc,EAAE,OAAO,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;wBAE/G,gEAAgE;wBAChE,IAAI,OAAO,GAAiB,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC;wBAE5G,mDAAmD;wBACnD,IAAI,OAAO,GAAG,MAAA,GAAG,CAAC,OAAO,mCAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAE,iCAAiC;wBACzI,IAAI,OAAO,KAAK,SAAS,EAAE;4BACvB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uHAAuH,CAAC,CAAC;4BAC1I,yFAAyF;yBAC5F;6BAAM;4BACH,MAAM,IAAI,CAAC,2BAA2B,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;yBAC5D;wBAED,IAAI,MAAM,GAAqB;4BAC3B,cAAc,EAAE,OAAO,CAAC,UAAU;4BAClC,WAAW,EAAE,OAAO,CAAC,WAAW;4BAChC,WAAW,EAAE,OAAO,CAAC,OAAO;4BAC5B,UAAU,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;yBAC1C,CAAC;wBACF,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,uBAAuB,MAAM,CAAC,WAAW,KAAK,CAAC,CAAC;wBACtE,6DAA6D;wBAC7D,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;wBAC7E,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;wBAClG,IAAI,MAAM,CAAC,KAAK,EAAE;4BACd,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,MAAM,CAAC,WAAW,KAAK,MAAM,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;4BACtG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,6BAA6B,MAAM,CAAC,WAAW,KAAK,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;yBAC9F;6BAAM,IAAI,MAAM,CAAC,OAAO,EAAE;4BACvB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,sBAAsB,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;4BAC/D,yHAAyH;yBAC5H;6BAAM;4BACH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,8BAA8B,MAAM,CAAC,WAAW,KAAK,MAAM,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,CAAC;4BAChG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,8BAA8B,MAAM,CAAC,WAAW,KAAK,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;yBAC/F;wBAED,OAAO,EAAE,CAAC;oBACd,CAAC,CAAA,CAAC,CAAA;iBACT;gBAAC,OAAO,GAAG,EAAE;oBACV,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;oBACtB,MAAM,CAAC,GAAG,CAAC,CAAC;iBACf;wBAAS;oBACN,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;iBACjC;YACL,CAAC,CAAA,CAAC,CAAC;QACP,CAAC;KAAA;IAID,cAAc,CAAC,UAAkB,EAAE,WAAoB;QACnD,OAAO,IAAI,OAAO,CAAQ,CAAO,OAAO,EAAE,MAAM,EAAE,EAAE;YAChD,IAAI;gBACA,wCAAwC;gBACxC,mCAAmC;gBACnC,+BAA+B;gBAC/B,IAAI,KAAK,GAAuB,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;gBACrD,IAAI,UAAU,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;gBAC1G,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE;oBACrD,MAAM,IAAI,KAAK,CAAC,8BAA8B,UAAU,IAAI,CAAC,CAAC;iBACjE;qBAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE;oBAChF,MAAM,IAAI,KAAK,CAAC,2BAA2B,UAAU,0BAA0B,CAAC,CAAC;iBACpF;gBACD,oEAAoE;gBAEpE,+CAA+C;gBAC/C,IAAI,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;gBACzC,IAAI,WAAW,IAAI,WAAW,IAAI,4BAAoB,EAAE;oBACpD,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;iBAC/D;gBACD,+CAA+C;gBAC/C,IAAI,SAAS,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACtI,IAAI,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC;gBAC3D,IAAI,CAAC,QAAQ;oBAAE,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;gBAEjF,OAAO,CAAC,QAAQ,CAAC,CAAC;aACrB;YAAC,OAAO,GAAG,EAAE;gBACV,MAAM,CAAC,GAAG,CAAC,CAAC;aACf;QACL,CAAC,CAAA,CAAC,CAAC;IACP,CAAC;IAGa,cAAc,CAAC,OAAuB,EAAE,KAAa;;YAC/D,OAAO,IAAI,OAAO,CAAiB,CAAO,OAAO,EAAE,MAAM,EAAE,EAAE;gBACzD,IAAI;oBACA,gEAAgE;oBAChE,qDAAqD;oBACrD,iGAAiG;oBACjG,iCAAiC;oBACjC,KAAK,GAAG,KAAK,IAAI,EAAE,CAAC;oBACpB,UAAU,CAAC,GAAG,EAAE;wBACZ,IAAI,OAAO,GAAsC,EAAE,OAAO,EAAE,CAAC,GAAiB,EAAE,EAAE,GAAG,OAAO,GAAG,CAAC,KAAK,CAAA,CAAC,CAAC,EAAE,CAAC;wBAC1G,IAAI,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;wBAC1D,IAAI,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,EAAoC,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;wBAClF,OAAO,CAAC,QAAQ,CAAC,CAAA;oBACrB,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAE,uBAAuB;iBAElD;gBAAC,OAAO,GAAG,EAAE;oBACV,MAAM,CAAC,GAAG,CAAC,CAAC;iBACf;YACL,CAAC,CAAA,CAAC,CAAC;QAEP,CAAC;KAAA;;AA/JL,+BAgKC;AA9JU,wBAAW,GAAG,yEAAyE,CAAA;AACvF,sBAAS,GAAG,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAA;AAE7C,kBAAK,GAAG;IACX,8BAA8B;IAC9B,IAAI,EAAE,YAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;IAC/B,cAAc,EAAE,YAAK,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,yCAAyC,EAAE,CAAC;IACpH,WAAW,EAAE,YAAK,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,qCAAqC,EAAE,CAAC;IAC7G,KAAK,EAAE,YAAK,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,0DAA0D,4BAAoB,mBAAmB,EAAE,CAAC;IACnK,OAAO,EAAE,YAAK,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,8DAA8D,4BAAoB,mBAAmB,EAAE,CAAC;IACzK,MAAM,EAAE,YAAK,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,YAAY,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,sHAAsH,YAAY,CAAC,SAAS,EAAE,EAAE,CAAC;CACxP,CAAA;AAEM,iBAAI,GAAG,EAAE,CAAA;AAsJpB,uBAAuB;AACvB,iDAAiD;AACjD,sBAAsB;AACtB,wDAAwD;AACxD,qBAAqB;AACrB,4CAA4C;AAC5C,uBAAuB;AACvB,IAAI"}
1
+ {"version":3,"file":"recycle.js","sourceRoot":"","sources":["../../../src/commands/asset/recycle.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.3.146",
2
+ "version": "1.3.147",
3
3
  "commands": {
4
4
  "branch": {
5
5
  "id": "branch",
@@ -1832,13 +1832,6 @@
1832
1832
  "aliases": [],
1833
1833
  "hiddenAliases": [],
1834
1834
  "flags": {
1835
- "help": {
1836
- "name": "help",
1837
- "type": "boolean",
1838
- "char": "h",
1839
- "description": "Show CLI help.",
1840
- "allowNo": false
1841
- },
1842
1835
  "enterpriseCode": {
1843
1836
  "name": "enterpriseCode",
1844
1837
  "type": "option",
@@ -1863,30 +1856,51 @@
1863
1856
  "required": false,
1864
1857
  "multiple": false
1865
1858
  },
1866
- "version": {
1867
- "name": "version",
1868
- "type": "option",
1869
- "char": "v",
1870
- "description": "Search string for the version of the asset to deploy (use ? to be prompted).",
1871
- "required": false,
1872
- "multiple": false
1873
- },
1874
1859
  "silent": {
1875
1860
  "name": "silent",
1876
1861
  "type": "boolean",
1877
- "char": "y",
1878
- "description": "(Optional: defaults to false) Prevents confirmations of user-values that are remembered from prior runs. Requires: enterpriseCode,cabinetName",
1879
- "required": false,
1862
+ "description": "Non-Interactive mode; executes without any user interaction and fails on any missing or invalid arguments.",
1880
1863
  "allowNo": false,
1881
1864
  "dependsOn": [
1882
- "enterpriseCode",
1883
1865
  "cabinetName"
1866
+ ],
1867
+ "exclusive": [
1868
+ "echo",
1869
+ "to-script"
1870
+ ]
1871
+ },
1872
+ "echo": {
1873
+ "name": "echo",
1874
+ "type": "boolean",
1875
+ "description": "Echo interaction mode; renders the equivalent non-interactive cli command for future use before final execution.",
1876
+ "allowNo": false,
1877
+ "exclusive": [
1878
+ "to-script",
1879
+ "silent"
1880
+ ]
1881
+ },
1882
+ "to-script": {
1883
+ "name": "to-script",
1884
+ "type": "boolean",
1885
+ "description": "Toscript interaction mode; renders the equivalent non-interactive cli command WITHOUT any execution.",
1886
+ "allowNo": false,
1887
+ "exclusive": [
1888
+ "echo",
1889
+ "silent"
1890
+ ]
1891
+ },
1892
+ "take-defaults": {
1893
+ "name": "take-defaults",
1894
+ "type": "boolean",
1895
+ "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). This behavior does NOT apply to scenarios that the command needs to override invalid user input; such cases will always prompt for confirmation. eg: when no argument was provided for file or type, and only one exists, the system will render the autoselected file unless this flag is set.",
1896
+ "allowNo": false,
1897
+ "exclusive": [
1898
+ "silent"
1884
1899
  ]
1885
1900
  }
1886
1901
  },
1887
1902
  "args": {},
1888
1903
  "dependsOn": [
1889
- "enterpriseCode",
1890
1904
  "cabinetName"
1891
1905
  ]
1892
1906
  },
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@codiac.io/codiac-cli",
3
3
  "description": "Local command line interface for managing enterprise assets and environments.",
4
- "version": "1.3.146",
4
+ "version": "1.3.147",
5
5
  "author": "Codiac",
6
6
  "bin": {
7
7
  "codiac": "./bin/run",