@salesforce/plugin-devops-center 1.3.0 → 1.4.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 (52) hide show
  1. package/README.md +110 -100
  2. package/lib/commands/devops/pipeline/activate.js +5 -0
  3. package/lib/commands/devops/pipeline/activate.js.map +1 -1
  4. package/lib/commands/devops/pipeline/create.d.ts +2 -1
  5. package/lib/commands/devops/pipeline/create.js +37 -7
  6. package/lib/commands/devops/pipeline/create.js.map +1 -1
  7. package/lib/commands/devops/pipeline/{attach-project.d.ts → project/add.d.ts} +2 -2
  8. package/lib/commands/devops/pipeline/{attach-project.js → project/add.js} +5 -5
  9. package/lib/commands/devops/pipeline/project/add.js.map +1 -0
  10. package/lib/commands/devops/pull-request/create.d.ts +0 -2
  11. package/lib/commands/devops/pull-request/create.js +8 -40
  12. package/lib/commands/devops/pull-request/create.js.map +1 -1
  13. package/lib/commands/devops/stage/{add-branch.d.ts → branch/add.d.ts} +2 -2
  14. package/lib/commands/devops/stage/{add-branch.js → branch/add.js} +6 -6
  15. package/lib/commands/devops/stage/branch/add.js.map +1 -0
  16. package/lib/commands/devops/stage/{add-environment.d.ts → environment/add.d.ts} +2 -2
  17. package/lib/commands/devops/stage/{add-environment.js → environment/add.js} +11 -6
  18. package/lib/commands/devops/stage/environment/add.js.map +1 -0
  19. package/lib/commands/devops/work-item/{status/update.d.ts → update.d.ts} +6 -4
  20. package/lib/commands/devops/work-item/{status/update.js → update.js} +30 -9
  21. package/lib/commands/devops/work-item/update.js.map +1 -0
  22. package/lib/utils/createPipeline.d.ts +14 -1
  23. package/lib/utils/createPipeline.js +52 -6
  24. package/lib/utils/createPipeline.js.map +1 -1
  25. package/lib/utils/createProject.js +1 -0
  26. package/lib/utils/createProject.js.map +1 -1
  27. package/lib/utils/createPullRequest.d.ts +7 -19
  28. package/lib/utils/createPullRequest.js +49 -121
  29. package/lib/utils/createPullRequest.js.map +1 -1
  30. package/lib/utils/{updateWorkItemStatus.d.ts → updateWorkItem.d.ts} +12 -14
  31. package/lib/utils/{updateWorkItemStatus.js → updateWorkItem.js} +28 -26
  32. package/lib/utils/updateWorkItem.js.map +1 -0
  33. package/messages/devops.pipeline.create.md +26 -6
  34. package/messages/devops.pull-request.create.md +6 -30
  35. package/messages/{devops.stage.add-environment.md → devops.stage.environment.add.md} +4 -0
  36. package/messages/devops.work-item.update.md +45 -0
  37. package/npm-shrinkwrap.json +2 -2
  38. package/oclif.manifest.json +276 -266
  39. package/package.json +3 -3
  40. package/schemas/devops-pull__request-create.json +0 -3
  41. package/schemas/{devops-work__item-status-update.json → devops-work__item-update.json} +8 -2
  42. package/lib/commands/devops/pipeline/attach-project.js.map +0 -1
  43. package/lib/commands/devops/stage/add-branch.js.map +0 -1
  44. package/lib/commands/devops/stage/add-environment.js.map +0 -1
  45. package/lib/commands/devops/work-item/status/update.js.map +0 -1
  46. package/lib/utils/updateWorkItemStatus.js.map +0 -1
  47. package/messages/devops.work-item.status.update.md +0 -29
  48. /package/messages/{devops.pipeline.attach-project.md → devops.pipeline.project.add.md} +0 -0
  49. /package/messages/{devops.stage.add-branch.md → devops.stage.branch.add.md} +0 -0
  50. /package/schemas/{devops-pipeline-attach__project.json → devops-pipeline-project-add.json} +0 -0
  51. /package/schemas/{devops-stage-add__branch.json → devops-stage-branch-add.json} +0 -0
  52. /package/schemas/{devops-stage-add__environment.json → devops-stage-environment-add.json} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add.js","sourceRoot":"","sources":["../../../../../src/commands/devops/pipeline/project/add.ts"],"names":[],"mappings":"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"}
