@salesforce/plugin-release-management 3.11.2 → 3.12.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.
@@ -0,0 +1,98 @@
1
+ import { Operation } from 'just-diff';
2
+ import { SfCommand } from '@salesforce/sf-plugins-core';
3
+ import { JsonMap } from '@salesforce/ts-types';
4
+ import { Interfaces } from '@oclif/core';
5
+ export type ArtifactsCompareResult = {
6
+ [plugin: string]: {
7
+ current: {
8
+ version: string;
9
+ snapshot: CommandSnapshot[];
10
+ schemas: Record<string, JsonMap>;
11
+ };
12
+ previous: {
13
+ version: string;
14
+ snapshot: CommandSnapshot[];
15
+ schemas: Record<string, JsonMap>;
16
+ };
17
+ snapshotChanges: SnapshotChanges;
18
+ schemaChanges: SchemaChanges;
19
+ };
20
+ };
21
+ type CommandSnapshot = {
22
+ command: string;
23
+ plugin: string;
24
+ flags: string[];
25
+ alias: string[];
26
+ args?: string[];
27
+ };
28
+ type SnapshotChanges = {
29
+ commandAdditions: string[];
30
+ commandRemovals: string[];
31
+ commands: Array<{
32
+ command: string;
33
+ aliasAdditions: string[];
34
+ aliasRemovals: string[];
35
+ flagAdditions: string[];
36
+ flagRemovals: string[];
37
+ hasChanges: boolean;
38
+ hasBreakingChanges: boolean;
39
+ }>;
40
+ hasChanges: boolean;
41
+ hasBreakingChanges: boolean;
42
+ };
43
+ type SchemaChanges = Array<{
44
+ op: Operation;
45
+ path: Array<string | number>;
46
+ value: unknown;
47
+ }>;
48
+ export declare class SnapshotComparator {
49
+ current: CommandSnapshot[];
50
+ previous: CommandSnapshot[];
51
+ constructor(current: CommandSnapshot[], previous: CommandSnapshot[]);
52
+ getChanges(): SnapshotChanges;
53
+ getCommandAdditions(): string[];
54
+ getCommandRemovals(): string[];
55
+ getFlagAdditions(cmd: string): string[];
56
+ getFlagRemovals(cmd: string): string[];
57
+ getAliasAdditions(cmd: string): string[];
58
+ getAliasRemovals(cmd: string): string[];
59
+ }
60
+ export declare class SchemaComparator {
61
+ private current;
62
+ private previous;
63
+ constructor(current: Record<string, JsonMap>, previous: Record<string, JsonMap>);
64
+ static makeReadable(current: Record<string, JsonMap>, previous: Record<string, JsonMap>, changes: SchemaChanges): Record<string, string[]>;
65
+ static hasBreakingChange(changes: SchemaChanges): boolean;
66
+ private static isMeaningless;
67
+ getChanges(): SchemaChanges;
68
+ }
69
+ export default class ArtifactsTest extends SfCommand<ArtifactsCompareResult> {
70
+ static readonly summary: string;
71
+ static readonly examples: string[];
72
+ static readonly flags: {
73
+ plugin: Interfaces.OptionFlag<string[], import("@oclif/core/lib/interfaces/parser").CustomOptions>;
74
+ previous: Interfaces.OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
75
+ current: Interfaces.OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
76
+ };
77
+ private octokit;
78
+ private currentPlugins;
79
+ private previousPlugins;
80
+ private flags;
81
+ private packageJson;
82
+ private versions;
83
+ private current;
84
+ private previous;
85
+ run(): Promise<ArtifactsCompareResult>;
86
+ private showResults;
87
+ private showRemovedPlugins;
88
+ private showAddedPlugins;
89
+ private resolveVersions;
90
+ private getCurrentPlugins;
91
+ private getPluginsForVersion;
92
+ private filterPlugins;
93
+ private getVersions;
94
+ private getSchemas;
95
+ private getSnapshot;
96
+ private getTags;
97
+ }
98
+ export {};
@@ -0,0 +1,453 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright (c) 2020, salesforce.com, inc.
4
+ * All rights reserved.
5
+ * Licensed under the BSD 3-Clause license.
6
+ * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.SchemaComparator = exports.SnapshotComparator = void 0;
10
+ const fs = require("fs");
11
+ const child_process_1 = require("child_process");
12
+ const node_util_1 = require("node:util");
13
+ const chalk = require("chalk");
14
+ const semver = require("semver");
15
+ const got_1 = require("got");
16
+ const just_diff_1 = require("just-diff");
17
+ const sf_plugins_core_1 = require("@salesforce/sf-plugins-core");
18
+ const core_1 = require("@salesforce/core");
19
+ const kit_1 = require("@salesforce/kit");
20
+ const core_2 = require("@octokit/core");
21
+ const plugin_paginate_rest_1 = require("@octokit/plugin-paginate-rest");
22
+ const ts_types_1 = require("@salesforce/ts-types");
23
+ const MyOctokit = core_2.Octokit.plugin(plugin_paginate_rest_1.paginateRest);
24
+ const exec = (0, node_util_1.promisify)(child_process_1.exec);
25
+ core_1.Messages.importMessagesDirectory(__dirname);
26
+ const messages = core_1.Messages.load('@salesforce/plugin-release-management', 'cli.artifacts.compare', [
27
+ 'summary',
28
+ 'examples',
29
+ 'error.BreakingChanges',
30
+ 'error.VersionNotFound',
31
+ 'error.InvalidVersions',
32
+ 'error.InvalidRepo',
33
+ 'flags.plugins.summary',
34
+ 'flags.current.summary',
35
+ 'flags.previous.summary',
36
+ ]);
37
+ async function getOwnerAndRepo(plugin) {
38
+ const result = await exec(`npm view ${plugin} repository.url --json`);
39
+ const parsed = JSON.parse(result.stdout)
40
+ .replace('git+https://github.com/', '')
41
+ .replace('.git', '')
42
+ .split('/');
43
+ return { owner: parsed[0], repo: parsed[1] };
44
+ }
45
+ async function getNpmVersions(plugin) {
46
+ const versions = await exec(`npm view ${plugin} versions --json`);
47
+ return semver.rsort(JSON.parse(versions.stdout));
48
+ }
49
+ function verifyCurrentIsNewer(current, previous) {
50
+ if (!current || !previous)
51
+ return;
52
+ if (semver.lt(current, previous)) {
53
+ throw new Error(messages.getMessage('error.InvalidVersions', [current, previous]));
54
+ }
55
+ }
56
+ class SnapshotComparator {
57
+ constructor(current, previous) {
58
+ this.current = current;
59
+ this.previous = previous;
60
+ }
61
+ getChanges() {
62
+ const commandAdditions = this.getCommandAdditions();
63
+ const commandRemovals = this.getCommandRemovals();
64
+ const commands = this.current
65
+ .map((cmd) => cmd.command)
66
+ .map((cmd) => {
67
+ const aliasAdditions = this.getAliasAdditions(cmd);
68
+ const aliasRemovals = this.getAliasRemovals(cmd);
69
+ const flagAdditions = this.getFlagAdditions(cmd);
70
+ const flagRemovals = this.getFlagRemovals(cmd);
71
+ return {
72
+ command: cmd,
73
+ aliasAdditions,
74
+ aliasRemovals,
75
+ flagAdditions,
76
+ flagRemovals,
77
+ hasChanges: Boolean(aliasAdditions.length || aliasRemovals.length || flagAdditions.length || flagRemovals.length),
78
+ hasBreakingChanges: Boolean(aliasRemovals.length || flagRemovals.length),
79
+ };
80
+ });
81
+ const hasRemovals = commands.find((cmd) => cmd.aliasRemovals.length > 0 || cmd.flagRemovals.length > 0);
82
+ const hasAdditions = commands.find((cmd) => cmd.aliasAdditions.length > 0 || cmd.flagAdditions.length > 0);
83
+ const hasChanges = Boolean(commandAdditions.length || commandRemovals.length || hasRemovals || hasAdditions);
84
+ const hasBreakingChanges = Boolean(commandRemovals.length || hasRemovals);
85
+ return {
86
+ commandAdditions: this.getCommandAdditions(),
87
+ commandRemovals: this.getCommandRemovals(),
88
+ commands,
89
+ hasChanges,
90
+ hasBreakingChanges,
91
+ };
92
+ }
93
+ getCommandAdditions() {
94
+ return this.current
95
+ .filter((cmd) => !this.previous.find((snapshot) => snapshot.command === cmd.command))
96
+ .map((cmd) => cmd.command);
97
+ }
98
+ getCommandRemovals() {
99
+ return this.previous
100
+ .filter((cmd) => !this.current.find((snapshot) => snapshot.command === cmd.command))
101
+ .map((cmd) => cmd.command);
102
+ }
103
+ getFlagAdditions(cmd) {
104
+ const current = this.current.find((snapshot) => snapshot.command === cmd);
105
+ const previous = this.previous.find((snapshot) => snapshot.command === cmd);
106
+ if (!current || !previous) {
107
+ return [];
108
+ }
109
+ return current.flags.filter((flag) => !previous.flags.includes(flag));
110
+ }
111
+ getFlagRemovals(cmd) {
112
+ const current = this.current.find((snapshot) => snapshot.command === cmd);
113
+ const previous = this.previous.find((snapshot) => snapshot.command === cmd);
114
+ if (!current || !previous) {
115
+ return [];
116
+ }
117
+ return previous.flags.filter((flag) => !current.flags.includes(flag));
118
+ }
119
+ getAliasAdditions(cmd) {
120
+ const current = this.current.find((snapshot) => snapshot.command === cmd);
121
+ const previous = this.previous.find((snapshot) => snapshot.command === cmd);
122
+ if (!current || !previous) {
123
+ return [];
124
+ }
125
+ return current.alias.filter((alias) => !previous.alias.includes(alias));
126
+ }
127
+ getAliasRemovals(cmd) {
128
+ const current = this.current.find((snapshot) => snapshot.command === cmd);
129
+ const previous = this.previous.find((snapshot) => snapshot.command === cmd);
130
+ if (!current || !previous) {
131
+ return [];
132
+ }
133
+ return previous.alias.filter((alias) => !current.alias.includes(alias));
134
+ }
135
+ }
136
+ exports.SnapshotComparator = SnapshotComparator;
137
+ class SchemaComparator {
138
+ constructor(current, previous) {
139
+ this.current = current;
140
+ this.previous = previous;
141
+ }
142
+ static makeReadable(current, previous, changes) {
143
+ const humanReadableChanges = {};
144
+ for (const change of changes) {
145
+ const lastPathElement = change.path[change.path.length - 1];
146
+ if (SchemaComparator.isMeaningless(lastPathElement))
147
+ continue;
148
+ const objPath = change.path.join('.');
149
+ const existing = (0, ts_types_1.get)(previous, objPath);
150
+ const latest = (0, ts_types_1.get)(current, objPath);
151
+ const [commandId] = objPath.split('.definitions');
152
+ const readablePath = objPath.replace(`${commandId}.`, '');
153
+ if (!humanReadableChanges[commandId]) {
154
+ humanReadableChanges[commandId] = [];
155
+ }
156
+ const lastElementIsNum = (0, ts_types_1.isNumber)(lastPathElement);
157
+ const basePath = lastElementIsNum ? readablePath.replace(`.${lastPathElement}`, '') : readablePath;
158
+ switch (change.op) {
159
+ case 'replace':
160
+ humanReadableChanges[commandId].push(`❌ ${chalk.underline(readablePath)} was ${chalk.red.bold('changed')} from ${chalk.cyan(existing)} to ${chalk.cyan(latest)}`);
161
+ break;
162
+ case 'add':
163
+ humanReadableChanges[commandId].push(lastElementIsNum
164
+ ? `- Array item at ${chalk.underline(basePath)} was ${chalk.cyan('added')} to current schema`
165
+ : `- ${chalk.underline(readablePath)} was ${chalk.cyan('added')} to current schema`);
166
+ break;
167
+ case 'remove':
168
+ humanReadableChanges[commandId].push(lastElementIsNum
169
+ ? `❌ Array item at ${chalk.underline(basePath)} was ${chalk.red.bold('not found')} in current schema`
170
+ : `❌ ${chalk.underline(readablePath)} was ${chalk.red.bold('not found')} in current schema`);
171
+ break;
172
+ default:
173
+ break;
174
+ }
175
+ }
176
+ return humanReadableChanges;
177
+ }
178
+ static hasBreakingChange(changes) {
179
+ return changes.some((change) => change.op === 'remove' || change.op === 'replace');
180
+ }
181
+ static isMeaningless(n) {
182
+ const meaninglessKeys = ['$comment', '__computed'];
183
+ return meaninglessKeys.includes(n);
184
+ }
185
+ getChanges() {
186
+ return (0, just_diff_1.diff)(this.previous, this.current);
187
+ }
188
+ }
189
+ exports.SchemaComparator = SchemaComparator;
190
+ class ArtifactsTest extends sf_plugins_core_1.SfCommand {
191
+ async run() {
192
+ const { flags } = await this.parse(ArtifactsTest);
193
+ this.flags = flags;
194
+ const auth = (0, ts_types_1.ensureString)(kit_1.env.getString('GH_TOKEN') ?? kit_1.env.getString('GITHUB_TOKEN'), 'The GH_TOKEN env var is required.');
195
+ this.octokit = new MyOctokit({ auth });
196
+ const fileData = await fs.promises.readFile('package.json', 'utf8');
197
+ this.packageJson = (0, kit_1.parseJson)(fileData);
198
+ if (!['@salesforce/cli', 'sfdx-cli'].includes(this.packageJson.name)) {
199
+ throw messages.createError('error.InvalidRepo');
200
+ }
201
+ this.versions = await getNpmVersions(this.packageJson.name);
202
+ this.resolveVersions();
203
+ verifyCurrentIsNewer(this.current, this.previous);
204
+ this.currentPlugins = await this.getCurrentPlugins();
205
+ this.previousPlugins = await this.getPluginsForVersion(this.previous);
206
+ const promises = Object.keys(this.currentPlugins).map(async (plugin) => {
207
+ const { owner, repo } = await getOwnerAndRepo(plugin);
208
+ const { current, previous } = await this.getVersions(plugin, owner, repo);
209
+ const currentSnapshot = await this.getSnapshot(owner, repo, current);
210
+ const previousSnapshot = await this.getSnapshot(owner, repo, previous);
211
+ const currentSchemas = await this.getSchemas(owner, repo, current);
212
+ const previousSchemas = await this.getSchemas(owner, repo, previous);
213
+ const schemaChanges = new SchemaComparator(currentSchemas, previousSchemas).getChanges();
214
+ return {
215
+ [plugin]: {
216
+ current: {
217
+ version: current,
218
+ snapshot: currentSnapshot,
219
+ schemas: currentSchemas,
220
+ },
221
+ previous: {
222
+ version: previous,
223
+ snapshot: previousSnapshot,
224
+ schemas: previousSchemas,
225
+ },
226
+ snapshotChanges: new SnapshotComparator(currentSnapshot, previousSnapshot).getChanges(),
227
+ schemaChanges,
228
+ },
229
+ };
230
+ });
231
+ const results = (await Promise.all(promises)).reduce((acc, result) => ({ ...acc, ...result }), {});
232
+ const summary = this.showResults(results);
233
+ this.styledHeader('Summary');
234
+ for (const [plugin, logs] of Object.entries(summary)) {
235
+ if (logs.length === 0)
236
+ this.log('✅', plugin, chalk.dim(`(${this.previousPlugins[plugin]} -> ${this.currentPlugins[plugin]})`));
237
+ else {
238
+ this.log();
239
+ this.log('❌', plugin, chalk.dim(`(${this.previousPlugins[plugin]} -> ${this.currentPlugins[plugin]})`));
240
+ for (const log of logs)
241
+ this.log(' -', log);
242
+ this.log();
243
+ }
244
+ }
245
+ this.log();
246
+ const removedPlugins = this.showRemovedPlugins();
247
+ this.log();
248
+ this.showAddedPlugins();
249
+ this.log();
250
+ const hasBreakingSnapshotChanges = Object.values(results).some((result) => result.snapshotChanges.hasBreakingChanges);
251
+ const hasBreakingSchemaChanges = Object.values(results).some((result) => SchemaComparator.hasBreakingChange(result.schemaChanges));
252
+ if (hasBreakingSnapshotChanges || hasBreakingSchemaChanges || removedPlugins.length > 0) {
253
+ throw messages.createError('error.BreakingChanges');
254
+ }
255
+ return results;
256
+ }
257
+ showResults(results) {
258
+ const summary = {};
259
+ for (const [plugin, result] of Object.entries(results)) {
260
+ summary[plugin] = [];
261
+ this.styledHeader(plugin);
262
+ this.log('Current:', result.current.version);
263
+ this.log('Previous:', result.previous.version);
264
+ this.log();
265
+ this.log(chalk.underline.cyan('Snapshot Changes'));
266
+ if (result.snapshotChanges.commandAdditions.length) {
267
+ this.log(chalk.dim('New Commands:'), result.snapshotChanges.commandAdditions);
268
+ }
269
+ if (result.snapshotChanges.commandRemovals.length) {
270
+ summary[plugin].push(`Removed commands: ${result.snapshotChanges.commandRemovals.join(', ')}`);
271
+ this.log(chalk.red('❌ Removed Commands:'), result.snapshotChanges.commandRemovals);
272
+ }
273
+ for (const cmd of result.snapshotChanges.commands) {
274
+ this.log(cmd.command, !cmd.hasChanges ? chalk.dim('No Changes') : '');
275
+ if (cmd.flagAdditions.length)
276
+ this.log(chalk.dim(' Flag Additions:'), cmd.flagAdditions);
277
+ if (cmd.flagRemovals.length) {
278
+ summary[plugin].push(`${cmd.command} flag removals: ${cmd.flagRemovals.join(', ')}`);
279
+ this.log(chalk.red(' ❌ Flag Removals:'), cmd.flagRemovals);
280
+ }
281
+ if (cmd.aliasAdditions.length)
282
+ this.log(chalk.dim(' Alias Additions:'), cmd.aliasAdditions);
283
+ if (cmd.aliasRemovals.length) {
284
+ summary[plugin].push(`${cmd.command} alias removals: ${cmd.aliasRemovals.join(', ')}`);
285
+ this.log(chalk.red(' ❌ Alias Removals:'), cmd.aliasRemovals);
286
+ }
287
+ }
288
+ this.log();
289
+ this.log(chalk.underline.cyan('Schema Changes'));
290
+ const humanReadableChanges = SchemaComparator.makeReadable(result.current.schemas, result.previous.schemas, result.schemaChanges);
291
+ if (Object.keys(humanReadableChanges).length === 0) {
292
+ this.log(chalk.dim('No changes have been detected.'));
293
+ }
294
+ for (const [commandId, readableChanges] of Object.entries(humanReadableChanges)) {
295
+ this.log();
296
+ this.log(commandId);
297
+ for (const change of readableChanges) {
298
+ if (change.startsWith('❌'))
299
+ summary[plugin].push(change.replace('❌', ''));
300
+ this.log(` ${change}`);
301
+ }
302
+ }
303
+ this.log();
304
+ }
305
+ return summary;
306
+ }
307
+ showRemovedPlugins() {
308
+ const removedPlugins = Object.keys(this.previousPlugins).filter((p) => !this.currentPlugins[p]);
309
+ if (removedPlugins.length > 0) {
310
+ this.styledHeader(chalk.red('Removed Plugins'));
311
+ for (const plugin of removedPlugins) {
312
+ this.log(plugin);
313
+ }
314
+ }
315
+ return removedPlugins;
316
+ }
317
+ showAddedPlugins() {
318
+ const addedPlugins = Object.keys(this.currentPlugins).filter((p) => !this.previousPlugins[p]);
319
+ if (addedPlugins.length > 0) {
320
+ this.styledHeader(chalk.green('Added Plugins'));
321
+ for (const plugin of addedPlugins) {
322
+ this.log(plugin);
323
+ }
324
+ }
325
+ return addedPlugins;
326
+ }
327
+ resolveVersions() {
328
+ this.current = this.flags.current || this.packageJson.version;
329
+ this.previous = this.flags.previous ?? this.versions[this.versions.indexOf(this.current) + 1];
330
+ this.log('Current Version:', this.current);
331
+ this.log('Previous Version:', this.previous);
332
+ if (this.flags.current && !this.versions.includes(this.flags.current)) {
333
+ throw messages.createError('error.VersionNotFound', [this.flags.current]);
334
+ }
335
+ if (this.flags.previous && !this.versions.includes(this.flags.previous)) {
336
+ throw messages.createError('error.VersionNotFound', [this.flags.previous]);
337
+ }
338
+ }
339
+ async getCurrentPlugins() {
340
+ return this.flags.current ? this.getPluginsForVersion(this.current) : this.filterPlugins(this.packageJson);
341
+ }
342
+ async getPluginsForVersion(version) {
343
+ const [owner, repo] = this.packageJson.repository.split('/');
344
+ const response = await this.octokit.request('GET /repos/{owner}/{repo}/contents/{path}', {
345
+ owner,
346
+ repo,
347
+ path: 'package.json',
348
+ accept: 'application/vnd.github.json',
349
+ ref: version,
350
+ });
351
+ // @ts-expect-error octokit doesn't have a type for this
352
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
353
+ const pJson = JSON.parse(Buffer.from(response.data.content ?? '', 'base64').toString());
354
+ return this.filterPlugins(pJson);
355
+ }
356
+ filterPlugins(packageJson) {
357
+ const pluginNames = [...(packageJson.oclif?.plugins || []), ...Object.keys(packageJson.oclif?.jitPlugins ?? {})];
358
+ const filtered = (this.flags.plugin ? pluginNames.filter((plugin) => this.flags.plugin?.includes(plugin)) : pluginNames).filter((plugin) => !plugin.startsWith('@oclif'));
359
+ return filtered.reduce((acc, plugin) => ({ ...acc, [plugin]: packageJson.dependencies[plugin] ?? packageJson.oclif.jitPlugins[plugin] }), {});
360
+ }
361
+ async getVersions(plugin, owner, repo) {
362
+ const tags = await this.getTags(owner, repo);
363
+ return {
364
+ current: this.currentPlugins[plugin]
365
+ ? tags.includes(this.currentPlugins[plugin])
366
+ ? this.currentPlugins[plugin]
367
+ : `v${this.currentPlugins[plugin]}`
368
+ : null,
369
+ previous: this.previousPlugins[plugin]
370
+ ? tags.includes(this.previousPlugins[plugin])
371
+ ? this.previousPlugins[plugin]
372
+ : `v${this.previousPlugins[plugin]}`
373
+ : null,
374
+ };
375
+ }
376
+ async getSchemas(owner, repo, ref) {
377
+ if (!ref)
378
+ return {};
379
+ try {
380
+ const schemas = await this.octokit.request('GET /repos/{owner}/{repo}/contents/{path}', {
381
+ owner,
382
+ repo,
383
+ path: 'schemas',
384
+ accept: 'application/vnd.github.json',
385
+ ref,
386
+ });
387
+ const schemaFiles = schemas.data.filter((f) => f.type === 'file');
388
+ const hasHookFiles = schemas.data.find((f) => f.name === 'hooks' && f.type === 'dir');
389
+ if (hasHookFiles) {
390
+ const hooks = await this.octokit.request('GET /repos/{owner}/{repo}/contents/{path}', {
391
+ owner,
392
+ repo,
393
+ path: 'schemas/hooks',
394
+ accept: 'application/vnd.github.json',
395
+ ref,
396
+ });
397
+ schemaFiles.push(...hooks.data.filter((f) => f.type === 'file'));
398
+ }
399
+ const files = schemaFiles.reduce((acc, file) => ({ ...acc, [file.name]: file.download_url }), {});
400
+ const promises = Object.entries(files).map(async ([name, url]) => {
401
+ const contents = await got_1.default.get(url, { followRedirect: true, responseType: 'json' });
402
+ return { [name.replace(/-/g, ':').replace(/__/g, '-').replace('.json', '')]: contents.body };
403
+ });
404
+ return (await Promise.all(promises)).reduce((acc, result) => ({ ...acc, ...result }), {});
405
+ }
406
+ catch {
407
+ this.warn(`No schemas found for ${owner}/${repo}@${ref}`);
408
+ return {};
409
+ }
410
+ }
411
+ async getSnapshot(owner, repo, ref) {
412
+ if (!ref)
413
+ return [];
414
+ const response = await this.octokit.request('GET /repos/{owner}/{repo}/contents/{path}', {
415
+ owner,
416
+ repo,
417
+ path: 'command-snapshot.json',
418
+ accept: 'application/vnd.github.json',
419
+ ref,
420
+ });
421
+ // @ts-expect-error octokit doesn't have a type for this
422
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
423
+ return JSON.parse(Buffer.from(response.data.content ?? '', 'base64').toString());
424
+ }
425
+ async getTags(owner, repo) {
426
+ const response = await this.octokit.paginate('GET /repos/{owner}/{repo}/tags', {
427
+ owner,
428
+ repo,
429
+ // eslint-disable-next-line camelcase
430
+ per_page: 100,
431
+ });
432
+ return response.map((tag) => tag.name);
433
+ }
434
+ }
435
+ exports.default = ArtifactsTest;
436
+ ArtifactsTest.summary = messages.getMessage('summary');
437
+ ArtifactsTest.examples = messages.getMessages('examples');
438
+ ArtifactsTest.flags = {
439
+ plugin: sf_plugins_core_1.Flags.string({
440
+ char: 'p',
441
+ multiple: true,
442
+ summary: messages.getMessage('flags.plugins.summary'),
443
+ }),
444
+ previous: sf_plugins_core_1.Flags.string({
445
+ char: 'r',
446
+ summary: messages.getMessage('flags.previous.summary'),
447
+ }),
448
+ current: sf_plugins_core_1.Flags.string({
449
+ char: 'c',
450
+ summary: messages.getMessage('flags.current.summary'),
451
+ }),
452
+ };
453
+ //# sourceMappingURL=compare.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compare.js","sourceRoot":"","sources":["../../../../src/commands/cli/artifacts/compare.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ {
2
+ "summary": "Look for breaking changes in artifacts (schemas and snapshots) from plugins. Must be run in CLI directory.",
3
+ "examples": ["<%= config.bin %> <%= command.id %>"],
4
+ "error.BreakingChanges": "Breaking changes found in artifacts",
5
+ "flags.plugins.summary": "List of plugins to check for breaking changes.",
6
+ "flags.previous.summary": "Previous CLI version to compare against. Defaults to the last published version.",
7
+ "flags.current.summary": "Current CLI version to compare against. Defaults to the version on the CLI in the current directory.",
8
+ "error.VersionNotFound": "Version not found: %s.",
9
+ "error.InvalidVersions": "Current version %s must be newer than previous version %s.",
10
+ "error.InvalidRepo": "This command must be run from the root directory of @salesforce/cli or sfdx-cli."
11
+ }
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "3.11.2",
2
+ "version": "3.12.0",
3
3
  "commands": {
4
4
  "channel:promote": {
5
5
  "id": "channel:promote",
@@ -501,6 +501,49 @@
501
501
  },
502
502
  "args": {}
503
503
  },
