@salesforce/plugin-org 2.2.24 → 2.3.0

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.
Files changed (103) hide show
  1. package/README.md +4 -0
  2. package/lib/commands/force/org/clone.d.ts +21 -9
  3. package/lib/commands/force/org/clone.js +52 -83
  4. package/lib/commands/force/org/clone.js.map +1 -1
  5. package/lib/commands/force/org/create.d.ts +27 -12
  6. package/lib/commands/force/org/create.js +87 -106
  7. package/lib/commands/force/org/create.js.map +1 -1
  8. package/lib/commands/force/org/delete.d.ts +14 -7
  9. package/lib/commands/force/org/delete.js +26 -16
  10. package/lib/commands/force/org/delete.js.map +1 -1
  11. package/lib/commands/force/org/status.d.ts +18 -6
  12. package/lib/commands/force/org/status.js +43 -37
  13. package/lib/commands/force/org/status.js.map +1 -1
  14. package/lib/commands/org/create/sandbox.d.ts +40 -0
  15. package/lib/commands/org/create/sandbox.js +245 -0
  16. package/lib/commands/org/create/sandbox.js.map +1 -0
  17. package/lib/commands/org/create/scratch.d.ts +30 -0
  18. package/lib/commands/org/create/scratch.js +183 -0
  19. package/lib/commands/org/create/scratch.js.map +1 -0
  20. package/lib/commands/org/delete/sandbox.d.ts +18 -0
  21. package/lib/commands/org/delete/sandbox.js +59 -0
  22. package/lib/commands/org/delete/sandbox.js.map +1 -0
  23. package/lib/commands/org/delete/scratch.d.ts +18 -0
  24. package/lib/commands/org/delete/scratch.js +52 -0
  25. package/lib/commands/org/delete/scratch.js.map +1 -0
  26. package/lib/commands/org/display.d.ts +20 -0
  27. package/lib/commands/{force/org → org}/display.js +38 -27
  28. package/lib/commands/org/display.js.map +1 -0
  29. package/lib/commands/org/list.d.ts +26 -0
  30. package/lib/commands/org/list.js +192 -0
  31. package/lib/commands/org/list.js.map +1 -0
  32. package/lib/commands/org/open.d.ts +25 -0
  33. package/lib/commands/{force/org → org}/open.js +47 -33
  34. package/lib/commands/org/open.js.map +1 -0
  35. package/lib/commands/org/resume/sandbox.d.ts +26 -0
  36. package/lib/commands/org/resume/sandbox.js +199 -0
  37. package/lib/commands/org/resume/sandbox.js.map +1 -0
  38. package/lib/commands/org/resume/scratch.d.ts +14 -0
  39. package/lib/commands/org/resume/scratch.js +61 -0
  40. package/lib/commands/org/resume/scratch.js.map +1 -0
  41. package/lib/shared/orgHighlighter.d.ts +2 -2
  42. package/lib/shared/orgHighlighter.js +7 -5
  43. package/lib/shared/orgHighlighter.js.map +1 -1
  44. package/lib/shared/orgHooks.d.ts +24 -0
  45. package/lib/shared/orgHooks.js +9 -0
  46. package/lib/shared/orgHooks.js.map +1 -0
  47. package/lib/shared/orgListUtil.d.ts +15 -25
  48. package/lib/shared/orgListUtil.js +71 -81
  49. package/lib/shared/orgListUtil.js.map +1 -1
  50. package/lib/shared/orgTypes.d.ts +39 -11
  51. package/lib/shared/sandboxCommandBase.d.ts +33 -0
  52. package/lib/shared/sandboxCommandBase.js +168 -0
  53. package/lib/shared/sandboxCommandBase.js.map +1 -0
  54. package/lib/shared/sandboxProgress.d.ts +28 -0
  55. package/lib/shared/sandboxProgress.js +104 -0
  56. package/lib/shared/sandboxProgress.js.map +1 -0
  57. package/lib/shared/sandboxReporter.d.ts +1 -1
  58. package/lib/shared/sandboxRequest.d.ts +9 -0
  59. package/lib/shared/sandboxRequest.js +58 -0
  60. package/lib/shared/sandboxRequest.js.map +1 -0
  61. package/lib/shared/scratchOrgOutput.d.ts +9 -0
  62. package/lib/shared/scratchOrgOutput.js +47 -0
  63. package/lib/shared/scratchOrgOutput.js.map +1 -0
  64. package/lib/shared/stagedProgress.d.ts +33 -0
  65. package/lib/shared/stagedProgress.js +98 -0
  66. package/lib/shared/stagedProgress.js.map +1 -0
  67. package/lib/shared/timeUtils.d.ts +10 -0
  68. package/lib/shared/timeUtils.js +37 -0
  69. package/lib/shared/timeUtils.js.map +1 -0
  70. package/lib/shared/utils.d.ts +1 -1
  71. package/lib/shared/utils.js.map +1 -1
  72. package/messages/clone.md +67 -0
  73. package/messages/create.md +125 -0
  74. package/messages/create.sandbox.md +123 -0
  75. package/messages/create_scratch.md +109 -0
  76. package/messages/delete.md +47 -0
  77. package/messages/delete_sandbox.md +46 -0
  78. package/messages/delete_scratch.md +42 -0
  79. package/messages/display.md +33 -0
  80. package/messages/list.md +65 -0
  81. package/messages/messages.md +81 -0
  82. package/messages/open.md +63 -0
  83. package/messages/resume.sandbox.md +71 -0
  84. package/messages/resume_scratch.md +41 -0
  85. package/messages/sandboxbase.md +17 -0
  86. package/messages/status.md +33 -0
  87. package/oclif.manifest.json +1191 -1
  88. package/package.json +136 -26
  89. package/lib/commands/force/org/display.d.ts +0 -11
  90. package/lib/commands/force/org/display.js.map +0 -1
  91. package/lib/commands/force/org/list.d.ts +0 -15
  92. package/lib/commands/force/org/list.js +0 -191
  93. package/lib/commands/force/org/list.js.map +0 -1
  94. package/lib/commands/force/org/open.d.ts +0 -15
  95. package/lib/commands/force/org/open.js.map +0 -1
  96. package/messages/clone.json +0 -24
  97. package/messages/create.json +0 -37
  98. package/messages/delete.json +0 -13
  99. package/messages/display.json +0 -11
  100. package/messages/list.json +0 -19
  101. package/messages/messages.json +0 -24
  102. package/messages/open.json +0 -19
  103. package/messages/status.json +0 -13