@@ -10,8 +10,6 @@ export default class DevopsPullRequestCreate extends SfCommand<CreatePullRequest
10
10
  'api-version': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
11
  'work-item-name': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
12
  'work-item-id': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
- title: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
14
- body: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
15
13
  };
16
14
  run(): Promise<CreatePullRequestResult>;
17
15
  }
@@ -15,7 +15,7 @@
15
15
  */
16
16
  import { Messages } from '@salesforce/core';
17
17
  import { SfCommand, Flags } from '@salesforce/sf-plugins-core';
18
- import { createPullRequest, fetchWorkItemDetail, resolveGitHubToken, } from '../../../utils/createPullRequest.js';
18
+ import { createPullRequest, fetchWorkItemDetail, } from '../../../utils/createPullRequest.js';
19
19
  Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
20
20
  const messages = Messages.loadMessages('@salesforce/plugin-devops-center', 'devops.pull-request.create');
21
21
  const commonErrorMessages = Messages.loadMessages('@salesforce/plugin-devops-center', 'commonErrors');
@@ -36,12 +36,6 @@ export default class DevopsPullRequestCreate extends SfCommand {
36
36
  char: 'w',
37
37
  exactlyOne: ['work-item-name', 'work-item-id'],
38
38
  }),
39
- title: Flags.string({
40
- summary: messages.getMessage('flags.title.summary'),
41
- }),
42
- body: Flags.string({
43
- summary: messages.getMessage('flags.body.summary'),
44
- }),
45
39
  };