504
+ "cli:artifacts:compare": {
505
+ "id": "cli:artifacts:compare",
506
+ "summary": "Look for breaking changes in artifacts (schemas and snapshots) from plugins. Must be run in CLI directory.",
507
+ "strict": true,
508
+ "pluginName": "@salesforce/plugin-release-management",
509
+ "pluginAlias": "@salesforce/plugin-release-management",
510
+ "pluginType": "core",
511
+ "aliases": [],
512
+ "examples": [
513
+ "<%= config.bin %> <%= command.id %>"
514
+ ],
515
+ "flags": {
516
+ "json": {
517
+ "name": "json",
518
+ "type": "boolean",
519
+ "description": "Format output as json.",
520
+ "helpGroup": "GLOBAL",
521
+ "allowNo": false
522
+ },
523
+ "plugin": {
524
+ "name": "plugin",
525
+ "type": "option",
526
+ "char": "p",
527
+ "summary": "List of plugins to check for breaking changes.",
528
+ "multiple": true
529
+ },
530
+ "previous": {
531
+ "name": "previous",
532
+ "type": "option",
533
+ "char": "r",
534
+ "summary": "Previous CLI version to compare against. Defaults to the last published version.",
535
+ "multiple": false
536
+ },
537
+ "current": {
538
+ "name": "current",
539
+ "type": "option",
540
+ "char": "c",
541
+ "summary": "Current CLI version to compare against. Defaults to the version on the CLI in the current directory.",
542
+ "multiple": false
543
+ }
544
+ },
545
+ "args": {}
546
+ },
504
547
  "cli:install:test": {
505
548
  "id": "cli:install:test",
506
549
  "summary": "install sf or sfdx",
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@salesforce/plugin-release-management",
3
3
  "description": "A plugin for preparing and publishing npm packages",
4
- "version": "3.11.2",
4
+ "version": "3.12.0",
5
5
  "author": "Salesforce",
6
6
  "bugs": "https://github.com/forcedotcom/cli/issues",
7
7
  "bin": {
@@ -10,6 +10,7 @@
10
10
  "dependencies": {
11
11
  "@oclif/core": "^2.0.9",
12
12
  "@octokit/core": "^4.1.0",
13
+ "@octokit/plugin-paginate-rest": "^6.0.0",
13
14
  "@salesforce/core": "^3.32.12",
14
15
  "@salesforce/kit": "^1.8.2",
15
16
  "@salesforce/plugin-command-reference": "^2.2.8",
@@ -24,6 +25,7 @@
24
25
  "conventional-commits-parser": "^3.2.2",
25
26
  "fast-glob": "^3.2.12",
26
27
  "got": "^11.8.6",
28
+ "just-diff": "^5.2.0",
27
29
  "proxy-agent": "^5.0.0",
28
30
  "proxy-from-env": "^1.1.0",
29
31
  "semver": "^7.3.8",
@@ -117,6 +119,9 @@
117
119
  },
118
120
  "schemas": {
119
121
  "description": "utilities for comparing command schemas"
122
+ },
123
+ "artifacts": {
124
+ "description": "utilities for comparing plugin artifacts"
120
125
  }
121
126
  }
122
127
  },
@@ -276,7 +281,7 @@
276
281
  }
277
282
  },
278
283
  "sfdx": {
279
- "publicKeyUrl": "https://developer.salesforce.com/media/salesforce-cli/security/@salesforce/plugin-release-management/3.11.2.crt",
280
- "signatureUrl": "https://developer.salesforce.com/media/salesforce-cli/security/@salesforce/plugin-release-management/3.11.2.sig"
284
+ "publicKeyUrl": "https://developer.salesforce.com/media/salesforce-cli/security/@salesforce/plugin-release-management/3.12.0.crt",
285
+ "signatureUrl": "https://developer.salesforce.com/media/salesforce-cli/security/@salesforce/plugin-release-management/3.12.0.sig"
281
286
  }
282
287
  }