package/README.md CHANGED
@@ -74,6 +74,10 @@ sfdx plugins:link .
74
74
  sfdx plugins
75
75
  ```
76
76
 
77
+ ### Sandbox NUTs
78
+
79
+ Sandboxes are pretty slow, and there's a constraint to how many we can have. So if your changes might impact sandboxes, and you want to check those in the real world, run the [SandboxNuts](https://github.com/salesforcecli/plugin-org/actions/workflows/sandboxNuts.yml) Github Action.
80
+
77
81
  ## Commands
78
82
 
79
83
  <!-- commands -->
@@ -1,13 +1,25 @@
1
- import { FlagsConfig, SfdxCommand } from '@salesforce/command';
2
- export declare class OrgCloneCommand extends SfdxCommand {
1
+ import { SfCommand } from '@salesforce/sf-plugins-core';
2
+ import { SandboxProcessObject } from '@salesforce/core';
3
+ export declare class OrgCloneCommand extends SfCommand<SandboxProcessObject> {
3
4
  static readonly examples: string[];
5
+ static readonly summary: string;
4
6
  static readonly description: string;
5
- static readonly requiresProject = false;
6
- static readonly requiresUsername = true;
7
- static readonly varargs = true;
7
+ static readonly strict = false;
8
+ static state: string;
9
+ static deprecationOptions: {
10
+ to: string;
11
+ version: string;
12
+ };
8
13
  static readonly SANDBOXDEF_SRC_SANDBOXNAME = "SourceSandboxName";
9
- static readonly flagsConfig: FlagsConfig;
10
- run(): Promise<unknown>;
11
- private createSandboxRequest;
12
- private readJsonDefFile;
14
+ static readonly flags: {
15
+ 'target-org': import("@oclif/core/lib/interfaces").OptionFlag<import("@salesforce/core").Org, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
16
+ 'api-version': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
17
+ type: import("@oclif/core/lib/interfaces").OptionFlag<"sandbox", import("@oclif/core/lib/interfaces/parser").CustomOptions>;
18
+ definitionfile: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
19
+ setdefaultusername: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
20
+ setalias: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
21
+ wait: import("@oclif/core/lib/interfaces").OptionFlag<import("@salesforce/kit").Duration | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
22
+ loglevel: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
23
+ };
24
+ run(): Promise<SandboxProcessObject>;
13
25
  }
@@ -7,129 +7,98 @@
7
7
  */
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.OrgCloneCommand = void 0;
10
- const os_1 = require("os");
11
- const fs = require("fs");
12
- const command_1 = require("@salesforce/command");
10
+ const sf_plugins_core_1 = require("@salesforce/sf-plugins-core");
13
11
  const core_1 = require("@salesforce/core");
14
- const kit_1 = require("@salesforce/kit");
15
- const utils_1 = require("../../../shared/utils");
12
+ const sandboxRequest_1 = require("../../../shared/sandboxRequest");
16
13
  const sandboxReporter_1 = require("../../../shared/sandboxReporter");
17
14
  core_1.Messages.importMessagesDirectory(__dirname);
18
15
  const messages = core_1.Messages.loadMessages('@salesforce/plugin-org', 'clone');
19
- class OrgCloneCommand extends command_1.SfdxCommand {
16
+ class OrgCloneCommand extends sf_plugins_core_1.SfCommand {
20
17
  async run() {
18
+ const { flags, args, argv } = await this.parse(OrgCloneCommand);
19
+ const logger = await core_1.Logger.child(this.constructor.name);
20
+ const varargs = (0, sf_plugins_core_1.parseVarArgs)(args, argv);
21
21
  const lifecycle = core_1.Lifecycle.getInstance();
22
- if (this.flags.type === core_1.OrgTypes.Sandbox) {
23
- // eslint-disable-next-line @typescript-eslint/require-await
24
- lifecycle.on(core_1.SandboxEvents.EVENT_ASYNC_RESULT, async (results) => {
25
- // Keep all console output in the command
26
- this.ux.log(messages.getMessage('commandSuccess', [results.Id, results.SandboxName]));
27
- });
28
- // eslint-disable-next-line @typescript-eslint/require-await
29
- lifecycle.on(core_1.SandboxEvents.EVENT_STATUS, async (results) => {
30
- this.ux.log(sandboxReporter_1.SandboxReporter.sandboxProgress(results));
31
- });
22
+ if (flags.type === core_1.OrgTypes.Sandbox) {
23
+ lifecycle.on(core_1.SandboxEvents.EVENT_ASYNC_RESULT, async (results) =>
24
+ // Keep all console output in the command
25
+ Promise.resolve(this.log(messages.getMessage('commandSuccess', [results.Id, results.SandboxName]))));
26
+ lifecycle.on(core_1.SandboxEvents.EVENT_STATUS, async (results) => Promise.resolve(this.log(sandboxReporter_1.SandboxReporter.sandboxProgress(results))));
32
27
  lifecycle.on(core_1.SandboxEvents.EVENT_RESULT, async (results) => {
33
28
  const { sandboxReadyForUse, data } = sandboxReporter_1.SandboxReporter.logSandboxProcessResult(results);
34
- this.ux.log(sandboxReadyForUse);
35
- this.ux.styledHeader('Sandbox Org Cloning Status');
36
- this.ux.table(data, {
29
+ this.log(sandboxReadyForUse);
30
+ this.styledHeader('Sandbox Org Cloning Status');
31
+ this.table(data, {
37
32
  key: { header: 'Name' },
38
33
  value: { header: 'Value' },
39
34
  });
40
35
  if (results?.sandboxRes?.authUserName) {
41
- if (this.flags.setalias) {
36
+ if (flags.setalias) {
42
37
  const stateAggregator = await core_1.StateAggregator.getInstance();
43
- stateAggregator.aliases.set(this.flags.setalias, results.sandboxRes.authUserName);
38
+ stateAggregator.aliases.set(flags.setalias, results.sandboxRes.authUserName);
44
39
  const result = stateAggregator.aliases.getAll();
45
- this.logger.debug('Set Alias: %s result: %s', this.flags.setalias, result);
40
+ logger.debug('Set Alias: %s result: %s', flags.setalias, result);
46
41
  }
47
- if (this.flags.setdefaultusername) {
42
+ if (flags.setdefaultusername) {
48
43
  const globalConfig = this.configAggregator.getGlobalConfig();
49
44
  globalConfig.set(core_1.OrgConfigProperties.TARGET_ORG, results.sandboxRes.authUserName);
50
45
  const result = await globalConfig.write();
51
- this.logger.debug('Set defaultUsername: %s result: %s', this.flags.setdefaultusername, result);
46
+ logger.debug('Set defaultUsername: %s result: %s', flags.setdefaultusername, result);
52
47
  }
53
48
  }
54
49
  });
55
- const { sandboxReq, srcSandboxName } = this.createSandboxRequest();
56
- this.logger.debug('Calling clone with SandboxRequest: %s and SandboxName: %s ', sandboxReq, srcSandboxName);
57
- const wait = this.flags.wait;
58
- return this.org.cloneSandbox(sandboxReq, srcSandboxName, { wait });
50
+ const { sandboxReq, srcSandboxName } = await (0, sandboxRequest_1.createSandboxRequest)(true, flags.definitionfile, logger, varargs);
51
+ logger.debug('Calling clone with SandboxRequest: %s and SandboxName: %s ', sandboxReq, srcSandboxName);
52
+ flags['target-org'].getConnection(flags['api-version']);
53
+ return flags['target-org'].cloneSandbox(sandboxReq, srcSandboxName, { wait: flags.wait });
59
54
  }
60
55
  else {
61
56
  throw new core_1.SfError(messages.getMessage('commandOrganizationTypeNotSupport', [core_1.OrgTypes.Sandbox]), messages.getMessage('commandOrganizationTypeNotSupportAction', [core_1.OrgTypes.Sandbox]));
62
57
  }
63
58
  }
64
- createSandboxRequest() {
65
- this.logger.debug('Clone started with args %s ', this.flags);
66
- this.logger.debug('Clone Varargs: %s ', this.varargs);
67
- let sandboxDefFileContents = this.readJsonDefFile();
68
- let capitalizedVarArgs = {};
69
- if (sandboxDefFileContents) {
70
- sandboxDefFileContents = (0, utils_1.lowerToUpper)(sandboxDefFileContents);
71
- }
72
- if (this.varargs) {
73
- capitalizedVarArgs = (0, utils_1.lowerToUpper)(this.varargs);
74
- }
75
- // varargs override file input
76
- const sandboxReq = { SandboxName: undefined, ...sandboxDefFileContents, ...capitalizedVarArgs };
77
- this.logger.debug('SandboxRequest after merging DefFile and Varargs: %s ', sandboxReq);
78
- // try to find the source sandbox name either from the definition file or the commandline arg
79
- // NOTE the name and the case "SourceSandboxName" must match exactly
80
- const srcSandboxName = sandboxReq[OrgCloneCommand.SANDBOXDEF_SRC_SANDBOXNAME];
81
- if (srcSandboxName) {
82
- // we have to delete this property from the sandboxRequest object,
83
- // because sandboxRequest object represent the POST request to create SandboxInfo bpo,
84
- // sandboxInfo does not have a column named SourceSandboxName, this field will be converted to sourceId in the clone call below
85
- delete sandboxReq[OrgCloneCommand.SANDBOXDEF_SRC_SANDBOXNAME];
86
- }
87
- else {
88
- // error - we need SourceSandboxName to know which sandbox to clone from
89
- throw new core_1.SfError(messages.getMessage('missingSourceSandboxName', [OrgCloneCommand.SANDBOXDEF_SRC_SANDBOXNAME]), messages.getMessage('missingSourceSandboxNameAction', [OrgCloneCommand.SANDBOXDEF_SRC_SANDBOXNAME]));
90
- }
91
- return { sandboxReq, srcSandboxName };
92
- }
93
- readJsonDefFile() {
94
- // the -f option
95
- if (this.flags.definitionfile) {
96
- this.logger.debug('Reading JSON DefFile %s ', this.flags.definitionfile);
97
- return JSON.parse(fs.readFileSync(this.flags.definitionfile, 'utf-8'));
98
- }
99
- }
100
59
  }
101
60
  exports.OrgCloneCommand = OrgCloneCommand;
102
- OrgCloneCommand.examples = messages.getMessage('examples').split(os_1.EOL);
61
+ OrgCloneCommand.examples = messages.getMessages('examples');
62
+ OrgCloneCommand.summary = messages.getMessage('summary');
103
63
  OrgCloneCommand.description = messages.getMessage('description');
104
- OrgCloneCommand.requiresProject = false;
105
- OrgCloneCommand.requiresUsername = true;
106
- OrgCloneCommand.varargs = true;
64
+ OrgCloneCommand.strict = false;
65
+ OrgCloneCommand.state = 'deprecated';
66
+ OrgCloneCommand.deprecationOptions = {
67
+ to: 'org:create:sandbox',
68
+ version: '60.0',
69
+ };
107
70
  OrgCloneCommand.SANDBOXDEF_SRC_SANDBOXNAME = 'SourceSandboxName';
108
- OrgCloneCommand.flagsConfig = {
109
- type: command_1.flags.enum({
71
+ OrgCloneCommand.flags = {
72
+ 'target-org': sf_plugins_core_1.requiredOrgFlagWithDeprecations,
73
+ 'api-version': sf_plugins_core_1.orgApiVersionFlagWithDeprecations,
74
+ type: sf_plugins_core_1.Flags.custom({
75
+ options: ['sandbox'],
76
+ })({
110
77
  char: 't',
111
- description: messages.getMessage('flags.type'),
78
+ summary: messages.getMessage('flags.type'),
112
79
  required: true,
113
- options: ['sandbox'],
114
80
  }),
115
- definitionfile: command_1.flags.filepath({
81
+ definitionfile: sf_plugins_core_1.Flags.file({
116
82
  char: 'f',
117
- description: messages.getMessage('flags.definitionfile'),
83
+ exists: true,
84
+ summary: messages.getMessage('flags.definitionfile'),
118
85
  }),
119
- setdefaultusername: command_1.flags.boolean({
86
+ setdefaultusername: sf_plugins_core_1.Flags.boolean({
120
87
  char: 's',
121
- description: messages.getMessage('flags.setdefaultusername'),
88
+ summary: messages.getMessage('flags.setdefaultusername'),
122
89
  }),
123
- setalias: command_1.flags.string({
90
+ setalias: sf_plugins_core_1.Flags.string({
124
91
  char: 'a',
125
- description: messages.getMessage('flags.setalias'),
92
+ summary: messages.getMessage('flags.setalias'),
126
93
  }),
127
- wait: command_1.flags.minutes({
94
+ wait: sf_plugins_core_1.Flags.duration({
95
+ unit: 'minutes',
128
96
  char: 'w',
129
- description: messages.getMessage('flags.wait'),
130
- longDescription: messages.getMessage('flagsLong.wait'),
131
- min: kit_1.Duration.minutes(2),
132
- default: kit_1.Duration.minutes(6),
97
+ summary: messages.getMessage('flags.wait'),
98
+ description: messages.getMessage('flagsLong.wait'),
99
+ min: 2,
100
+ defaultValue: 6,
133
101
  }),
102
+ loglevel: sf_plugins_core_1.loglevel,
134
103
  };
135
104
  //# sourceMappingURL=clone.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"clone.js","sourceRoot":"","sources":["../../../../src/commands/force/org/clone.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"clone.js","sourceRoot":"","sources":["../../../../src/commands/force/org/clone.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
- import { FlagsConfig, SfdxCommand } from '@salesforce/command';
2
- import { AuthFields, SandboxProcessObject, ScratchOrgInfo } from '@salesforce/core';
1
+ import { Interfaces } from '@oclif/core';
2
+ import { SfCommand } from '@salesforce/sf-plugins-core';
3
+ import { AuthFields, OrgTypes, SandboxProcessObject, ScratchOrgInfo } from '@salesforce/core';
3
4
  export interface ScratchOrgProcessObject {
4
5
  username?: string;
5
6
  scratchOrgInfo: ScratchOrgInfo;
@@ -7,20 +8,34 @@ export interface ScratchOrgProcessObject {
7
8
  warnings: string[];
8
9
  orgId: string;
9
10
  }
10
- export declare class Create extends SfdxCommand {
11
+ export type CreateResult = ScratchOrgProcessObject | SandboxProcessObject;
12
+ export declare class Create extends SfCommand<CreateResult> {
13
+ static readonly summary: string;
11
14
  static readonly description: string;
12
15
  static readonly examples: string[];
13
- static readonly supportsDevhubUsername = true;
14
- static readonly supportsUsername = true;
15
- static readonly varargs = true;
16
- static readonly aliases: string[];
17
- static readonly flagsConfig: FlagsConfig;
18
- protected readonly lifecycleEventNames: string[];
16
+ static readonly strict = false;
17
+ static readonly flags: {
18
+ 'target-org': Interfaces.OptionFlag<import("@salesforce/core").Org | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
19
+ 'target-dev-hub': Interfaces.OptionFlag<import("@salesforce/core").Org | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
20
+ 'api-version': Interfaces.OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
21
+ loglevel: Interfaces.OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
22
+ type: Interfaces.OptionFlag<OrgTypes, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
23
+ definitionfile: Interfaces.OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
24
+ nonamespace: Interfaces.BooleanFlag<boolean>;
25
+ noancestors: Interfaces.BooleanFlag<boolean>;
26
+ clientid: Interfaces.OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
27
+ setdefaultusername: Interfaces.BooleanFlag<boolean>;
28
+ setalias: Interfaces.OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
29
+ wait: Interfaces.OptionFlag<import("@salesforce/kit").Duration | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
30
+ durationdays: Interfaces.OptionFlag<number, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
31
+ retry: Interfaces.OptionFlag<number, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
32
+ };
19
33
  private sandboxAuth?;
20
- run(): Promise<SandboxProcessObject | ScratchOrgProcessObject>;
34
+ private logger;
35
+ private varArgs;
36
+ private flags;
37
+ run(): Promise<CreateResult>;
21
38
  private validateSandboxFlags;
22
- private createSandboxRequest;
23
39
  private createSandbox;
24
- private readJsonDefFile;
25
40
  private createScratchOrg;
26
41
  }
@@ -7,23 +7,24 @@
7
7
  */
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.Create = void 0;
10
- const os = require("os");
11
- const fs = require("fs");
12
- const command_1 = require("@salesforce/command");
13
- const kit_1 = require("@salesforce/kit");
10
+ const sf_plugins_core_1 = require("@salesforce/sf-plugins-core");
14
11
  const core_1 = require("@salesforce/core");
15
- const utils_1 = require("../../../shared/utils");
12
+ const sandboxRequest_1 = require("../../../shared/sandboxRequest");
16
13
  const sandboxReporter_1 = require("../../../shared/sandboxReporter");
17
14
  core_1.Messages.importMessagesDirectory(__dirname);
18
15
  const messages = core_1.Messages.loadMessages('@salesforce/plugin-org', 'create');
19
- class Create extends command_1.SfdxCommand {
16
+ class Create extends sf_plugins_core_1.SfCommand {
20
17
  constructor() {
21
18
  super(...arguments);
22
- this.lifecycleEventNames = ['postorgcreate'];
19
+ this.varArgs = {};
23
20
  }
24
21
  async run() {
25
- this.logger.debug('Create started with args %s ', this.flags);
26
- if (this.flags.type === core_1.OrgTypes.Sandbox) {
22
+ const { flags, args, argv } = await this.parse(Create);
23
+ this.flags = flags;
24
+ this.varArgs = (0, sf_plugins_core_1.parseVarArgs)(args, argv);
25
+ this.logger = await core_1.Logger.child(this.constructor.name);
26
+ this.logger.debug('Create started with args %s ', flags);
27
+ if (flags.type === core_1.OrgTypes.Sandbox) {
27
28
  this.validateSandboxFlags();
28
29
  return this.createSandbox();
29
30
  }
@@ -33,70 +34,40 @@ class Create extends command_1.SfdxCommand {
33
34
  }
34
35
  }
35
36
  validateSandboxFlags() {
36
- if (!this.flags.targetusername) {
37
- throw new core_1.SfError(messages.getMessage('requiresUsername'));
38
- }
39
37
  if (this.flags.retry !== 0) {
40
38
  throw new core_1.SfError(messages.getMessage('retryIsNotValidForSandboxes'), 'retryIsNotValidForSandboxes');
41
39
  }
42
40
  if (this.flags.clientid) {
43
- this.ux.warn(messages.getMessage('clientIdNotSupported', [this.flags.clientid]));
41
+ this.warn(messages.getMessage('clientIdNotSupported', [this.flags.clientid]));
44
42
  }
45
43
  if (this.flags.nonamespace) {
46
- this.ux.warn(messages.getMessage('noNamespaceNotSupported', [this.flags.nonamespace]));
44
+ this.warn(messages.getMessage('noNamespaceNotSupported', [this.flags.nonamespace]));
47
45
  }
48
46
  if (this.flags.noancestors) {
49
- this.ux.warn(messages.getMessage('noAncestorsNotSupported', [this.flags.noancestors]));
47
+ this.warn(messages.getMessage('noAncestorsNotSupported', [this.flags.noancestors]));
50
48
  }
51
49
  if (this.flags.durationdays) {
52
- this.ux.warn(messages.getMessage('durationDaysNotSupported', [this.flags.durationdays]));
50
+ this.warn(messages.getMessage('durationDaysNotSupported', [this.flags.durationdays]));
53
51
  }
54
52
  }
55
- createSandboxRequest() {
56
- this.logger.debug('Create Varargs: %s ', this.varargs);
57
- let sandboxDefFileContents = this.readJsonDefFile();
58
- let capitalizedVarArgs = {};
59
- if (sandboxDefFileContents) {
60
- sandboxDefFileContents = (0, utils_1.lowerToUpper)(sandboxDefFileContents);
61
- }
62
- if (this.varargs) {
63
- capitalizedVarArgs = (0, utils_1.lowerToUpper)(this.varargs);
64
- }
65
- // varargs override file input
66
- const sandboxReq = { SandboxName: undefined, ...sandboxDefFileContents, ...capitalizedVarArgs };
67
- if (!sandboxReq.SandboxName) {
68
- // sandbox names are 10 chars or less, a radix of 36 = [a-z][0-9]
69
- // technically without querying the production org, the generated name could already exist, but the chances of that are lower than the perf penalty of querying and verifying
70
- sandboxReq.SandboxName = `sbx${Date.now().toString(36).slice(-7)}`;
71
- this.ux.warn(`No SandboxName defined, generating new SandboxName: ${sandboxReq.SandboxName}`);
72
- }
73
- if (!sandboxReq.LicenseType) {
74
- throw new core_1.SfError(messages.getMessage('missingLicenseType'));
75
- }
76
- return sandboxReq;
77
- }
78
53
  async createSandbox() {
79
- const prodOrg = await core_1.Org.create({ aliasOrUsername: this.flags.targetusername });
54
+ if (!this.flags['target-org']) {
55
+ throw new core_1.SfError(messages.getMessage('requiresUsername'));
56
+ }
80
57
  const lifecycle = core_1.Lifecycle.getInstance();
58
+ const username = this.flags['target-org'].getUsername();
81
59
  // register the sandbox event listeners before calling `prodOrg.createSandbox()`
82
- // `on` doesn't support synchronous methods
83
- // eslint-disable-next-line @typescript-eslint/require-await
84
- lifecycle.on(core_1.SandboxEvents.EVENT_ASYNC_RESULT, async (results) => {
85
- this.ux.log(messages.getMessage('sandboxSuccess', [results.Id, results.SandboxName, this.flags.targetusername]));
86
- });
87
- // eslint-disable-next-line @typescript-eslint/require-await
88
- lifecycle.on(core_1.SandboxEvents.EVENT_STATUS, async (results) => {
89
- this.ux.log(sandboxReporter_1.SandboxReporter.sandboxProgress(results));
90
- });
91
- // eslint-disable-next-line @typescript-eslint/require-await
60
+ lifecycle.on(core_1.SandboxEvents.EVENT_ASYNC_RESULT, async (results) => Promise.resolve(this.log(messages.getMessage('sandboxSuccess', [results.Id, results.SandboxName, username]))));
61
+ lifecycle.on(core_1.SandboxEvents.EVENT_STATUS, async (results) => Promise.resolve(this.log(sandboxReporter_1.SandboxReporter.sandboxProgress(results))));
92
62
  lifecycle.on(core_1.SandboxEvents.EVENT_AUTH, async (results) => {
93
63
  this.sandboxAuth = results;
64
+ return Promise.resolve();
94
65
  });
95
66
  lifecycle.on(core_1.SandboxEvents.EVENT_RESULT, async (results) => {
96
67
  const { sandboxReadyForUse, data } = sandboxReporter_1.SandboxReporter.logSandboxProcessResult(results);
97
- this.ux.log(sandboxReadyForUse);
98
- this.ux.styledHeader('Sandbox Org Creation Status');
99
- this.ux.table(data, {
68
+ this.log(sandboxReadyForUse);
69
+ this.styledHeader('Sandbox Org Creation Status');
70
+ this.table(data, {
100
71
  key: { header: 'Name' },
101
72
  value: { header: 'Value' },
102
73
  });
@@ -115,11 +86,11 @@ class Create extends command_1.SfdxCommand {
115
86
  }
116
87
  }
117
88
  });
118
- const sandboxReq = this.createSandboxRequest();
89
+ const { sandboxReq } = await (0, sandboxRequest_1.createSandboxRequest)(false, this.flags.definitionfile, this.logger, this.varArgs);
119
90
  this.logger.debug('Calling create with SandboxRequest: %s ', sandboxReq);
120
91
  const wait = this.flags.wait;
121
92
  try {
122
- return await prodOrg.createSandbox(sandboxReq, { wait });
93
+ return await this.flags['target-org'].createSandbox(sandboxReq, { wait });
123
94
  }
124
95
  catch (e) {
125
96
  // guaranteed to be SfdxError from core;
@@ -144,31 +115,24 @@ class Create extends command_1.SfdxCommand {
144
115
  throw err;
145
116
  }
146
117
  }
147
- readJsonDefFile() {
148
- // the -f option
149
- if (this.flags.definitionfile) {
150
- this.logger.debug('Reading JSON DefFile %s ', this.flags.definitionfile);
151
- return JSON.parse(fs.readFileSync(this.flags.definitionfile, 'utf-8'));
152
- }
153
- }
154
118
  async createScratchOrg() {
155
119
  this.logger.debug('OK, will do scratch org creation');
156
- if (!this.hubOrg) {
120
+ if (!this.flags['target-dev-hub']) {
157
121
  throw new core_1.SfError(messages.getMessage('RequiresDevhubUsernameError'));
158
122
  }
159
123
  // Ensure we have an org config input source.
160
- if (!this.flags.definitionfile && Object.keys(this.varargs).length === 0) {
124
+ if (!this.flags.definitionfile && Object.keys(this.varArgs).length === 0) {
161
125
  throw new core_1.SfError(messages.getMessage('noConfig'));
162
126
  }
163
127
  this.logger.debug('validation complete');
164
128
  // If the user supplied a specific client ID, we have no way of knowing if it's
165
129
  // a certificate-based Connected App or not. Therefore, we have to assume that
166
130
  // we'll need the client secret, so prompt the user for it.
167
- const secret = this.flags.clientid
168
- ? await this.ux.prompt(messages.getMessage('secretPrompt'), {
169
- type: 'mask',
170
- })
171
- : undefined;
131
+ const { clientSecret } = this.flags.clientid
132
+ ? await this.prompt([
133
+ { name: 'clientSecret', type: 'mask', message: messages.getMessage('secretPrompt') },
134
+ ])
135
+ : { clientSecret: undefined };
172
136
  const createCommandOptions = {
173
137
  connectedAppConsumerKey: this.flags.clientid,
174
138
  durationDays: this.flags.durationdays,
@@ -176,22 +140,28 @@ class Create extends command_1.SfdxCommand {
176
140
  noancestors: this.flags.noancestors,
177
141
  wait: this.flags.wait,
178
142
  retry: this.flags.retry,
179
- apiversion: this.flags.apiversion,
143
+ apiversion: this.flags['api-version'],
180
144
  definitionfile: this.flags.definitionfile,
181
- orgConfig: this.varargs,
182
- clientSecret: secret,
145
+ orgConfig: this.varArgs,
146
+ clientSecret,
183
147
  setDefault: this.flags.setdefaultusername === true,
184
148
  alias: this.flags.setalias,
185
149
  tracksSource: true,
186
150
  };
187
- const { username, scratchOrgInfo, authFields, warnings } = await this.hubOrg.scratchOrgCreate(createCommandOptions);
151
+ const { username, scratchOrgInfo, authFields, warnings } = await this.flags['target-dev-hub'].scratchOrgCreate(createCommandOptions);
152
+ if (!scratchOrgInfo) {
153
+ throw new core_1.SfError('No scratch org info returned from scratchOrgCreate');
154
+ }
155
+ if (!authFields || !authFields.orgId) {
156
+ throw new core_1.SfError('Information missing from authFields');
157
+ }
188
158
  await core_1.Lifecycle.getInstance().emit('scratchOrgInfo', scratchOrgInfo);
189
- this.logger.debug(`orgConfig.loginUrl: ${authFields.loginUrl}`);
190
- this.logger.debug(`orgConfig.instanceUrl: ${authFields.instanceUrl}`);
191
- this.ux.log(messages.getMessage('scratchOrgCreateSuccess', [authFields.orgId, username]));
159
+ this.logger.debug(`orgConfig.loginUrl: ${authFields?.loginUrl}`);
160
+ this.logger.debug(`orgConfig.instanceUrl: ${authFields?.instanceUrl}`);
161
+ this.log(messages.getMessage('scratchOrgCreateSuccess', [authFields?.orgId, username]));
192
162
  if (warnings.length > 0) {
193
163
  warnings.forEach((warning) => {
194
- this.ux.warn(warning);
164
+ this.warn(warning);
195
165
  });
196
166
  }
197
167
  return {
@@ -199,66 +169,77 @@ class Create extends command_1.SfdxCommand {
199
169
  scratchOrgInfo,
200
170
  authFields,
201
171
  warnings,
202
- orgId: authFields.orgId,
172
+ orgId: authFields?.orgId,
203
173
  };
204
174
  }
205
175
  }
206
176
  exports.Create = Create;
177
+ Create.summary = messages.getMessage('summary');
207
178
  Create.description = messages.getMessage('description');
208
- Create.examples = messages.getMessage('examples').split(os.EOL);
209
- Create.supportsDevhubUsername = true;
210
- Create.supportsUsername = true;
211
- Create.varargs = true;
212
- Create.aliases = ['force:org:beta:create'];
213
- Create.flagsConfig = {
214
- type: command_1.flags.enum({
215
- char: 't',
216
- description: messages.getMessage('flags.type'),
179
+ Create.examples = messages.getMessages('examples');
180
+ // waiting for oclif bug fix around missing config.id.
181
+ // public static state = 'deprecated';
182
+ // public static deprecationOptions = {
183
+ // message: messages.getMessage('deprecation'),
184
+ // };
185
+ // needed to allow varargs
186
+ Create.strict = false;
187
+ Create.flags = {
188
+ 'target-org': sf_plugins_core_1.optionalOrgFlagWithDeprecations,
189
+ 'target-dev-hub': sf_plugins_core_1.optionalHubFlagWithDeprecations,
190
+ 'api-version': sf_plugins_core_1.orgApiVersionFlagWithDeprecations,
191
+ loglevel: sf_plugins_core_1.loglevel,
192
+ type: sf_plugins_core_1.Flags.custom({
217
193
  options: [core_1.OrgTypes.Scratch, core_1.OrgTypes.Sandbox],
194
+ })({
195
+ char: 't',
196
+ summary: messages.getMessage('flags.type'),
218
197
  default: core_1.OrgTypes.Scratch,
219
198
  }),
220
- definitionfile: command_1.flags.filepath({
199
+ definitionfile: sf_plugins_core_1.Flags.file({
200
+ exists: true,
221
201
  char: 'f',
222
- description: messages.getMessage('flags.definitionFile'),
202
+ summary: messages.getMessage('flags.definitionFile'),
223
203
  }),
224
- nonamespace: command_1.flags.boolean({
204
+ nonamespace: sf_plugins_core_1.Flags.boolean({
225
205
  char: 'n',
226
- description: messages.getMessage('flags.noNamespace'),
206
+ summary: messages.getMessage('flags.noNamespace'),
227
207
  }),
228
- noancestors: command_1.flags.boolean({
208
+ noancestors: sf_plugins_core_1.Flags.boolean({
229
209
  char: 'c',
230
- description: messages.getMessage('flags.noAncestors'),
210
+ summary: messages.getMessage('flags.noAncestors'),
231
211
  }),
232
- clientid: command_1.flags.string({
212
+ clientid: sf_plugins_core_1.Flags.string({
233
213
  char: 'i',
234
- description: messages.getMessage('flags.clientId'),
214
+ summary: messages.getMessage('flags.clientId'),
235
215
  }),
236
- setdefaultusername: command_1.flags.boolean({
216
+ setdefaultusername: sf_plugins_core_1.Flags.boolean({
237
217
  char: 's',
238
- description: messages.getMessage('flags.setDefaultUsername'),
218
+ summary: messages.getMessage('flags.setDefaultUsername'),
239
219
  }),
240
- setalias: command_1.flags.string({
220
+ setalias: sf_plugins_core_1.Flags.string({
241
221
  char: 'a',
242
- description: messages.getMessage('flags.setAlias'),
222
+ summary: messages.getMessage('flags.setAlias'),
243
223
  }),
244
- wait: command_1.flags.minutes({
224
+ wait: sf_plugins_core_1.Flags.duration({
225
+ unit: 'minutes',
245
226
  char: 'w',
246
- description: messages.getMessage('flags.wait'),
227
+ summary: messages.getMessage('flags.wait'),
247
228
  min: 6,
248
- default: kit_1.Duration.minutes(6),
229
+ defaultValue: 6,
249
230
  }),
250
- durationdays: command_1.flags.integer({
231
+ durationdays: sf_plugins_core_1.Flags.integer({
251
232
  char: 'd',
252
- description: messages.getMessage('flags.durationDays'),
233
+ summary: messages.getMessage('flags.durationDays'),
253
234
  min: 1,
254
235
  max: 30,
255
236
  default: 7,
256
237
  }),
257
- retry: command_1.flags.number({
238
+ retry: sf_plugins_core_1.Flags.integer({
258
239
  hidden: true,
259
240
  default: 0,
260
241
  max: 10,
261
- description: messages.getMessage('flags.retry'),
242
+ summary: messages.getMessage('flags.retry'),
262
243
  }),
263
244
  };
264
245
  //# sourceMappingURL=create.js.map