46
40
  async run() {
47
41
  const { flags } = await this.parse(DevopsPullRequestCreate);
@@ -62,41 +56,15 @@ export default class DevopsPullRequestCreate extends SfCommand {
62
56
  if (!detail.branchName) {
63
57
  this.error(messages.getMessage('error.NoBranch', [detail.workItemName]));
64
58
  }
65
- if (!detail.repoOwner || !detail.repoName) {
66
- this.error(messages.getMessage('error.NoRepo', [detail.workItemName]));
67
- }
68
- if (!detail.targetBranch) {
69
- this.error(messages.getMessage('error.NoTargetBranch', [detail.workItemName]));
70
- }
71
- if (!detail.provider) {
72
- this.error(messages.getMessage('error.NoProvider', [detail.workItemName]));
73
- }
74
- let token;
75
- if (detail.provider === 'github') {
76
- token = await resolveGitHubToken();
77
- }
78
- else {
79
- token = process.env.BITBUCKET_TOKEN;
80
- }
81
- if (!token) {
82
- this.error(messages.getMessage('error.NoToken', [detail.provider]));
83
- }
84
- const prTitle = flags['title'] ?? detail.subject;
85
- const result = await createPullRequest({
86
- owner: detail.repoOwner,
87
- repo: detail.repoName,
88
- head: detail.branchName,
89
- base: detail.targetBranch,
90
- title: prTitle,
91
- body: flags['body'],
92
- provider: detail.provider,
93
- token,
94
- });
59
+ const result = await createPullRequest(connection, detail.workItemId);
95
60
  if (result.success) {
96
61
  this.log(`Successfully created pull request for ${detail.workItemName}.`);
97
- this.log(` Title: ${result.title ?? prTitle}`);
98
- this.log(` URL: ${result.url ?? ''}`);
99
- this.log(` Source: ${detail.workItemName} → ${result.targetBranch ?? detail.targetBranch}`);
62
+ if (result.url) {
63
+ this.log(` URL: ${result.url}`);
64
+ }
65
+ if (detail.branchName && detail.targetBranch) {
66
+ this.log(` Source: ${detail.branchName} → ${detail.targetBranch}`);
67
+ }
100
68
  }
101
69
  return result;
102
70
  }
@@ -1 +1 @@
1
- {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../../src/commands/devops/pull-request/create.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../../src/commands/devops/pull-request/create.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { Org } from '@salesforce/core';
2
2
  import { SfCommand } from '@salesforce/sf-plugins-core';
3
- import { AddStageBranchResult } from '../../../utils/addStageBranch.js';
4
- export default class DevopsStageAddBranch extends SfCommand<AddStageBranchResult> {
3
+ import { AddStageBranchResult } from '../../../../utils/addStageBranch.js';
4
+ export default class DevopsStageBranchAdd extends SfCommand<AddStageBranchResult> {
5
5
  static readonly summary: string;
6
6
  static readonly description: string;
7
7
  static readonly examples: string[];
@@ -15,12 +15,12 @@
15
15
  */
16
16
  import { Messages } from '@salesforce/core';
17
17
  import { SfCommand, Flags } from '@salesforce/sf-plugins-core';
18
- import { addStageBranch } from '../../../utils/addStageBranch.js';
19
- import { fetchPipelineStages } from '../../../utils/pipelineUtils.js';
18
+ import { addStageBranch } from '../../../../utils/addStageBranch.js';
19
+ import { fetchPipelineStages } from '../../../../utils/pipelineUtils.js';
20
20
  Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
21
- const messages = Messages.loadMessages('@salesforce/plugin-devops-center', 'devops.stage.add-branch');
21
+ const messages = Messages.loadMessages('@salesforce/plugin-devops-center', 'devops.stage.branch.add');
22
22
  const commonErrorMessages = Messages.loadMessages('@salesforce/plugin-devops-center', 'commonErrors');
23
- export default class DevopsStageAddBranch extends SfCommand {
23
+ export default class DevopsStageBranchAdd extends SfCommand {
24
24
  static summary = messages.getMessage('summary');
25
25
  static description = messages.getMessage('description');
26
26
  static examples = messages.getMessages('examples');
@@ -48,7 +48,7 @@ export default class DevopsStageAddBranch extends SfCommand {
48
48
  }),
49
49
  };
50
50
  async run() {
51
- const { flags } = await this.parse(DevopsStageAddBranch);
51
+ const { flags } = await this.parse(DevopsStageBranchAdd);
52
52
  const org = flags['target-org'];
53
53
  const connection = org.getConnection(flags['api-version']);
54
54
  const pipelineId = flags['pipeline-id'];
@@ -107,4 +107,4 @@ export default class DevopsStageAddBranch extends SfCommand {
107
107
  return result;
108
108
  }
109
109
  }
110
- //# sourceMappingURL=add-branch.js.map
110
+ //# sourceMappingURL=add.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add.js","sourceRoot":"","sources":["../../../../../src/commands/devops/stage/branch/add.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { Org } from '@salesforce/core';
2
2
  import { SfCommand } from '@salesforce/sf-plugins-core';
3
- import { AddStageEnvironmentResult } from '../../../utils/addStageEnvironment.js';
4
- export default class DevopsStageAddEnvironment extends SfCommand<AddStageEnvironmentResult> {
3
+ import { AddStageEnvironmentResult } from '../../../../utils/addStageEnvironment.js';
4
+ export default class DevopsStageEnvironmentAdd extends SfCommand<AddStageEnvironmentResult> {
5
5
  static readonly summary: string;
6
6
  static readonly description: string;
7
7
  static readonly examples: string[];
@@ -16,10 +16,10 @@
16
16
  import { exec } from 'node:child_process';
17
17
  import { Messages } from '@salesforce/core';
18
18
  import { SfCommand, Flags } from '@salesforce/sf-plugins-core';
19
- import { addStageEnvironment } from '../../../utils/addStageEnvironment.js';
20
- import { fetchPipelineStages } from '../../../utils/pipelineUtils.js';
19
+ import { addStageEnvironment } from '../../../../utils/addStageEnvironment.js';
20
+ import { fetchPipelineStages } from '../../../../utils/pipelineUtils.js';
21
21
  Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
22
- const messages = Messages.loadMessages('@salesforce/plugin-devops-center', 'devops.stage.add-environment');
22
+ const messages = Messages.loadMessages('@salesforce/plugin-devops-center', 'devops.stage.environment.add');
23
23
  const commonErrorMessages = Messages.loadMessages('@salesforce/plugin-devops-center', 'commonErrors');
24
24
  function openUrl(url) {
25
25
  const platform = process.platform;
@@ -29,7 +29,7 @@ function openUrl(url) {
29
29
  function decodeRedirectUrl(url) {
30
30
  return url.replace(/&amp;/g, '&');
31
31
  }
32
- export default class DevopsStageAddEnvironment extends SfCommand {
32
+ export default class DevopsStageEnvironmentAdd extends SfCommand {
33
33
  static summary = messages.getMessage('summary');
34
34
  static description = messages.getMessage('description');
35
35
  static examples = messages.getMessages('examples');
@@ -62,7 +62,7 @@ export default class DevopsStageAddEnvironment extends SfCommand {
62
62
  }),
63
63
  };
64
64
  async run() {
65
- const { flags } = await this.parse(DevopsStageAddEnvironment);
65
+ const { flags } = await this.parse(DevopsStageEnvironmentAdd);
66
66
  const org = flags['target-org'];
67
67
  const connection = org.getConnection(flags['api-version']);
68
68
  const pipelineId = flags['pipeline-id'];
@@ -84,6 +84,11 @@ export default class DevopsStageAddEnvironment extends SfCommand {
84
84
  if (!stages.some((s) => s.Id === stageId)) {
85
85
  this.error(messages.getMessage('error.StageNotFound', [stageId, pipelineId]));
86
86
  }
87
+ const pipelineQueryResult = await connection.query(`SELECT IsActive FROM DevopsPipeline WHERE Id = '${pipelineId}' LIMIT 1`);
88
+ const pipelineRecord = (pipelineQueryResult.records ?? [])[0];
89
+ if (pipelineRecord?.IsActive) {
90
+ this.error(messages.getMessage('error.PipelineAlreadyActive', [pipelineId]));
91
+ }
87
92
  let result;
88
93
  try {
89
94
  result = await addStageEnvironment({
@@ -133,4 +138,4 @@ export default class DevopsStageAddEnvironment extends SfCommand {
133
138
  return result;
134
139
  }
135
140
  }
136
- //# sourceMappingURL=add-environment.js.map
141
+ //# sourceMappingURL=add.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add.js","sourceRoot":"","sources":["../../../../../src/commands/devops/stage/environment/add.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { Org } from '@salesforce/core';
2
2
  import { SfCommand } from '@salesforce/sf-plugins-core';
3
- import { UpdateWorkItemStatusResult } from '../../../../utils/updateWorkItemStatus.js';
4
- export default class DevopsWorkItemStatusUpdate extends SfCommand<UpdateWorkItemStatusResult> {
3
+ import { UpdateWorkItemResult } from '../../../utils/updateWorkItem.js';
4
+ export default class DevopsWorkItemUpdate extends SfCommand<UpdateWorkItemResult> {
5
5
  static readonly summary: string;
6
6
  static readonly description: string;
7
7
  static readonly examples: string[];
@@ -10,7 +10,9 @@ export default class DevopsWorkItemStatusUpdate extends SfCommand<UpdateWorkItem
10
10
  'api-version': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
11
  'work-item-name': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
12
  'work-item-id': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
- status: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
13
+ subject: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
14
+ description: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
15
+ status: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
14
16
  };
15
- run(): Promise<UpdateWorkItemStatusResult>;
17
+ run(): Promise<UpdateWorkItemResult>;
16
18
  }
@@ -15,11 +15,11 @@
15
15
  */
16
16
  import { Messages } from '@salesforce/core';
17
17
  import { SfCommand, Flags } from '@salesforce/sf-plugins-core';
18
- import { resolveWorkItemByName, resolveProjectIdForWorkItem, updateWorkItemStatus, ALLOWED_STATUSES, } from '../../../../utils/updateWorkItemStatus.js';
18
+ import { resolveWorkItemByName, resolveProjectIdForWorkItem, updateWorkItem, ALLOWED_STATUSES, } from '../../../utils/updateWorkItem.js';
19
19
  Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
20
- const messages = Messages.loadMessages('@salesforce/plugin-devops-center', 'devops.work-item.status.update');
20
+ const messages = Messages.loadMessages('@salesforce/plugin-devops-center', 'devops.work-item.update');
21
21
  const commonErrorMessages = Messages.loadMessages('@salesforce/plugin-devops-center', 'commonErrors');
22
- export default class DevopsWorkItemStatusUpdate extends SfCommand {
22
+ export default class DevopsWorkItemUpdate extends SfCommand {
23
23
  static summary = messages.getMessage('summary');
24
24
  static description = messages.getMessage('description');
25
25
  static examples = messages.getMessages('examples');
@@ -36,14 +36,22 @@ export default class DevopsWorkItemStatusUpdate extends SfCommand {
36
36
  char: 'w',
37
37
  exactlyOne: ['work-item-name', 'work-item-id'],
38
38
  }),
39
+ subject: Flags.string({
40
+ summary: messages.getMessage('flags.subject.summary'),
41
+ }),
42
+ description: Flags.string({
43
+ summary: messages.getMessage('flags.description.summary'),
44
+ }),
39
45
  status: Flags.string({
40
46
  summary: messages.getMessage('flags.status.summary'),
41
- required: true,
42
47
  options: [...ALLOWED_STATUSES],
43
48
  }),
44
49
  };
45
50
  async run() {
46
- const { flags } = await this.parse(DevopsWorkItemStatusUpdate);
51
+ const { flags } = await this.parse(DevopsWorkItemUpdate);
52
+ if (!flags['subject'] && !flags['description'] && !flags['status']) {
53
+ this.error(messages.getMessage('error.NoFieldsProvided'));
54
+ }
47
55
  const org = flags['target-org'];
48
56
  const connection = org.getConnection(flags['api-version']);
49
57
  let workItemId;
@@ -68,7 +76,14 @@ export default class DevopsWorkItemStatusUpdate extends SfCommand {
68
76
  }
69
77
  let result;
70
78
  try {
71
- result = await updateWorkItemStatus({ connection, workItemId, projectId, status: flags['status'] });
79
+ result = await updateWorkItem({
80
+ connection,
81
+ workItemId,
82
+ projectId,
83
+ status: flags['status'],
84
+ subject: flags['subject'],
85
+ description: flags['description'],
86
+ });
72
87
  }
73
88
  catch (error) {
74
89
  const errMsg = error instanceof Error ? error.message : String(error);
@@ -78,11 +93,17 @@ export default class DevopsWorkItemStatusUpdate extends SfCommand {
78
93
  throw error;
79
94
  }
80
95
  if (result.success) {
81
- const identifier = flags['work-item-name'] ?? result.workItemId;
82
- this.log(`Successfully updated status for work item ${identifier} to "${result.status ?? flags['status']}".`);
96
+ const identifier = flags['work-item-name'] ?? workItemId;
97
+ this.log(`Successfully updated work item ${identifier}.`);
98
+ if (result.subject !== undefined)
99
+ this.log(` Subject: ${result.subject}`);
100
+ if (result.description !== undefined)
101
+ this.log(` Description: ${result.description}`);
102
+ if (result.status !== undefined)
103
+ this.log(` Status: ${result.status}`);
83
104
  }
84
105
  else {
85
- this.error(`Failed to update work item status: ${result.error ?? ''}`);
106
+ this.error(`Failed to update work item: ${result.error ?? ''}`);
86
107
  }
87
108
  return result;
88
109
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../../src/commands/devops/work-item/update.ts"],"names":[],"mappings":"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"}
@@ -12,7 +12,8 @@ export type CreatePipelineParams = {
12
12
  repoType: string;
13
13
  createRepo?: boolean;
14
14
  repoOwner?: string;
15
- bitbucketProject?: string;
15
+ bitbucketWorkspace?: string;
16
+ bitbucketProjectKey?: string;
16
17
  };
17
18
  export type CreatePipelineResult = {
18
19
  success: boolean;
@@ -27,6 +28,18 @@ export type CreatePipelineResult = {
27
28
  * Detects repo type from a URL. Returns 'github' or 'bitbucket', or undefined.
28
29
  */
29
30
  export declare function detectRepoType(repoUrl: string): string | undefined;
31
+ /**
32
+ * Validates that a GitHub owner (org or user) exists.
33
+ * Primary: uses `gh api` which handles keyring-based auth automatically.
34
+ * Fallback: direct GitHub API call with token (for environments without gh CLI).
35
+ * Skips validation silently when neither mechanism can authenticate, so we
36
+ * don't block the command when the check itself is unavailable.
37
+ */
38
+ export declare function validateGitHubOwner(owner: string, token?: string, fetchFn?: typeof fetch): Promise<void>;
39
+ export declare class GitHubOwnerNotFoundError extends Error {
40
+ readonly owner: string;
41
+ constructor(owner: string);
42
+ }
30
43
  /**
31
44
  * Creates a new DevOps Center pipeline via the Connect API.
32
45
  * POST /services/data/v{version}/connect/devops/pipelines
@@ -13,6 +13,7 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
+ import { execSync } from 'node:child_process';
16
17
  const DEFAULT_STAGES = [{ name: 'Integration' }, { name: 'UAT' }, { name: 'Staging' }, { name: 'Production' }];
17
18
  /**
18
19
  * Detects repo type from a URL. Returns 'github' or 'bitbucket', or undefined.
@@ -25,12 +26,55 @@ export function detectRepoType(repoUrl) {
25
26
  return 'bitbucket';
26
27
  return undefined;
27
28
  }
29
+ /**
30
+ * Validates that a GitHub owner (org or user) exists.
31
+ * Primary: uses `gh api` which handles keyring-based auth automatically.
32
+ * Fallback: direct GitHub API call with token (for environments without gh CLI).
33
+ * Skips validation silently when neither mechanism can authenticate, so we
34
+ * don't block the command when the check itself is unavailable.
35
+ */
36
+ export async function validateGitHubOwner(owner, token, fetchFn = fetch) {
37
+ try {
38
+ execSync(`gh api users/${encodeURIComponent(owner)}`, {
39
+ encoding: 'utf-8',
40
+ stdio: ['pipe', 'pipe', 'pipe'],
41
+ });
42
+ return;
43
+ }
44
+ catch (e) {
45
+ const stderr = String(e.stderr ?? '');
46
+ const stdout = String(e.stdout ?? '');
47
+ if (stderr.includes('404') || stdout.includes('"Not Found"')) {
48
+ throw new GitHubOwnerNotFoundError(owner);
49
+ }
50
+ // gh not available or not authenticated — fall through to token-based check
51
+ }
52
+ if (!token)
53
+ return;
54
+ const response = await fetchFn(`https://api.github.com/users/${encodeURIComponent(owner)}`, {
55
+ headers: {
56
+ Accept: 'application/vnd.github+json',
57
+ 'X-GitHub-Api-Version': '2022-11-28',
58
+ Authorization: `Bearer ${token}`,
59
+ },
60
+ });
61
+ if (response.status === 404)
62
+ throw new GitHubOwnerNotFoundError(owner);
63
+ // 403 or other non-404: skip validation
64
+ }
65
+ export class GitHubOwnerNotFoundError extends Error {
66
+ owner;
67
+ constructor(owner) {
68
+ super(`GitHub owner "${owner}" does not exist`);
69
+ this.owner = owner;
70
+ }
71
+ }
28
72
  /**
29
73
  * Creates a new DevOps Center pipeline via the Connect API.
30
74
  * POST /services/data/v{version}/connect/devops/pipelines
31
75
  */
32
76
  export async function createPipeline(params) {
33
- const { connection, name, description, repo, repoType, createRepo, repoOwner, bitbucketProject } = params;
77
+ const { connection, name, description, repo, repoType, createRepo, repoOwner, bitbucketWorkspace, bitbucketProjectKey, } = params;
34
78
  const path = `/services/data/v${connection.getApiVersion()}/connect/devops/pipelines`;
35
79
  const payload = {
36
80
  name,
@@ -40,14 +84,16 @@ export async function createPipeline(params) {
40
84
  if (createRepo) {
41
85
  payload.createVcsRepo = true;
42
86
  payload.vcsRepoName = repo;
43
- payload.vcsRepoOwner = repoOwner;
44
- if (repoType === 'bitbucket' && repoOwner) {
45
- const providerInfo = { bitbucketWorkspace: repoOwner };
46
- if (bitbucketProject) {
47
- providerInfo.bitbucketProject = bitbucketProject;
87
+ if (repoType === 'bitbucket') {
88
+ const providerInfo = { bitbucketWorkspace: bitbucketWorkspace };
89
+ if (bitbucketProjectKey) {
90
+ providerInfo.bitbucketProjectKey = bitbucketProjectKey;
48
91
  }
49
92
  payload.repoProviderInfo = JSON.stringify(providerInfo);
50
93
  }
94
+ else {
95
+ payload.vcsRepoOwner = repoOwner;
96
+ }
51
97
  }
52
98
  else {
53
99
  payload.vcsRepoUrl = repo;
@@ -1 +1 @@
1
- {"version":3,"file":"createPipeline.js","sourceRoot":"","sources":["../../src/utils/createPipeline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAqCH,MAAM,cAAc,GAAG,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;AAE/G;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IACpC,IAAI,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC;QAAE,OAAO,QAAQ,CAAC;IAClD,IAAI,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC;QAAE,OAAO,WAAW,CAAC;IACxD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,MAA4B;IAC/D,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,gBAAgB,EAAE,GAAG,MAAM,CAAC;IAE1G,MAAM,IAAI,GAAG,mBAAmB,UAAU,CAAC,aAAa,EAAE,2BAA2B,CAAC;IAEtF,MAAM,OAAO,GAA4B;QACvC,IAAI;QACJ,OAAO,EAAE,QAAQ;QACjB,MAAM,EAAE,cAAc;KACvB,CAAC;IAEF,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;QAC7B,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;QAC3B,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;QAEjC,IAAI,QAAQ,KAAK,WAAW,IAAI,SAAS,EAAE,CAAC;YAC1C,MAAM,YAAY,GAA2B,EAAE,kBAAkB,EAAE,SAAS,EAAE,CAAC;YAC/E,IAAI,gBAAgB,EAAE,CAAC;gBACrB,YAAY,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;YACnD,CAAC;YACD,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAC5B,CAAC;IAED,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,CAAC,WAAW,GAAG,WAAW,CAAC;IACpC,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,OAAO,CAA0B;QAC7D,MAAM,EAAE,MAAM;QACd,GAAG,EAAE,IAAI;QACT,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;QAC7B,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;KAChD,CAAC,CAAC;IAEH,OAAO;QACL,OAAO,EAAE,IAAI;QACb,UAAU,EAAE,IAAI,CAAC,EAAE;QACnB,IAAI;QACJ,WAAW;QACX,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,UAAU;QACjC,UAAU,EAAE;YACV,OAAO,EAAE,IAAI;YACb,QAAQ;YACR,OAAO,EAAE,UAAU,IAAI,KAAK;SAC7B;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"createPipeline.js","sourceRoot":"","sources":["../../src/utils/createPipeline.ts"],"names":[],"mappings":"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"}
@@ -21,6 +21,7 @@ export async function createProject(params) {
21
21
  const result = await connection.sobject('DevopsProject').create({
22
22
  Name: name,
23
23
  Description: description || null,
24
+ IsActive: true,
24
25
  });
25
26
  if (result.success) {
26
27
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"createProject.js","sourceRoot":"","sources":["../../src/utils/createProject.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAkBH;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,MAA2B;IAC7D,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;IAEjD,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC;QAC9D,IAAI,EAAE,IAAI;QACV,WAAW,EAAE,WAAW,IAAI,IAAI;KACjC,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO;YACL,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,MAAM,CAAC,EAAE;YACpB,IAAI;YACJ,WAAW,EAAE,WAAW,IAAI,SAAS;SACtC,CAAC;IACJ,CAAC;IAED,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5G,OAAO;QACL,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,aAAa,IAAI,eAAe;KACxC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"createProject.js","sourceRoot":"","sources":["../../src/utils/createProject.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAkBH;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,MAA2B;IAC7D,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;IAEjD,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC;QAC9D,IAAI,EAAE,IAAI;QACV,WAAW,EAAE,WAAW,IAAI,IAAI;QAChC,QAAQ,EAAE,IAAI;KACf,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO;YACL,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,MAAM,CAAC,EAAE;YACpB,IAAI;YACJ,WAAW,EAAE,WAAW,IAAI,SAAS;SACtC,CAAC;IACJ,CAAC;IAED,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5G,OAAO;QACL,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,aAAa,IAAI,eAAe;KACxC,CAAC;AACJ,CAAC"}
@@ -6,32 +6,18 @@ export type WorkItemDetail = {
6
6
  branchName?: string;
7
7
  targetBranch?: string;
8
8
  projectId: string;
9
- repoOwner?: string;
10
- repoName?: string;
11
9
  provider?: string;
12
10
  };
13
- export type CreatePullRequestParams = {
14
- owner: string;
15
- repo: string;
16
- head: string;
17
- base: string;
18
- title: string;
19
- body?: string;
20
- provider: string;
21
- token: string;
22
- };
23
11
  export type CreatePullRequestResult = {
24
12
  success: boolean;
25
13
  workItemName?: string;
26
- title?: string;
27
14
  url?: string;
28
15
  sourceBranch?: string;
29
16
  targetBranch?: string;
30
17
  error?: string;
31
18
  };
32
19
  /**
33
- * Queries a work item (by Name or Id) and resolves all info needed
34
- * to create a pull request: branch, repo, owner, provider, and target branch.
20
+ * Queries a work item (by Name or Id) and resolves info needed to create a pull request.
35
21
  */
36
22
  export declare function fetchWorkItemDetail(connection: Connection, filter: {
37
23
  name: string;
@@ -39,11 +25,13 @@ export declare function fetchWorkItemDetail(connection: Connection, filter: {
39
25
  id: string;
40
26
  }): Promise<WorkItemDetail>;
41
27
  /**
42
- * Creates a pull request on GitHub or Bitbucket using their REST APIs.
28
+ * Creates a pull request via the Salesforce Connect API.
29
+ * POST /connect/devops/workItems/{workItemId}/review
30
+ * Salesforce handles VCS authentication and workspace resolution.
43
31
  */
44
- export declare function createPullRequest(params: CreatePullRequestParams): Promise<CreatePullRequestResult>;
32
+ export declare function createPullRequest(connection: Connection, workItemId: string): Promise<CreatePullRequestResult>;
45
33
  /**
46
- * Attempts to resolve a VCS authentication token from the environment
47
- * or the `gh` CLI (for GitHub).
34
+ * Attempts to resolve a GitHub authentication token from the environment or the gh CLI.
35
+ * Used by pipeline create for pre-flight owner validation.
48
36
  */
49
37
  export declare function resolveGitHubToken(): Promise<string | undefined>;