@jayree/sfdx-plugin-manifest 3.0.18 → 3.1.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.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,26 @@
1
+ # [3.1.0](https://github.com/jayree/sfdx-plugin-manifest/compare/v3.0.19...v3.1.0) (2023-05-23)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * **deps:** bump @salesforce/sf-plugins-core from 2.4.3 to 3.0.1 ([#721](https://github.com/jayree/sfdx-plugin-manifest/issues/721)) ([8398c1a](https://github.com/jayree/sfdx-plugin-manifest/commit/8398c1a211fe33d22eeaf8c1657ef849717758e3))
7
+ * **deps:** bump @salesforce/source-deploy-retrieve from 8.5.1 to 8.5.3 ([#720](https://github.com/jayree/sfdx-plugin-manifest/issues/720)) ([8c660d8](https://github.com/jayree/sfdx-plugin-manifest/commit/8c660d8240c4d99c928a775a539626b81814ec91))
8
+
9
+
10
+ ### Features
11
+
12
+ * remove legacy:git:diff ([a1453b6](https://github.com/jayree/sfdx-plugin-manifest/commit/a1453b68369dcb8cb940d0092e60e9f890781a1c))
13
+
14
+ ## [3.0.19](https://github.com/jayree/sfdx-plugin-manifest/compare/v3.0.18...v3.0.19) (2023-05-19)
15
+
16
+
17
+ ### Bug Fixes
18
+
19
+ * **deps:** bump @salesforce/sf-plugins-core from 2.4.2 to 2.4.3 ([#710](https://github.com/jayree/sfdx-plugin-manifest/issues/710)) ([3ffac16](https://github.com/jayree/sfdx-plugin-manifest/commit/3ffac169289a2e4c4b6526615bf662e7a2fd18e3))
20
+ * **deps:** bump @salesforce/source-deploy-retrieve from 8.4.0 to 8.5.1 ([#705](https://github.com/jayree/sfdx-plugin-manifest/issues/705)) ([32b8980](https://github.com/jayree/sfdx-plugin-manifest/commit/32b8980ad7188dfed455e41c43da022a1d11cf4b))
21
+ * **deps:** bump listr2 from 6.4.2 to 6.6.0 ([#704](https://github.com/jayree/sfdx-plugin-manifest/issues/704)) ([9032c8c](https://github.com/jayree/sfdx-plugin-manifest/commit/9032c8c373262e90b3a16adfc697d529ec659f22))
22
+ * **deps:** bump tslib from 2.5.0 to 2.5.2 ([#708](https://github.com/jayree/sfdx-plugin-manifest/issues/708)) ([0c8b8c1](https://github.com/jayree/sfdx-plugin-manifest/commit/0c8b8c1b322e6578e35662d2442092bcfdaf6ba2))
23
+
1
24
  ## [3.0.18](https://github.com/jayree/sfdx-plugin-manifest/compare/v3.0.17...v3.0.18) (2023-05-17)
2
25
 
3
26
 
package/README.md CHANGED
@@ -20,7 +20,6 @@ sfdx plugins:install @jayree/sfdx-plugin-manifest
20
20
  * [`sfdx jayree:manifest:cleanup`](#sfdx-jayreemanifestcleanup)
21
21
  * [`sfdx jayree:manifest:generate`](#sfdx-jayreemanifestgenerate)
22
22
  * [`sfdx jayree:manifest:git:diff`](#sfdx-jayreemanifestgitdiff)
23
- * [`sfdx jayree:manifest:legacy:git:diff`](#sfdx-jayreemanifestlegacygitdiff)
24
23
 
25
24
  ### `sfdx jayree:manifest:cleanup`
26
25
 
@@ -48,7 +47,7 @@ EXAMPLES
48
47
  $ sfdx jayree:manifest:cleanup --manifest=package.xml --file=packageignore.xml
49
48
  ```
50
49
 
51
- _See code: [src/commands/jayree/manifest/cleanup.ts](https://github.com/jayree/sfdx-plugin-manifest/blob/v3.0.18/src/commands/jayree/manifest/cleanup.ts)_
50
+ _See code: [src/commands/jayree/manifest/cleanup.ts](https://github.com/jayree/sfdx-plugin-manifest/blob/v3.1.0/src/commands/jayree/manifest/cleanup.ts)_
52
51
 
53
52
  ### `sfdx jayree:manifest:generate`
54
53
 
@@ -84,7 +83,7 @@ EXAMPLES
84
83
  <Package xmlns='http://soap.sforce.com/2006/04/metadata'>...</Package>
85
84
  ```
86
85
 
87
- _See code: [src/commands/jayree/manifest/generate.ts](https://github.com/jayree/sfdx-plugin-manifest/blob/v3.0.18/src/commands/jayree/manifest/generate.ts)_
86
+ _See code: [src/commands/jayree/manifest/generate.ts](https://github.com/jayree/sfdx-plugin-manifest/blob/v3.1.0/src/commands/jayree/manifest/generate.ts)_
88
87
 
89
88
  ### `sfdx jayree:manifest:git:diff`
90
89
 
@@ -166,83 +165,5 @@ FLAG DESCRIPTIONS
166
165
  The location can be an absolute path or relative to the current working directory.
167
166
  ```
168
167
 
169
- _See code: [src/commands/jayree/manifest/git/diff.ts](https://github.com/jayree/sfdx-plugin-manifest/blob/v3.0.18/src/commands/jayree/manifest/git/diff.ts)_
170
-
171
- ### `sfdx jayree:manifest:legacy:git:diff`
172
-
173
- Create a project manifest and destructiveChanges manifest that lists the metadata components you want to deploy or delete based on changes in your git history.
174
-
175
- ```
176
- USAGE
177
- $ sfdx jayree:manifest:legacy:git:diff REF1 [REF2] [--json] [-d <value>] [--output-dir <value>]
178
- [--destructive-changes-only]
179
-
180
- ARGUMENTS
181
- REF1 Base commit or branch.
182
- REF2 Commit or branch to compare to the base commit.
183
-
184
- FLAGS
185
- -d, --source-dir=<value>... Path to the local source files to include in the manifest.
186
- --destructive-changes-only Create a destructiveChanges manifest only.
187
- --output-dir=<value> Directory to save the created manifest files.
188
-
189
- GLOBAL FLAGS
190
- --json Format output as json.
191
-
192
- DESCRIPTION
193
- Create a project manifest and destructiveChanges manifest that lists the metadata components you want to deploy or
194
- delete based on changes in your git history.
195
-
196
- Use this command to create a manifest and destructiveChanges manifest file based on the difference (git diff) of two
197
- git refs.
198
-
199
- You can use all ways to spell <commit> which are valid for 'git diff' (See https://git-scm.com/docs/git-diff).
200
-
201
- EXAMPLES
202
- Uses the changes between two arbitrary <commit>.
203
-
204
- $ sfdx jayree:manifest:legacy:git:diff <commit> <commit>
205
- $ sfdx jayree:manifest:legacy:git:diff <commit>..<commit>
206
-
207
- Uses the changes on the branch containing and up to the second <commit>, starting at a common ancestor of both
208
- <commit>.
209
-
210
- $ sfdx jayree:manifest:legacy:git:diff <commit>...<commit>
211
-
212
- Uses the diff of what is unique in branchB (REF2) and unique in branchA (REF1).
213
-
214
- $ sfdx jayree:manifest:legacy:git:diff branchA..branchB
215
-
216
- Uses the diff of what is unique in branchB (REF2).
217
-
218
- $ sfdx jayree:manifest:legacy:git:diff branchA...branchB
219
-
220
- Specify the flags before or after the REF args
221
-
222
- $ sfdx jayree:manifest:legacy:git:diff --output-dir package <commit> <commit>
223
- $ sfdx jayree:manifest:legacy:git:diff <commit> <commit> --output-dir package
224
-
225
- If you specify the 'source-dir' flag before the REF args, use '--' to separate the args from the 'source-dir'
226
- values.
227
-
228
- $ sfdx jayree:manifest:legacy:git:diff --source-dir force-app -- <commit> <commit>
229
-
230
- FLAG DESCRIPTIONS
231
- -d, --source-dir=<value>... Path to the local source files to include in the manifest.
232
-
233
- The supplied path can be to a single file (in which case the operation is applied to only one file) or to a folder
234
- (in which case the operation is applied to all metadata types in the directory and its subdirectories).
235
-
236
- You can specify this flag more than once.
237
-
238
- --destructive-changes-only Create a destructiveChanges manifest only.
239
-
240
- Use this flag to create a 'destructiveChanges.xml' and a blank 'package.xml'.
241
-
242
- --output-dir=<value> Directory to save the created manifest files.
243
-
244
- The location can be an absolute path or relative to the current working directory.
245
- ```
246
-
247
- _See code: [src/commands/jayree/manifest/legacy/git/diff.ts](https://github.com/jayree/sfdx-plugin-manifest/blob/v3.0.18/src/commands/jayree/manifest/legacy/git/diff.ts)_
168
+ _See code: [src/commands/jayree/manifest/git/diff.ts](https://github.com/jayree/sfdx-plugin-manifest/blob/v3.1.0/src/commands/jayree/manifest/git/diff.ts)_
248
169
  <!-- commandsstop -->
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "3.0.18",
2
+ "version": "3.1.0",
3
3
  "commands": {
4
4
  "jayree:manifest:cleanup": {
5
5
  "id": "jayree:manifest:cleanup",
@@ -248,80 +248,6 @@
248
248
  }
249
249
  },
250
250
  "requiresProject": true
251
- },
252
- "jayree:manifest:legacy:git:diff": {
253
- "id": "jayree:manifest:legacy:git:diff",
254
- "summary": "Create a project manifest and destructiveChanges manifest that lists the metadata components you want to deploy or delete based on changes in your git history.",
255
- "description": "Use this command to create a manifest and destructiveChanges manifest file based on the difference (git diff) of two git refs.\n\nYou can use all ways to spell <commit> which are valid for 'git diff' (See https://git-scm.com/docs/git-diff).",
256
- "strict": true,
257
- "pluginName": "@jayree/sfdx-plugin-manifest",
258
- "pluginAlias": "@jayree/sfdx-plugin-manifest",
259
- "pluginType": "core",
260
- "aliases": [],
261
- "examples": [
262
- "Uses the changes between two arbitrary <commit>.\n<%= config.bin %> <%= command.id %> <commit> <commit>\n<%= config.bin %> <%= command.id %> <commit>..<commit>",
263
- "Uses the changes on the branch containing and up to the second <commit>, starting at a common ancestor of both <commit>.\n<%= config.bin %> <%= command.id %> <commit>...<commit>",
264
- "Uses the diff of what is unique in branchB (REF2) and unique in branchA (REF1).\n<%= config.bin %> <%= command.id %> branchA..branchB",
265
- "Uses the diff of what is unique in branchB (REF2).\n<%= config.bin %> <%= command.id %> branchA...branchB",
266
- "Specify the flags before or after the REF args\n<%= config.bin %> <%= command.id %> --output-dir package <commit> <commit>\n<%= config.bin %> <%= command.id %> <commit> <commit> --output-dir package",
267
- "If you specify the 'source-dir' flag before the REF args, use '--' to separate the args from the 'source-dir' values.\n<%= config.bin %> <%= command.id %> --source-dir force-app -- <commit> <commit>"
268
- ],
269
- "flags": {
270
- "json": {
271
- "name": "json",
272
- "type": "boolean",
273
- "description": "Format output as json.",
274
- "helpGroup": "GLOBAL",
275
- "allowNo": false
276
- },
277
- "source-dir": {
278
- "name": "source-dir",
279
- "type": "option",
280
- "char": "d",
281
- "summary": "Path to the local source files to include in the manifest.",
282
- "description": "The supplied path can be to a single file (in which case the operation is applied to only one file) or to a folder (in which case the operation is applied to all metadata types in the directory and its subdirectories).\n\nYou can specify this flag more than once.",
283
- "multiple": true,
284
- "aliases": [
285
- "sourcepath",
286
- "p"
287
- ],
288
- "delimiter": ","
289
- },
290
- "output-dir": {
291
- "name": "output-dir",
292
- "type": "option",
293
- "summary": "Directory to save the created manifest files.",
294
- "description": "The location can be an absolute path or relative to the current working directory.",
295
- "multiple": false,
296
- "default": "",
297
- "aliases": [
298
- "outputdir",
299
- "o"
300
- ]
301
- },
302
- "destructive-changes-only": {
303
- "name": "destructive-changes-only",
304
- "type": "boolean",
305
- "summary": "Create a destructiveChanges manifest only.",
306
- "description": "Use this flag to create a 'destructiveChanges.xml' and a blank 'package.xml'.",
307
- "allowNo": false,
308
- "aliases": [
309
- "destructivechangesonly"
310
- ]
311
- }
312
- },
313
- "args": {
314
- "ref1": {
315
- "name": "ref1",
316
- "description": "Base commit or branch.",
317
- "required": true
318
- },
319
- "ref2": {
320
- "name": "ref2",
321
- "description": "Commit or branch to compare to the base commit."
322
- }
323
- },
324
- "requiresProject": true
325
251
  }
326
252
  }
327
253
  }
package/package.json CHANGED
@@ -1,39 +1,38 @@
1
1
  {
2
2
  "name": "@jayree/sfdx-plugin-manifest",
3
3
  "description": "A Salesforce CLI plugin containing commands for creating manifest files from Salesforce orgs or git commits of sfdx projects.",
4
- "version": "3.0.18",
4
+ "version": "3.1.0",
5
5
  "author": "jayree",
6
6
  "type": "module",
7
7
  "bugs": "https://github.com/jayree/sfdx-plugin-manifest/issues",
8
8
  "dependencies": {
9
9
  "@jayree/changelog": "^1.1.1",
10
- "@salesforce/sf-plugins-core": "^2.4.2",
11
- "@salesforce/source-deploy-retrieve": "^8.4.0",
10
+ "@salesforce/sf-plugins-core": "^3.0.1",
11
+ "@salesforce/source-deploy-retrieve": "^8.5.3",
12
12
  "debug": "^4.3.4",
13
13
  "fast-deep-equal": "^3.1.3",
14
14
  "fast-xml-parser": "^4.2.2",
15
15
  "fs-extra": "^11.1.1",
16
16
  "graceful-fs": "^4.2.11",
17
17
  "isomorphic-git": "^1.23.0",
18
- "listr2": "^6.4.2",
19
- "tslib": "^2.5.0"
18
+ "tslib": "^2.5.2"
20
19
  },
21
20
  "devDependencies": {
22
- "@oclif/plugin-command-snapshot": "^3.3.14",
21
+ "@oclif/plugin-command-snapshot": "^4.0.2",
23
22
  "@oclif/plugin-help": "^5.2.9",
24
23
  "@salesforce/dev-config": "^4.0.1",
25
24
  "@salesforce/dev-scripts": "^5.0.1",
26
- "@salesforce/prettier-config": "^0.0.2",
27
- "@salesforce/ts-sinon": "^1.4.6",
28
- "@types/debug": "^4.1.7",
25
+ "@salesforce/prettier-config": "^0.0.3",
26
+ "@salesforce/ts-sinon": "^1.4.7",
27
+ "@types/debug": "^4.1.8",
29
28
  "@types/fs-extra": "^11.0.1",
30
29
  "@types/graceful-fs": "^4.1.6",
31
30
  "@types/inquirer": "^9.0.3",
32
- "@typescript-eslint/eslint-plugin": "^5.59.5",
33
- "@typescript-eslint/parser": "^5.59.5",
31
+ "@typescript-eslint/eslint-plugin": "^5.59.7",
32
+ "@typescript-eslint/parser": "^5.59.7",
34
33
  "c8": "^7.13.0",
35
34
  "chai": "^4.3.7",
36
- "eslint": "^8.40.0",
35
+ "eslint": "^8.41.0",
37
36
  "eslint-config-oclif": "^4.0",
38
37
  "eslint-config-prettier": "^8.8.0",
39
38
  "eslint-config-salesforce": "^2.0.1",
@@ -41,9 +40,9 @@
41
40
  "eslint-config-salesforce-typescript": "^1.1.1",
42
41
  "eslint-plugin-header": "^3.1.1",
43
42
  "eslint-plugin-import": "2.27.5",
44
- "eslint-plugin-jsdoc": "^43.2.0",
43
+ "eslint-plugin-jsdoc": "^44.2.5",
45
44
  "eslint-plugin-prettier": "^4.2.1",
46
- "eslint-plugin-sf-plugin": "^1.15.2",
45
+ "eslint-plugin-sf-plugin": "^1.15.3",
47
46
  "husky": "^8.0.3",
48
47
  "is-ci": "^3.0.1",
49
48
  "mocha": "^10.2.0",
@@ -53,7 +52,7 @@
53
52
  "prettier": "^2.8.8",
54
53
  "pretty-quick": "^3.1.3",
55
54
  "shx": "^0.3.4",
56
- "sinon": "15.0.4",
55
+ "sinon": "15.1.0",
57
56
  "ts-node": "^10.9.1",
58
57
  "typescript": "^5.0.4",
59
58
  "wireit": "^0.9.5"
@@ -98,14 +97,6 @@
98
97
  "subtopics": {
99
98
  "git": {
100
99
  "description": "generate manifest files based on git data"
101
- },
102
- "legacy": {
103
- "description": "legacy commands",
104
- "subtopics": {
105
- "git": {
106
- "description": "generate manifest files based on git data"
107
- }
108
- }
109
100
  }
110
101
  }
111
102
  }
@@ -1,37 +0,0 @@
1
- import { SfCommand } from '@salesforce/sf-plugins-core';
2
- import { Optional } from '@salesforce/ts-types';
3
- export interface GitDiffCommandResult {
4
- destructiveChanges: object;
5
- manifest: object;
6
- }
7
- export default class GitDiff extends SfCommand<GitDiffCommandResult> {
8
- static readonly summary: string;
9
- static readonly description: string;
10
- static readonly examples: string[];
11
- static readonly args: {
12
- ref1: import("@oclif/core/lib/interfaces/parser").Arg<string, Record<string, unknown>>;
13
- ref2: import("@oclif/core/lib/interfaces/parser").Arg<string | undefined, Record<string, unknown>>;
14
- };
15
- static readonly requiresProject = true;
16
- static readonly flags: {
17
- 'source-dir': import("@oclif/core/lib/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
18
- 'output-dir': import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
19
- 'destructive-changes-only': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
20
- };
21
- private isOutputEnabled;
22
- private outputDir;
23
- private destructiveChangesOnly;
24
- private projectRoot;
25
- private sourceApiVersion;
26
- private destructiveChanges;
27
- private manifest;
28
- private gitLines;
29
- private ref1VirtualTreeContainer;
30
- private ref2VirtualTreeContainer;
31
- private componentSet;
32
- private outputErrors;
33
- private outputWarnings;
34
- private fsPaths;
35
- run(): Promise<GitDiffCommandResult>;
36
- protected getSourceApiVersion(): Promise<Optional<string>>;
37
- }
@@ -1,649 +0,0 @@
1
- /*
2
- * Copyright (c) 2022, jayree
3
- * All rights reserved.
4
- * Licensed under the BSD 3-Clause license.
5
- * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
6
- */
7
- import { join, basename, sep, posix, dirname, relative, resolve } from 'node:path';
8
- import { fileURLToPath } from 'node:url';
9
- import { format } from 'node:util';
10
- import { SfCommand, Flags, arrayWithDeprecation } from '@salesforce/sf-plugins-core';
11
- import { Messages, SfError, SfProject } from '@salesforce/core';
12
- import { Args } from '@oclif/core';
13
- import fs from 'fs-extra';
14
- import { ListrLogger, Listr, PRESET_TIMER } from 'listr2';
15
- import { env } from '@salesforce/kit';
16
- import { getString } from '@salesforce/ts-types';
17
- import equal from 'fast-deep-equal';
18
- import { ComponentSet, RegistryAccess, registry, VirtualTreeContainer, MetadataResolver, DestructiveChangesType, } from '@salesforce/source-deploy-retrieve';
19
- import { parseMetadataXml } from '@salesforce/source-deploy-retrieve/lib/src/utils/index.js';
20
- import Debug from 'debug';
21
- import git from 'isomorphic-git';
22
- // eslint-disable-next-line no-underscore-dangle
23
- const __filename = fileURLToPath(import.meta.url);
24
- // eslint-disable-next-line no-underscore-dangle
25
- const __dirname = dirname(__filename);
26
- Messages.importMessagesDirectory(__dirname);
27
- const messages = Messages.loadMessages('@jayree/sfdx-plugin-manifest', 'gitdiff');
28
- const logger = new ListrLogger({ useIcons: false });
29
- const debug = Debug('jayree:manifest:git:diff');
30
- const registryAccess = new RegistryAccess();
31
- class GitDiff extends SfCommand {
32
- async run() {
33
- const { flags, args } = await this.parse(GitDiff);
34
- const sourcepath = flags['source-dir'];
35
- this.destructiveChangesOnly = flags['destructive-changes-only'];
36
- this.outputDir = flags['output-dir'];
37
- this.projectRoot = this.project.getPath();
38
- this.sourceApiVersion = (await this.getSourceApiVersion());
39
- this.destructiveChanges = join(this.outputDir, 'destructiveChanges.xml');
40
- this.manifest = join(this.outputDir, 'package.xml');
41
- debug({
42
- outputDir: this.outputDir,
43
- projectRoot: this.projectRoot,
44
- });
45
- const isContentTypeJSON = env.getString('SFDX_CONTENT_TYPE', '').toUpperCase() === 'JSON';
46
- this.isOutputEnabled = !(this.argv.find((arg) => arg === '--json') ?? isContentTypeJSON);
47
- const gitArgs = await getGitArgsFromArgv(args.ref1, args.ref2, this.argv, this.projectRoot);
48
- debug({ gitArgs });
49
- const tasks = new Listr([
50
- {
51
- title: `Execute 'git --no-pager diff --name-status --no-renames ${gitArgs.refString}'`,
52
- task: async (ctx, task) => {
53
- const { gitlines, warnings } = await getGitDiff(gitArgs.ref1, gitArgs.ref2, this.projectRoot);
54
- this.gitLines = gitlines;
55
- this.outputWarnings = warnings;
56
- task.output = `Changed files: ${this.gitLines.length}`;
57
- },
58
- options: { persistentOutput: true },
59
- },
60
- {
61
- // title: 'Warning output',
62
- skip: () => !this.outputWarnings?.length,
63
- task: (ctx, task) => {
64
- debug({ warnings: this.outputWarnings });
65
- const moreWarnings = this.outputWarnings.splice(5);
66
- for (const message of this.outputWarnings) {
67
- task.output = `Warning: unstaged file ${message}`;
68
- }
69
- task.output = moreWarnings.length ? `... ${moreWarnings.length} more warnings` : '';
70
- },
71
- options: { persistentOutput: true, bottomBar: 6 },
72
- },
73
- {
74
- title: 'Create virtual tree container',
75
- skip: () => !this.gitLines.length,
76
- task: (ctx, task) => task.newListr([
77
- {
78
- title: `ref1: ${gitArgs.ref1}`,
79
- task: async () => {
80
- this.ref1VirtualTreeContainer = await createVirtualTreeContainer(gitArgs.ref1, this.projectRoot, this.gitLines.filter((l) => l.status === 'M').map((l) => l.path));
81
- },
82
- },
83
- {
84
- title: gitArgs.ref2 !== '' ? `ref2: ${gitArgs.ref2}` : 'ref2: (staging area)',
85
- task: async () => {
86
- this.ref2VirtualTreeContainer = await createVirtualTreeContainer(gitArgs.ref2, this.projectRoot, this.gitLines.filter((l) => l.status === 'M').map((l) => l.path));
87
- },
88
- },
89
- ], { concurrent: true }),
90
- },
91
- {
92
- title: 'Analyze git diff results',
93
- skip: () => !this.gitLines.length,
94
- task: async (ctx, task) => {
95
- if (sourcepath) {
96
- this.fsPaths = sourcepath.map((filepath) => {
97
- filepath = resolve(filepath);
98
- if (!this.ref1VirtualTreeContainer.exists(filepath) &&
99
- !this.ref2VirtualTreeContainer.exists(filepath)) {
100
- throw new SfError(`The sourcepath "${filepath}" is not a valid source file path.`);
101
- }
102
- return filepath;
103
- });
104
- debug(`fsPaths: ${this.fsPaths.join(', ')}`);
105
- }
106
- const { manifest, output } = await getGitResults(this.gitLines, this.ref1VirtualTreeContainer, this.ref2VirtualTreeContainer, this.destructiveChangesOnly, this.fsPaths);
107
- task.output = `Added: ${output.counts.added}, Deleted: ${output.counts.deleted}, Modified: ${output.counts.modified}, Unchanged: ${output.counts.unchanged}, Ignored: ${output.counts.ignored}${output.counts.error ? `, Errors: ${output.counts.error}` : ''}`;
108
- this.outputErrors = output.errors;
109
- debug({ manifest });
110
- this.componentSet = fixComponentSetChilds(manifest);
111
- this.componentSet.sourceApiVersion = this.sourceApiVersion;
112
- },
113
- options: { persistentOutput: true },
114
- },
115
- {
116
- // title: 'Error output',
117
- skip: () => !this.outputErrors?.length,
118
- task: (ctx, task) => {
119
- debug({ errors: this.outputErrors });
120
- const moreErrors = this.outputErrors.splice(5);
121
- for (const message of this.outputErrors) {
122
- task.output = `Error: ${message}`;
123
- }
124
- task.output = moreErrors.length ? `... ${moreErrors.length} more errors` : '';
125
- },
126
- options: { persistentOutput: true, bottomBar: 6 },
127
- },
128
- {
129
- title: 'Generate manifests',
130
- skip: () => !this.componentSet?.size,
131
- task: (ctx, task) => task.newListr([
132
- {
133
- title: this.manifest,
134
- skip: () => !this.isOutputEnabled,
135
- task: async () => {
136
- await fs.ensureDir(dirname(this.manifest));
137
- await fs.writeFile(this.manifest, await this.componentSet.getPackageXml());
138
- },
139
- options: { persistentOutput: true },
140
- },
141
- {
142
- title: this.destructiveChanges,
143
- skip: () => !this.componentSet.getTypesOfDestructiveChanges().length || !this.isOutputEnabled,
144
- task: async () => {
145
- await fs.ensureDir(dirname(this.destructiveChanges));
146
- await fs.writeFile(this.destructiveChanges, await this.componentSet.getPackageXml(undefined, DestructiveChangesType.POST));
147
- },
148
- options: { persistentOutput: true },
149
- },
150
- ], { concurrent: true }),
151
- },
152
- ], {
153
- rendererOptions: {
154
- timer: {
155
- ...PRESET_TIMER,
156
- condition: (duration) => duration > 250,
157
- },
158
- lazy: true,
159
- collapseErrors: false,
160
- collapseSubtasks: false,
161
- },
162
- silentRendererCondition: !this.isOutputEnabled,
163
- fallbackRendererCondition: debug.enabled,
164
- });
165
- try {
166
- await tasks.run();
167
- return {
168
- destructiveChanges: await this.componentSet?.getObject(DestructiveChangesType.POST),
169
- manifest: await this.componentSet?.getObject(),
170
- };
171
- }
172
- catch (e) {
173
- if (debug.enabled && this.isOutputEnabled) {
174
- logger.toStderr(e.message);
175
- }
176
- throw e;
177
- }
178
- }
179
- async getSourceApiVersion() {
180
- const projectConfig = await this.project.resolveProjectConfig();
181
- return getString(projectConfig, 'sourceApiVersion') ?? undefined;
182
- }
183
- }
184
- GitDiff.summary = messages.getMessage('summary');
185
- GitDiff.description = messages.getMessage('description');
186
- GitDiff.examples = messages.getMessages('examples');
187
- GitDiff.args = {
188
- ref1: Args.string({
189
- required: true,
190
- description: messages.getMessage('args.ref1.description'),
191
- }),
192
- ref2: Args.string({
193
- description: messages.getMessage('args.ref2.description'),
194
- }),
195
- };
196
- GitDiff.requiresProject = true;
197
- GitDiff.flags = {
198
- 'source-dir': arrayWithDeprecation({
199
- char: 'd',
200
- summary: messages.getMessage('flags.source-dir.summary'),
201
- description: messages.getMessage('flags.source-dir.description'),
202
- deprecateAliases: true,
203
- aliases: ['sourcepath', 'p'],
204
- }),
205
- 'output-dir': Flags.directory({
206
- summary: messages.getMessage('flags.output-dir.summary'),
207
- description: messages.getMessage('flags.output-dir.description'),
208
- default: '',
209
- deprecateAliases: true,
210
- aliases: ['outputdir', 'o'],
211
- }),
212
- 'destructive-changes-only': Flags.boolean({
213
- summary: messages.getMessage('flags.destructive-changes-only.summary'),
214
- description: messages.getMessage('flags.destructive-changes-only.description'),
215
- deprecateAliases: true,
216
- aliases: ['destructivechangesonly'],
217
- }),
218
- };
219
- export default GitDiff;
220
- async function resolveRef(refOrig, dir) {
221
- if (refOrig === '') {
222
- return '';
223
- }
224
- const getCommitLog = async (ref) => {
225
- try {
226
- const [log] = await git.log({
227
- fs,
228
- dir,
229
- ref,
230
- depth: 1,
231
- });
232
- return { oid: log.oid, parents: log.commit.parent };
233
- }
234
- catch (error) {
235
- throw new Error(`ambiguous argument '${ref}': unknown revision or path not in the working tree.
236
- See more help with --help`);
237
- }
238
- };
239
- if (!['~', '^'].some((el) => refOrig.includes(el))) {
240
- return (await getCommitLog(refOrig)).oid;
241
- }
242
- const firstIndex = [refOrig.indexOf('^'), refOrig.indexOf('~')]
243
- .filter((a) => a >= 0)
244
- .reduce((a, b) => Math.min(a, b));
245
- let path = refOrig.substring(firstIndex);
246
- let ref = refOrig.substring(0, firstIndex);
247
- while (path.length && ref !== undefined) {
248
- if (path.startsWith('^')) {
249
- path = path.substring(1);
250
- let next = Number(path.substring(0, 1));
251
- path = next ? path.substring(1) : path;
252
- next = next ? next : 1;
253
- // eslint-disable-next-line no-await-in-loop
254
- ref = (await getCommitLog(ref)).parents[next - 1];
255
- }
256
- else if (path.startsWith('~')) {
257
- path = path.substring(1);
258
- let next = Number(path.substring(0, 1));
259
- path = next ? path.substring(1) : path;
260
- next = next ? next : 1;
261
- for (let index = 0; index <= next - 1; index++) {
262
- // eslint-disable-next-line no-await-in-loop
263
- ref = (await getCommitLog(ref)).parents[0];
264
- }
265
- }
266
- else {
267
- ref = undefined;
268
- }
269
- }
270
- if (ref === undefined) {
271
- throw new Error(`ambiguous argument '${refOrig}': unknown revision or path not in the working tree.`);
272
- }
273
- return ref;
274
- }
275
- async function getGitArgsFromArgv(ref1, ref2, argv, dir) {
276
- const newArgv = [];
277
- while (argv.length) {
278
- let [e] = argv.splice(0, 1);
279
- if (e.includes('=')) {
280
- // skip parameter=value
281
- }
282
- else if (e.includes('-')) {
283
- // remove value
284
- if (argv[0] && !argv[0].includes('-') && ![ref1, ref2].includes(argv[0])) {
285
- [e] = argv.splice(0, 1);
286
- }
287
- }
288
- else {
289
- newArgv.push(e);
290
- }
291
- }
292
- argv = newArgv;
293
- let refString = ref1;
294
- const a = argv.join('.').split('.');
295
- if ((a.length === 3 || a.length === 4) && typeof ref2 === 'undefined') {
296
- ref1 = a[0];
297
- ref2 = a[a.length - 1];
298
- }
299
- else if (a.length === 2 && typeof ref2 !== 'undefined') {
300
- refString = `${ref1}..${ref2}`;
301
- }
302
- else if (a.length === 1) {
303
- ref2 = '';
304
- }
305
- else {
306
- throw new Error(`Ambiguous ${format('argument%s', argv.length === 1 ? '' : 's')}: ${argv.join(', ')}
307
- See more help with --help`);
308
- }
309
- ref1 = await resolveRef(ref1, dir);
310
- ref2 = await resolveRef(ref2, dir);
311
- if (a.length === 4) {
312
- ref1 = (await git.findMergeBase({
313
- fs,
314
- dir,
315
- oids: [ref2, ref1],
316
- }))[0];
317
- }
318
- return { ref1, ref2, refString };
319
- }
320
- function ensureOSPath(path) {
321
- return path.split(posix.sep).join(sep);
322
- }
323
- function ensureGitRelPath(dir, path) {
324
- return relative(dir, path).split(sep).join(posix.sep);
325
- }
326
- async function createVirtualTreeContainer(ref, dir, modifiedFiles) {
327
- const paths = (await git.listFiles({ fs, dir, ref })).map((p) => join(dir, ensureOSPath(p)));
328
- const oid = ref ? await git.resolveRef({ fs, dir, ref }) : '';
329
- const virtualDirectoryByFullPath = new Map();
330
- for await (const filename of paths) {
331
- let dirPath = dirname(filename);
332
- virtualDirectoryByFullPath.set(dirPath, {
333
- dirPath,
334
- children: Array.from(new Set(virtualDirectoryByFullPath.get(dirPath)?.children ?? []).add({
335
- name: basename(filename),
336
- data: parseMetadataXml(filename) && modifiedFiles.includes(filename)
337
- ? oid
338
- ? Buffer.from((await git.readBlob({ fs, dir, oid, filepath: ensureGitRelPath(dir, filename) })).blob)
339
- : await fs.readFile(ensureOSPath(filename))
340
- : Buffer.from(''),
341
- })),
342
- });
343
- const splits = filename.split(sep);
344
- for (let i = 1; i < splits.length - 1; i++) {
345
- dirPath = splits.slice(0, i + 1).join(sep);
346
- virtualDirectoryByFullPath.set(dirPath, {
347
- dirPath,
348
- children: Array.from(new Set(virtualDirectoryByFullPath.get(dirPath)?.children ?? []).add(splits[i + 1])),
349
- });
350
- }
351
- }
352
- return new VirtualTreeContainer(Array.from(virtualDirectoryByFullPath.values()));
353
- }
354
- async function analyzeFile(path, ref1VirtualTreeContainer, ref2VirtualTreeContainer) {
355
- if (!parseMetadataXml(path)) {
356
- return { path, status: 0 };
357
- }
358
- const ref2resolver = new MetadataResolver(registryAccess, ref2VirtualTreeContainer);
359
- const [ref2Component] = ref2resolver.getComponentsFromPath(path); // git path only conaints files
360
- const ref1resolver = new MetadataResolver(registryAccess, ref1VirtualTreeContainer);
361
- const [ref1Component] = ref1resolver.getComponentsFromPath(path); // git path only conaints files
362
- if (ref1resolver.forceIgnoredPaths.has(path) || ref2resolver.forceIgnoredPaths.has(path)) {
363
- return { path, status: -2 };
364
- }
365
- if (equal(await ref1Component.parseXml(), await ref2Component.parseXml())) {
366
- return { path, status: -1 };
367
- }
368
- if (ref1Component.type.strictDirectoryName === true || !ref1Component.type.children) {
369
- return { path, status: 0 };
370
- }
371
- const ref2ChildUniqueIdArray = ref2Component
372
- .getChildren()
373
- .map((childComponent) => getUniqueIdentifier(childComponent));
374
- const ref1ChildUniqueIdArray = ref1Component
375
- .getChildren()
376
- .map((childComponent) => getUniqueIdentifier(childComponent));
377
- const childComponentsNotInRef2 = ref1Component
378
- .getChildren()
379
- .filter((childComponent) => !ref2ChildUniqueIdArray.includes(getUniqueIdentifier(childComponent))); // deleted
380
- const childComponentsNotInRef1 = ref2Component
381
- .getChildren()
382
- .filter((childComponent) => !ref1ChildUniqueIdArray.includes(getUniqueIdentifier(childComponent))); // added
383
- const childComponentsInRef1AndRef2 = ref1Component
384
- .getChildren()
385
- .filter((childComponent) => ref2ChildUniqueIdArray.includes(getUniqueIdentifier(childComponent))); // modified?
386
- debug({ childComponentsNotInRef2, childComponentsNotInRef1, childComponentsInRef1AndRef2 });
387
- for await (const childComponentRef1 of childComponentsInRef1AndRef2) {
388
- const [childComponentRef2] = ref2Component
389
- .getChildren()
390
- .filter((childComponent) => getUniqueIdentifier(childComponentRef1) === getUniqueIdentifier(childComponent));
391
- if (!equal(await childComponentRef1.parseXml(), await childComponentRef2.parseXml())) {
392
- childComponentsNotInRef1.push(childComponentRef2); // modified! -> add to added
393
- }
394
- }
395
- debug({ childComponentsNotInRef1 });
396
- return {
397
- path,
398
- status: 1 + childComponentsNotInRef2.length + childComponentsNotInRef1.length,
399
- toManifest: childComponentsNotInRef1,
400
- toDestructiveChanges: childComponentsNotInRef2,
401
- };
402
- }
403
- function getUniqueIdentifier(component) {
404
- return `${component.type.name}#${getString(component, component.type.uniqueIdElement)}`;
405
- }
406
- async function getFileStateChanges(commitHash1, commitHash2, dir) {
407
- // eslint-disable-next-line @typescript-eslint/no-unsafe-return
408
- return git.walk({
409
- fs,
410
- dir,
411
- trees: [git.TREE({ ref: commitHash1 }), git.TREE({ ref: commitHash2 })],
412
- async map(filepath, [A, B]) {
413
- if (filepath === '.' || (await A?.type()) === 'tree' || (await B?.type()) === 'tree') {
414
- return;
415
- }
416
- const Aoid = await A?.oid();
417
- const Boid = await B?.oid();
418
- let type = 'EQ';
419
- if (Aoid !== Boid) {
420
- type = 'M';
421
- }
422
- if (Aoid === undefined) {
423
- type = 'A';
424
- }
425
- if (Boid === undefined) {
426
- type = 'D';
427
- }
428
- if (type !== 'EQ') {
429
- return {
430
- path: join(dir, ensureOSPath(filepath)),
431
- status: type,
432
- };
433
- }
434
- },
435
- });
436
- }
437
- async function getStatusMatrix(dir, ref) {
438
- const getStatus = (row) => {
439
- if ([
440
- [0, 2, 2],
441
- [0, 2, 3], // added, staged, with unstaged changes
442
- ].some((a) => a.every((val, index) => val === row[index]))) {
443
- return 'A';
444
- }
445
- if ([
446
- [1, 0, 0],
447
- [1, 0, 1],
448
- [1, 1, 0],
449
- [1, 2, 0],
450
- [1, 0, 3], // modified, staged, with unstaged deletion
451
- ].some((a) => a.every((val, index) => val === row[index]))) {
452
- return 'D';
453
- }
454
- if ([
455
- [1, 2, 1],
456
- [1, 2, 2],
457
- [1, 2, 3], // modified, staged, with unstaged changes
458
- ].some((a) => a.every((val, index) => val === row[index]))) {
459
- return 'M';
460
- }
461
- return undefined;
462
- };
463
- const statusMatrix = await git.statusMatrix({ fs, dir, ref });
464
- const warnings = statusMatrix
465
- .filter((row) => [
466
- [0, 2, 0],
467
- [0, 0, 3],
468
- [0, 2, 3],
469
- [1, 2, 1],
470
- [1, 0, 3],
471
- [1, 1, 3],
472
- [1, 2, 3],
473
- [1, 1, 0],
474
- [1, 2, 0],
475
- [1, 0, 1], // deleted, unstaged
476
- ].some((a) => a.every((val, index) => val === row.slice(1)[index])))
477
- .map((row) => join(dir, ensureOSPath(row[0])));
478
- const gitlines = statusMatrix
479
- .filter((row) => ![
480
- [0, 0, 0],
481
- [1, 1, 1],
482
- [0, 0, 3],
483
- [0, 2, 0],
484
- [1, 1, 3], // modified, staged, with unstaged original file
485
- ].some((a) => a.every((val, index) => val === row.slice(1)[index])))
486
- .map((row) => ({
487
- path: join(dir, ensureOSPath(row[0])),
488
- status: getStatus(row.slice(1)),
489
- }));
490
- return { warnings, lines: gitlines };
491
- }
492
- async function getGitDiff(ref1, ref2, dir) {
493
- let gitlines;
494
- let warnings = [];
495
- const proj = await SfProject.resolve();
496
- const resolveSourcePaths = proj.getUniquePackageDirectories().map((pDir) => pDir.fullPath);
497
- if (ref2) {
498
- gitlines = (await getFileStateChanges(ref1, ref2, dir)).filter((l) => resolveSourcePaths.some((f) => l.path.startsWith(f)));
499
- }
500
- else {
501
- const { warnings: warn, lines } = await getStatusMatrix(dir, ref1);
502
- warnings = warn.filter((l) => resolveSourcePaths.some((f) => l.startsWith(f)));
503
- gitlines = lines.filter((l) => resolveSourcePaths.some((f) => l.path.startsWith(f)));
504
- }
505
- gitlines = gitlines.filter((line) => {
506
- if (line.status === 'D') {
507
- for (const sourcePath of resolveSourcePaths) {
508
- const defaultFolder = join(sourcePath, 'main', 'default');
509
- const filePath = line.path.replace(line.path.startsWith(defaultFolder) ? defaultFolder : sourcePath, '');
510
- const target = gitlines.find((t) => t.path.endsWith(filePath) && t.status === 'A');
511
- if (target) {
512
- debug(`rename: ${line.path} -> ${target.path}`);
513
- return false;
514
- }
515
- }
516
- }
517
- return true;
518
- });
519
- debug({ gitlines, warnings });
520
- return { gitlines, warnings };
521
- }
522
- // eslint-disable-next-line complexity
523
- async function getGitResults(gitLines, ref1VirtualTreeContainer, ref2VirtualTreeContainer, destructiveChangesOnly, fsPaths) {
524
- const results = {
525
- manifest: new ComponentSet(undefined, registryAccess),
526
- output: {
527
- unchanged: [],
528
- ignored: { ref1: [], ref2: [] },
529
- counts: { added: 0, deleted: 0, modified: 0, unchanged: 0, ignored: 0, error: 0 },
530
- errors: [],
531
- },
532
- };
533
- const ref1Resolver = new MetadataResolver(registryAccess, ref1VirtualTreeContainer);
534
- const ref2Resolver = new MetadataResolver(registryAccess, ref2VirtualTreeContainer);
535
- const getComponentsFromPath = (resolver, path) => {
536
- let result = [];
537
- try {
538
- result = resolver.getComponentsFromPath(path);
539
- }
540
- catch (error) {
541
- results.output.counts.error++;
542
- results.output.errors.push(error.message);
543
- }
544
- return result;
545
- };
546
- const analyzedFilesPromises = [];
547
- for (const [, { status, path }] of gitLines.entries()) {
548
- if (!fsPaths || fsPaths.some((fsPath) => resolve(path).startsWith(fsPath))) {
549
- if (status === 'D') {
550
- for (const c of getComponentsFromPath(ref1Resolver, path)) {
551
- if (c.xml === path || gitLines.find((x) => x.path === c.xml)) {
552
- results.manifest.add(c, DestructiveChangesType.POST);
553
- results.output.counts.deleted++;
554
- }
555
- else {
556
- try {
557
- if (c.xml) {
558
- // in case a binary source file of a bundle was deleted, check if the bundle ist still valid and update instead of delete
559
- ref2Resolver.getComponentsFromPath(c.xml);
560
- }
561
- if (!destructiveChangesOnly) {
562
- results.manifest.add(c);
563
- results.output.counts.added++;
564
- }
565
- }
566
- catch (error) {
567
- results.output.counts.error++;
568
- results.output.errors.push(error.message);
569
- }
570
- }
571
- }
572
- }
573
- else if (status === 'A') {
574
- if (!destructiveChangesOnly) {
575
- for (const c of getComponentsFromPath(ref2Resolver, path)) {
576
- results.manifest.add(c);
577
- results.output.counts.added++;
578
- }
579
- }
580
- }
581
- else {
582
- analyzedFilesPromises.push(analyzeFile(path, ref1VirtualTreeContainer, ref2VirtualTreeContainer));
583
- }
584
- }
585
- else {
586
- debug(`${path} not included in sourcepath`);
587
- }
588
- }
589
- for await (const check of analyzedFilesPromises) {
590
- if (check.status === 0) {
591
- if (!destructiveChangesOnly) {
592
- for (const c of getComponentsFromPath(ref2Resolver, check.path)) {
593
- results.manifest.add(c);
594
- results.output.counts.modified++;
595
- }
596
- }
597
- }
598
- else if (check.status === -1) {
599
- results.output.unchanged.push(check.path);
600
- results.output.counts.unchanged++;
601
- }
602
- else if (check.status === -2) {
603
- results.output.counts.ignored++;
604
- results.output.ignored.ref2.push(check.path);
605
- }
606
- else {
607
- if ((check.toDestructiveChanges && check.toDestructiveChanges.length > 0) ||
608
- (check.toManifest && check.toManifest.length > 0 && !destructiveChangesOnly)) {
609
- results.output.counts.modified++;
610
- }
611
- if (check.toDestructiveChanges) {
612
- for (const c of check.toDestructiveChanges) {
613
- results.manifest.add(c, DestructiveChangesType.POST);
614
- }
615
- }
616
- if (!destructiveChangesOnly && check.toManifest) {
617
- for (const c of check.toManifest) {
618
- results.manifest.add(c);
619
- }
620
- }
621
- }
622
- }
623
- results.output.ignored = {
624
- ref1: Array.from(ref1Resolver.forceIgnoredPaths),
625
- ref2: results.output.ignored.ref2.concat(Array.from(ref2Resolver.forceIgnoredPaths)),
626
- };
627
- results.output.counts.ignored =
628
- results.output.counts.ignored + ref1Resolver.forceIgnoredPaths.size + ref2Resolver.forceIgnoredPaths.size;
629
- return results;
630
- }
631
- function fixComponentSetChilds(cs) {
632
- let sourceComponents = cs.getSourceComponents();
633
- // SDR library is more strict and avoids fixes like this
634
- const childsTobeReplacedByParent = [
635
- ...Object.keys(registry.types.workflow.children?.types ?? {}),
636
- ...Object.keys(registry.types.sharingrules.children?.types ?? {}),
637
- ...Object.keys(registry.types.customobjecttranslation.children?.types ?? {}),
638
- ...Object.keys(registry.types.bot.children?.types ?? {}),
639
- ];
640
- sourceComponents = sourceComponents.map((component) => {
641
- if (!component.isMarkedForDelete() && childsTobeReplacedByParent.includes(component.type.id) && component.parent) {
642
- debug(`replace: ${component.type.name}:${component.fullName} -> ${component.parent.type.name}:${component.parent.fullName}`);
643
- return component.parent;
644
- }
645
- return component;
646
- });
647
- return new ComponentSet(sourceComponents, registryAccess);
648
- }
649
- //# sourceMappingURL=diff.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"diff.js","sourceRoot":"","sources":["../../../../../../src/commands/jayree/manifest/legacy/git/diff.ts"],"names":[],"mappings":"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"}
@@ -1,19 +0,0 @@
1
- {
2
- "$schema": "http://json-schema.org/draft-07/schema#",
3
- "$ref": "#/definitions/GitDiffCommandResult",
4
- "definitions": {
5
- "GitDiffCommandResult": {
6
- "type": "object",
7
- "properties": {
8
- "destructiveChanges": {
9
- "type": "object"
10
- },
11
- "manifest": {
12
- "type": "object"
13
- }
14
- },
15
- "required": ["destructiveChanges", "manifest"],
16
- "additionalProperties": false
17
- }
18
- }
19
- }