@jayree/sfdx-plugin-manifest 2.7.3 → 2.8.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 +30 -0
- package/README.md +83 -66
- package/lib/SDR-extra/utils/localGitRepo.js +1 -1
- package/lib/SDR-extra/utils/localGitRepo.js.map +1 -1
- package/lib/commands/jayree/manifest/beta/git/diff.d.ts +8 -6
- package/lib/commands/jayree/manifest/beta/git/diff.js +11 -11
- package/lib/commands/jayree/manifest/beta/git/diff.js.map +1 -1
- package/lib/commands/jayree/manifest/cleanup.d.ts +11 -9
- package/lib/commands/jayree/manifest/cleanup.js +78 -18
- package/lib/commands/jayree/manifest/cleanup.js.map +1 -1
- package/lib/commands/jayree/manifest/generate.d.ts +18 -11
- package/lib/commands/jayree/manifest/generate.js +57 -48
- package/lib/commands/jayree/manifest/generate.js.map +1 -1
- package/lib/commands/jayree/manifest/git/diff.d.ts +17 -11
- package/lib/commands/jayree/manifest/git/diff.js +479 -55
- package/lib/commands/jayree/manifest/git/diff.js.map +1 -1
- package/messages/{gitdiffbeta.md → gitdiff.md} +7 -0
- package/messages/manifestcleanup.md +21 -0
- package/messages/manifestgenerate.md +43 -0
- package/oclif.manifest.json +319 -1
- package/package.json +19 -20
- package/lib/jayreeSfdxCommand.d.ts +0 -8
- package/lib/jayreeSfdxCommand.js +0 -26
- package/lib/jayreeSfdxCommand.js.map +0 -1
- package/lib/utils/gitdiff.d.ts +0 -57
- package/lib/utils/gitdiff.js +0 -442
- package/lib/utils/gitdiff.js.map +0 -1
- package/lib/utils/manifest.d.ts +0 -1
- package/lib/utils/manifest.js +0 -66
- package/lib/utils/manifest.js.map +0 -1
- package/messages/gitdiff.json +0 -12
- package/messages/manifestcleanup.json +0 -6
- package/messages/manifestgenerate.json +0 -16
package/lib/utils/gitdiff.js
DELETED
|
@@ -1,442 +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 } from 'node:path';
|
|
8
|
-
import util from 'util';
|
|
9
|
-
import { resolve } from 'node:path';
|
|
10
|
-
import fs from 'fs-extra';
|
|
11
|
-
import equal from 'fast-deep-equal';
|
|
12
|
-
import { ComponentSet, RegistryAccess, registry, VirtualTreeContainer, MetadataResolver, DestructiveChangesType, } from '@salesforce/source-deploy-retrieve';
|
|
13
|
-
import { parseMetadataXml } from '@salesforce/source-deploy-retrieve/lib/src/utils/index.js';
|
|
14
|
-
import Debug from 'debug';
|
|
15
|
-
import git from 'isomorphic-git';
|
|
16
|
-
import { SfProject } from '@salesforce/core';
|
|
17
|
-
export const debug = Debug('jayree:manifest:git:diff');
|
|
18
|
-
const registryAccess = new RegistryAccess();
|
|
19
|
-
export async function resolveRef(refOrig, dir) {
|
|
20
|
-
if (refOrig === '') {
|
|
21
|
-
return '';
|
|
22
|
-
}
|
|
23
|
-
const getCommitLog = async (ref) => {
|
|
24
|
-
try {
|
|
25
|
-
const [log] = await git.log({
|
|
26
|
-
fs,
|
|
27
|
-
dir,
|
|
28
|
-
ref,
|
|
29
|
-
depth: 1,
|
|
30
|
-
});
|
|
31
|
-
return { oid: log.oid, parents: log.commit.parent };
|
|
32
|
-
}
|
|
33
|
-
catch (error) {
|
|
34
|
-
throw new Error(`ambiguous argument '${ref}': unknown revision or path not in the working tree.
|
|
35
|
-
See more help with --help`);
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
|
-
if (!['~', '^'].some((el) => refOrig.includes(el))) {
|
|
39
|
-
return (await getCommitLog(refOrig)).oid;
|
|
40
|
-
}
|
|
41
|
-
const firstIndex = [refOrig.indexOf('^'), refOrig.indexOf('~')]
|
|
42
|
-
.filter((a) => a >= 0)
|
|
43
|
-
.reduce((a, b) => Math.min(a, b));
|
|
44
|
-
let path = refOrig.substring(firstIndex);
|
|
45
|
-
let ref = refOrig.substring(0, firstIndex);
|
|
46
|
-
while (path.length && ref !== undefined) {
|
|
47
|
-
if (path.startsWith('^')) {
|
|
48
|
-
path = path.substring(1);
|
|
49
|
-
let next = Number(path.substring(0, 1));
|
|
50
|
-
path = next ? path.substring(1) : path;
|
|
51
|
-
next = next ? next : 1;
|
|
52
|
-
// eslint-disable-next-line no-await-in-loop
|
|
53
|
-
ref = (await getCommitLog(ref)).parents[next - 1];
|
|
54
|
-
}
|
|
55
|
-
else if (path.startsWith('~')) {
|
|
56
|
-
path = path.substring(1);
|
|
57
|
-
let next = Number(path.substring(0, 1));
|
|
58
|
-
path = next ? path.substring(1) : path;
|
|
59
|
-
next = next ? next : 1;
|
|
60
|
-
for (let index = 0; index <= next - 1; index++) {
|
|
61
|
-
// eslint-disable-next-line no-await-in-loop
|
|
62
|
-
ref = (await getCommitLog(ref)).parents[0];
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
else {
|
|
66
|
-
ref = undefined;
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
if (ref === undefined) {
|
|
70
|
-
throw new Error(`ambiguous argument '${refOrig}': unknown revision or path not in the working tree.`);
|
|
71
|
-
}
|
|
72
|
-
return ref;
|
|
73
|
-
}
|
|
74
|
-
export async function getGitArgsFromArgv(ref1, ref2, argv, dir) {
|
|
75
|
-
const newArgv = [];
|
|
76
|
-
while (argv.length) {
|
|
77
|
-
let [e] = argv.splice(0, 1);
|
|
78
|
-
if (e.includes('=')) {
|
|
79
|
-
// skip parameter=value
|
|
80
|
-
}
|
|
81
|
-
else if (e.includes('-')) {
|
|
82
|
-
// remove value
|
|
83
|
-
if (argv[0] && !argv[0].includes('-') && ![ref1, ref2].includes(argv[0])) {
|
|
84
|
-
[e] = argv.splice(0, 1);
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
else {
|
|
88
|
-
newArgv.push(e);
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
argv = newArgv;
|
|
92
|
-
let refString = ref1;
|
|
93
|
-
const a = argv.join('.').split('.');
|
|
94
|
-
if ((a.length === 3 || a.length === 4) && typeof ref2 === 'undefined') {
|
|
95
|
-
ref1 = a[0];
|
|
96
|
-
ref2 = a[a.length - 1];
|
|
97
|
-
}
|
|
98
|
-
else if (a.length === 2 && typeof ref2 !== 'undefined') {
|
|
99
|
-
refString = `${ref1}..${ref2}`;
|
|
100
|
-
}
|
|
101
|
-
else if (a.length === 1) {
|
|
102
|
-
ref2 = '';
|
|
103
|
-
}
|
|
104
|
-
else {
|
|
105
|
-
throw new Error(`Ambiguous ${util.format('argument%s', argv.length === 1 ? '' : 's')}: ${argv.join(', ')}
|
|
106
|
-
See more help with --help`);
|
|
107
|
-
}
|
|
108
|
-
ref1 = await resolveRef(ref1, dir);
|
|
109
|
-
ref2 = await resolveRef(ref2, dir);
|
|
110
|
-
if (a.length === 4) {
|
|
111
|
-
ref1 = (await git.findMergeBase({
|
|
112
|
-
fs,
|
|
113
|
-
dir,
|
|
114
|
-
oids: [ref2, ref1],
|
|
115
|
-
}))[0];
|
|
116
|
-
}
|
|
117
|
-
return { ref1, ref2, refString };
|
|
118
|
-
}
|
|
119
|
-
export function ensureOSPath(path) {
|
|
120
|
-
return path.split(posix.sep).join(sep);
|
|
121
|
-
}
|
|
122
|
-
export function ensureGitRelPath(dir, path) {
|
|
123
|
-
return relative(dir, path).split(sep).join(posix.sep);
|
|
124
|
-
}
|
|
125
|
-
export async function createVirtualTreeContainer(ref, dir, modifiedFiles) {
|
|
126
|
-
const paths = (await git.listFiles({ fs, dir, ref })).map((p) => join(dir, ensureOSPath(p)));
|
|
127
|
-
const oid = ref ? await git.resolveRef({ fs, dir, ref }) : '';
|
|
128
|
-
const virtualDirectoryByFullPath = new Map();
|
|
129
|
-
for await (const filename of paths) {
|
|
130
|
-
let dirPath = dirname(filename);
|
|
131
|
-
virtualDirectoryByFullPath.set(dirPath, {
|
|
132
|
-
dirPath,
|
|
133
|
-
children: Array.from(new Set(virtualDirectoryByFullPath.get(dirPath)?.children ?? []).add({
|
|
134
|
-
name: basename(filename),
|
|
135
|
-
data: parseMetadataXml(filename) && modifiedFiles.includes(filename)
|
|
136
|
-
? oid
|
|
137
|
-
? Buffer.from((await git.readBlob({ fs, dir, oid, filepath: ensureGitRelPath(dir, filename) })).blob)
|
|
138
|
-
: await fs.readFile(ensureOSPath(filename))
|
|
139
|
-
: Buffer.from(''),
|
|
140
|
-
})),
|
|
141
|
-
});
|
|
142
|
-
const splits = filename.split(sep);
|
|
143
|
-
for (let i = 1; i < splits.length - 1; i++) {
|
|
144
|
-
dirPath = splits.slice(0, i + 1).join(sep);
|
|
145
|
-
virtualDirectoryByFullPath.set(dirPath, {
|
|
146
|
-
dirPath,
|
|
147
|
-
children: Array.from(new Set(virtualDirectoryByFullPath.get(dirPath)?.children ?? []).add(splits[i + 1])),
|
|
148
|
-
});
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
return new VirtualTreeContainer(Array.from(virtualDirectoryByFullPath.values()));
|
|
152
|
-
}
|
|
153
|
-
export async function analyzeFile(path, ref1VirtualTreeContainer, ref2VirtualTreeContainer) {
|
|
154
|
-
if (!parseMetadataXml(path)) {
|
|
155
|
-
return { path, status: 0 };
|
|
156
|
-
}
|
|
157
|
-
const ref2resolver = new MetadataResolver(registryAccess, ref2VirtualTreeContainer);
|
|
158
|
-
const [ref2Component] = ref2resolver.getComponentsFromPath(path); // git path only conaints files
|
|
159
|
-
const ref1resolver = new MetadataResolver(registryAccess, ref1VirtualTreeContainer);
|
|
160
|
-
const [ref1Component] = ref1resolver.getComponentsFromPath(path); // git path only conaints files
|
|
161
|
-
if (ref1resolver.forceIgnoredPaths.has(path) || ref2resolver.forceIgnoredPaths.has(path)) {
|
|
162
|
-
return { path, status: -2 };
|
|
163
|
-
}
|
|
164
|
-
if (equal(await ref1Component.parseXml(), await ref2Component.parseXml())) {
|
|
165
|
-
return { path, status: -1 };
|
|
166
|
-
}
|
|
167
|
-
if (ref1Component.type.strictDirectoryName === true || !ref1Component.type.children) {
|
|
168
|
-
return { path, status: 0 };
|
|
169
|
-
}
|
|
170
|
-
const ref2ChildUniqueIdArray = ref2Component
|
|
171
|
-
.getChildren()
|
|
172
|
-
.map((childComponent) => getUniqueIdentifier(childComponent));
|
|
173
|
-
const ref1ChildUniqueIdArray = ref1Component
|
|
174
|
-
.getChildren()
|
|
175
|
-
.map((childComponent) => getUniqueIdentifier(childComponent));
|
|
176
|
-
const childComponentsNotInRef2 = ref1Component
|
|
177
|
-
.getChildren()
|
|
178
|
-
.filter((childComponent) => !ref2ChildUniqueIdArray.includes(getUniqueIdentifier(childComponent))); // deleted
|
|
179
|
-
const childComponentsNotInRef1 = ref2Component
|
|
180
|
-
.getChildren()
|
|
181
|
-
.filter((childComponent) => !ref1ChildUniqueIdArray.includes(getUniqueIdentifier(childComponent))); // added
|
|
182
|
-
const childComponentsInRef1AndRef2 = ref1Component
|
|
183
|
-
.getChildren()
|
|
184
|
-
.filter((childComponent) => ref2ChildUniqueIdArray.includes(getUniqueIdentifier(childComponent))); // modified?
|
|
185
|
-
debug({ childComponentsNotInRef2, childComponentsNotInRef1, childComponentsInRef1AndRef2 });
|
|
186
|
-
for await (const childComponentRef1 of childComponentsInRef1AndRef2) {
|
|
187
|
-
const [childComponentRef2] = ref2Component
|
|
188
|
-
.getChildren()
|
|
189
|
-
.filter((childComponent) => getUniqueIdentifier(childComponentRef1) === getUniqueIdentifier(childComponent));
|
|
190
|
-
if (!equal(await childComponentRef1.parseXml(), await childComponentRef2.parseXml())) {
|
|
191
|
-
childComponentsNotInRef1.push(childComponentRef2); // modified! -> add to added
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
debug({ childComponentsNotInRef1 });
|
|
195
|
-
return {
|
|
196
|
-
path,
|
|
197
|
-
status: 1 + childComponentsNotInRef2.length + childComponentsNotInRef1.length,
|
|
198
|
-
toManifest: childComponentsNotInRef1,
|
|
199
|
-
toDestructiveChanges: childComponentsNotInRef2,
|
|
200
|
-
};
|
|
201
|
-
}
|
|
202
|
-
export function getUniqueIdentifier(component) {
|
|
203
|
-
return `${component.type.name}#${component[component.type.uniqueIdElement]}`;
|
|
204
|
-
}
|
|
205
|
-
export async function getFileStateChanges(commitHash1, commitHash2, dir) {
|
|
206
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
207
|
-
return git.walk({
|
|
208
|
-
fs,
|
|
209
|
-
dir,
|
|
210
|
-
trees: [git.TREE({ ref: commitHash1 }), git.TREE({ ref: commitHash2 })],
|
|
211
|
-
async map(filepath, [A, B]) {
|
|
212
|
-
if (filepath === '.' || (await A?.type()) === 'tree' || (await B?.type()) === 'tree') {
|
|
213
|
-
return;
|
|
214
|
-
}
|
|
215
|
-
const Aoid = await A?.oid();
|
|
216
|
-
const Boid = await B?.oid();
|
|
217
|
-
let type = 'EQ';
|
|
218
|
-
if (Aoid !== Boid) {
|
|
219
|
-
type = 'M';
|
|
220
|
-
}
|
|
221
|
-
if (Aoid === undefined) {
|
|
222
|
-
type = 'A';
|
|
223
|
-
}
|
|
224
|
-
if (Boid === undefined) {
|
|
225
|
-
type = 'D';
|
|
226
|
-
}
|
|
227
|
-
if (type !== 'EQ') {
|
|
228
|
-
return {
|
|
229
|
-
path: join(dir, ensureOSPath(filepath)),
|
|
230
|
-
status: type,
|
|
231
|
-
};
|
|
232
|
-
}
|
|
233
|
-
},
|
|
234
|
-
});
|
|
235
|
-
}
|
|
236
|
-
async function getStatusMatrix(dir, ref) {
|
|
237
|
-
const getStatus = (row) => {
|
|
238
|
-
if ([
|
|
239
|
-
[0, 2, 2],
|
|
240
|
-
[0, 2, 3], // added, staged, with unstaged changes
|
|
241
|
-
].some((a) => a.every((val, index) => val === row[index]))) {
|
|
242
|
-
return 'A';
|
|
243
|
-
}
|
|
244
|
-
if ([
|
|
245
|
-
[1, 0, 0],
|
|
246
|
-
[1, 0, 1],
|
|
247
|
-
[1, 1, 0],
|
|
248
|
-
[1, 2, 0],
|
|
249
|
-
[1, 0, 3], // modified, staged, with unstaged deletion
|
|
250
|
-
].some((a) => a.every((val, index) => val === row[index]))) {
|
|
251
|
-
return 'D';
|
|
252
|
-
}
|
|
253
|
-
if ([
|
|
254
|
-
[1, 2, 1],
|
|
255
|
-
[1, 2, 2],
|
|
256
|
-
[1, 2, 3], // modified, staged, with unstaged changes
|
|
257
|
-
].some((a) => a.every((val, index) => val === row[index]))) {
|
|
258
|
-
return 'M';
|
|
259
|
-
}
|
|
260
|
-
};
|
|
261
|
-
const statusMatrix = await git.statusMatrix({ fs, dir, ref });
|
|
262
|
-
const warnings = statusMatrix
|
|
263
|
-
.filter((row) => [
|
|
264
|
-
[0, 2, 0],
|
|
265
|
-
[0, 0, 3],
|
|
266
|
-
[0, 2, 3],
|
|
267
|
-
[1, 2, 1],
|
|
268
|
-
[1, 0, 3],
|
|
269
|
-
[1, 1, 3],
|
|
270
|
-
[1, 2, 3],
|
|
271
|
-
[1, 1, 0],
|
|
272
|
-
[1, 2, 0],
|
|
273
|
-
[1, 0, 1], // deleted, unstaged
|
|
274
|
-
].some((a) => a.every((val, index) => val === row.slice(1)[index])))
|
|
275
|
-
.map((row) => join(dir, ensureOSPath(row[0])));
|
|
276
|
-
const gitlines = statusMatrix
|
|
277
|
-
.filter((row) => ![
|
|
278
|
-
[0, 0, 0],
|
|
279
|
-
[1, 1, 1],
|
|
280
|
-
[0, 0, 3],
|
|
281
|
-
[0, 2, 0],
|
|
282
|
-
[1, 1, 3], // modified, staged, with unstaged original file
|
|
283
|
-
].some((a) => a.every((val, index) => val === row.slice(1)[index])))
|
|
284
|
-
.map((row) => ({
|
|
285
|
-
path: join(dir, ensureOSPath(row[0])),
|
|
286
|
-
status: getStatus(row.slice(1)),
|
|
287
|
-
}));
|
|
288
|
-
return { warnings, lines: gitlines };
|
|
289
|
-
}
|
|
290
|
-
export async function getGitDiff(ref1, ref2, dir) {
|
|
291
|
-
let gitlines;
|
|
292
|
-
let warnings;
|
|
293
|
-
const proj = await SfProject.resolve();
|
|
294
|
-
const resolveSourcePaths = proj.getUniquePackageDirectories().map((pDir) => pDir.fullPath);
|
|
295
|
-
if (ref2) {
|
|
296
|
-
gitlines = (await getFileStateChanges(ref1, ref2, dir)).filter((l) => resolveSourcePaths.some((f) => l.path.startsWith(f)));
|
|
297
|
-
}
|
|
298
|
-
else {
|
|
299
|
-
const { warnings: warn, lines } = await getStatusMatrix(dir, ref1);
|
|
300
|
-
warnings = warn.filter((l) => resolveSourcePaths.some((f) => l.startsWith(f)));
|
|
301
|
-
gitlines = lines.filter((l) => resolveSourcePaths.some((f) => l.path.startsWith(f)));
|
|
302
|
-
}
|
|
303
|
-
gitlines = gitlines.filter((line) => {
|
|
304
|
-
if (line.status === 'D') {
|
|
305
|
-
for (const sourcePath of resolveSourcePaths) {
|
|
306
|
-
const defaultFolder = join(sourcePath, 'main', 'default');
|
|
307
|
-
const filePath = line.path.replace(line.path.startsWith(defaultFolder) ? defaultFolder : sourcePath, '');
|
|
308
|
-
const target = gitlines.find((t) => t.path.endsWith(filePath) && t.status === 'A');
|
|
309
|
-
if (target) {
|
|
310
|
-
debug(`rename: ${line.path} -> ${target.path}`);
|
|
311
|
-
return false;
|
|
312
|
-
}
|
|
313
|
-
}
|
|
314
|
-
}
|
|
315
|
-
return true;
|
|
316
|
-
});
|
|
317
|
-
debug({ gitlines, warnings });
|
|
318
|
-
return { gitlines, warnings };
|
|
319
|
-
}
|
|
320
|
-
// eslint-disable-next-line complexity
|
|
321
|
-
export async function getGitResults(gitLines, ref1VirtualTreeContainer, ref2VirtualTreeContainer, destructiveChangesOnly, fsPaths) {
|
|
322
|
-
const results = {
|
|
323
|
-
manifest: new ComponentSet(undefined, registryAccess),
|
|
324
|
-
output: {
|
|
325
|
-
unchanged: [],
|
|
326
|
-
ignored: { ref1: [], ref2: [] },
|
|
327
|
-
counts: { added: 0, deleted: 0, modified: 0, unchanged: 0, ignored: 0, error: 0 },
|
|
328
|
-
errors: [],
|
|
329
|
-
},
|
|
330
|
-
};
|
|
331
|
-
const ref1Resolver = new MetadataResolver(registryAccess, ref1VirtualTreeContainer);
|
|
332
|
-
const ref2Resolver = new MetadataResolver(registryAccess, ref2VirtualTreeContainer);
|
|
333
|
-
const getComponentsFromPath = (resolver, path) => {
|
|
334
|
-
let result = [];
|
|
335
|
-
try {
|
|
336
|
-
result = resolver.getComponentsFromPath(path);
|
|
337
|
-
}
|
|
338
|
-
catch (error) {
|
|
339
|
-
results.output.counts.error++;
|
|
340
|
-
results.output.errors.push(error);
|
|
341
|
-
}
|
|
342
|
-
return result;
|
|
343
|
-
};
|
|
344
|
-
const analyzedFilesPromises = [];
|
|
345
|
-
for (const [, { status, path }] of gitLines.entries()) {
|
|
346
|
-
if (!fsPaths || fsPaths.some((fsPath) => resolve(path).startsWith(fsPath))) {
|
|
347
|
-
if (status === 'D') {
|
|
348
|
-
for (const c of getComponentsFromPath(ref1Resolver, path)) {
|
|
349
|
-
if (c.xml === path || gitLines.find((x) => x.path === c.xml)) {
|
|
350
|
-
results.manifest.add(c, DestructiveChangesType.POST);
|
|
351
|
-
results.output.counts.deleted++;
|
|
352
|
-
}
|
|
353
|
-
else {
|
|
354
|
-
try {
|
|
355
|
-
// in case a binary source file of a bundle was deleted, check if the bundle ist still valid and update instead of delete
|
|
356
|
-
ref2Resolver.getComponentsFromPath(c.xml);
|
|
357
|
-
if (!destructiveChangesOnly) {
|
|
358
|
-
results.manifest.add(c);
|
|
359
|
-
results.output.counts.added++;
|
|
360
|
-
}
|
|
361
|
-
}
|
|
362
|
-
catch (error) {
|
|
363
|
-
results.output.counts.error++;
|
|
364
|
-
results.output.errors.push(error);
|
|
365
|
-
}
|
|
366
|
-
}
|
|
367
|
-
}
|
|
368
|
-
}
|
|
369
|
-
else if (status === 'A') {
|
|
370
|
-
if (!destructiveChangesOnly) {
|
|
371
|
-
for (const c of getComponentsFromPath(ref2Resolver, path)) {
|
|
372
|
-
results.manifest.add(c);
|
|
373
|
-
results.output.counts.added++;
|
|
374
|
-
}
|
|
375
|
-
}
|
|
376
|
-
}
|
|
377
|
-
else {
|
|
378
|
-
analyzedFilesPromises.push(analyzeFile(path, ref1VirtualTreeContainer, ref2VirtualTreeContainer));
|
|
379
|
-
}
|
|
380
|
-
}
|
|
381
|
-
else {
|
|
382
|
-
debug(`${path} not included in sourcepath`);
|
|
383
|
-
}
|
|
384
|
-
}
|
|
385
|
-
for await (const check of analyzedFilesPromises) {
|
|
386
|
-
if (check.status === 0) {
|
|
387
|
-
if (!destructiveChangesOnly) {
|
|
388
|
-
for (const c of getComponentsFromPath(ref2Resolver, check.path)) {
|
|
389
|
-
results.manifest.add(c);
|
|
390
|
-
results.output.counts.modified++;
|
|
391
|
-
}
|
|
392
|
-
}
|
|
393
|
-
}
|
|
394
|
-
else if (check.status === -1) {
|
|
395
|
-
results.output.unchanged.push(check.path);
|
|
396
|
-
results.output.counts.unchanged++;
|
|
397
|
-
}
|
|
398
|
-
else if (check.status === -2) {
|
|
399
|
-
results.output.counts.ignored++;
|
|
400
|
-
results.output.ignored.ref2.push(check.path);
|
|
401
|
-
}
|
|
402
|
-
else {
|
|
403
|
-
if (check.toDestructiveChanges.length > 0 || (check.toManifest.length > 0 && !destructiveChangesOnly)) {
|
|
404
|
-
results.output.counts.modified++;
|
|
405
|
-
}
|
|
406
|
-
for (const c of check.toDestructiveChanges) {
|
|
407
|
-
results.manifest.add(c, DestructiveChangesType.POST);
|
|
408
|
-
}
|
|
409
|
-
if (!destructiveChangesOnly) {
|
|
410
|
-
for (const c of check.toManifest) {
|
|
411
|
-
results.manifest.add(c);
|
|
412
|
-
}
|
|
413
|
-
}
|
|
414
|
-
}
|
|
415
|
-
}
|
|
416
|
-
results.output.ignored = {
|
|
417
|
-
ref1: Array.from(ref1Resolver.forceIgnoredPaths),
|
|
418
|
-
ref2: results.output.ignored.ref2.concat(Array.from(ref2Resolver.forceIgnoredPaths)),
|
|
419
|
-
};
|
|
420
|
-
results.output.counts.ignored =
|
|
421
|
-
results.output.counts.ignored + ref1Resolver.forceIgnoredPaths.size + ref2Resolver.forceIgnoredPaths.size;
|
|
422
|
-
return results;
|
|
423
|
-
}
|
|
424
|
-
export function fixComponentSetChilds(cs) {
|
|
425
|
-
let sourceComponents = cs.getSourceComponents();
|
|
426
|
-
// SDR library is more strict and avoids fixes like this
|
|
427
|
-
const childsTobeReplacedByParent = [
|
|
428
|
-
...Object.keys(registry.types.workflow.children.types),
|
|
429
|
-
...Object.keys(registry.types.sharingrules.children.types),
|
|
430
|
-
...Object.keys(registry.types.customobjecttranslation.children.types),
|
|
431
|
-
...Object.keys(registry.types.bot.children.types),
|
|
432
|
-
];
|
|
433
|
-
sourceComponents = sourceComponents.map((component) => {
|
|
434
|
-
if (!component.isMarkedForDelete() && childsTobeReplacedByParent.includes(component.type.id)) {
|
|
435
|
-
debug(`replace: ${component.type.name}:${component.fullName} -> ${component.parent.type.name}:${component.parent.fullName}`);
|
|
436
|
-
return component.parent;
|
|
437
|
-
}
|
|
438
|
-
return component;
|
|
439
|
-
});
|
|
440
|
-
return new ComponentSet(sourceComponents, registryAccess);
|
|
441
|
-
}
|
|
442
|
-
//# sourceMappingURL=gitdiff.js.map
|
package/lib/utils/gitdiff.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gitdiff.js","sourceRoot":"","sources":["../../src/utils/gitdiff.ts"],"names":[],"mappings":"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"}
|
package/lib/utils/manifest.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function cleanupManifestFile(manifest: string, ignoreManifest: string): Promise<void>;
|
package/lib/utils/manifest.js
DELETED
|
@@ -1,66 +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 { CliUx } from '@oclif/core';
|
|
8
|
-
import fs from 'fs-extra';
|
|
9
|
-
import { ensureArray } from '@salesforce/kit';
|
|
10
|
-
import { XMLParser, XMLBuilder } from 'fast-xml-parser';
|
|
11
|
-
import { XML_DECL, XML_NS_KEY, XML_NS_URL } from '@salesforce/source-deploy-retrieve/lib/src/common/index.js';
|
|
12
|
-
function parseManifest(xmlData) {
|
|
13
|
-
const parser = new XMLParser({ stopNodes: ['version'], parseTagValue: false });
|
|
14
|
-
const { Package: { types, version }, } = parser.parse(xmlData);
|
|
15
|
-
const packageTypeMembers = ensureArray(types);
|
|
16
|
-
return { packageTypeMembers, version };
|
|
17
|
-
}
|
|
18
|
-
function js2Manifest(jsData) {
|
|
19
|
-
const js2Xml = new XMLBuilder({ format: true, indentBy: ' ', ignoreAttributes: false });
|
|
20
|
-
jsData.Package[XML_NS_KEY] = XML_NS_URL;
|
|
21
|
-
return XML_DECL.concat(js2Xml.build(jsData));
|
|
22
|
-
}
|
|
23
|
-
export async function cleanupManifestFile(manifest, ignoreManifest) {
|
|
24
|
-
const { packageTypeMembers: manifestTypeMembers, version } = parseManifest(fs.readFileSync(manifest, 'utf8'));
|
|
25
|
-
CliUx.ux.log(`apply '${ignoreManifest}' to '${manifest}'`);
|
|
26
|
-
const typeMap = new Map();
|
|
27
|
-
manifestTypeMembers.forEach((value) => {
|
|
28
|
-
typeMap.set(value.name, ensureArray(value.members));
|
|
29
|
-
});
|
|
30
|
-
const { packageTypeMembers: ignoreTypeMembers } = parseManifest(fs.readFileSync(ignoreManifest, 'utf8'));
|
|
31
|
-
ignoreTypeMembers.forEach((types) => {
|
|
32
|
-
if (typeMap.get(types.name)) {
|
|
33
|
-
const packageTypeMembers = ensureArray(types.members);
|
|
34
|
-
if (packageTypeMembers.includes('*') && packageTypeMembers.length > 1) {
|
|
35
|
-
const includemembers = packageTypeMembers.slice();
|
|
36
|
-
includemembers.splice(includemembers.indexOf('*'), 1);
|
|
37
|
-
const includedmembers = typeMap.get(types.name).filter((value) => includemembers.includes(value));
|
|
38
|
-
if (includedmembers.length) {
|
|
39
|
-
CliUx.ux.log('include only members ' + includedmembers.toString() + ' for type ' + types.name);
|
|
40
|
-
typeMap.set(types.name, includedmembers);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
if (packageTypeMembers.includes('*') && packageTypeMembers.length === 1) {
|
|
44
|
-
CliUx.ux.log('exclude all members for type ' + types.name);
|
|
45
|
-
typeMap.delete(types.name);
|
|
46
|
-
}
|
|
47
|
-
if (!packageTypeMembers.includes('*')) {
|
|
48
|
-
const includedmembers = typeMap.get(types.name).filter((value) => !packageTypeMembers.includes(value));
|
|
49
|
-
typeMap.set(types.name, includedmembers);
|
|
50
|
-
}
|
|
51
|
-
packageTypeMembers.forEach((member) => {
|
|
52
|
-
if (member.startsWith('!')) {
|
|
53
|
-
typeMap.get(types.name).push(member.substring(1));
|
|
54
|
-
}
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
});
|
|
58
|
-
const typeMembers = [];
|
|
59
|
-
for (const [typeName, members] of typeMap.entries()) {
|
|
60
|
-
if (members.length) {
|
|
61
|
-
typeMembers.push({ name: typeName, members });
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
await fs.writeFile(manifest, js2Manifest({ Package: { types: typeMembers, version } }));
|
|
65
|
-
}
|
|
66
|
-
//# sourceMappingURL=manifest.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/utils/manifest.ts"],"names":[],"mappings":"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"}
|
package/messages/gitdiff.json
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"commandDescription": "create a manifest and destructiveChanges manifest using 'git diff' data\nUse 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'.\n(See https://git-scm.com/docs/git-diff)",
|
|
3
|
-
"examples": [
|
|
4
|
-
"$ sfdx jayree:manifest:git:diff <commit> <commit>\n$ sfdx jayree:manifest:git:diff <commit>..<commit>\nuses the changes between two arbitrary <commit>",
|
|
5
|
-
"$ sfdx jayree:manifest:git:diff <commit>...<commit>\nuses the changes on the branch containing and up to the second <commit>, starting at a common ancestor of both <commit>.",
|
|
6
|
-
"$ sfdx jayree:manifest:git:diff branchA..branchB\nuses the diff of what is unique in branchB (REF2) and unique in branchA (REF1)",
|
|
7
|
-
"$ sfdx jayree:manifest:git:diff branchA...branchB\nuses the diff of what is unique in branchB (REF2)"
|
|
8
|
-
],
|
|
9
|
-
"outputdir": "directory to save the created manifest files",
|
|
10
|
-
"sourcepath": "comma-separated list of source file paths to limit the diff",
|
|
11
|
-
"destructivechangesonly": "create a destructiveChanges manifest only (package.xml will be empty)"
|
|
12
|
-
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"commandDescription": "removes those tags from a manifest file that are present in a second manifest file\nUse this command to remove components or metadata types from a manifes file.\nIf the 'cleanup' manifest file (--file) doesn't exist, a template file is created, which can then be modified.",
|
|
3
|
-
"manifestFlagDescription": "path to the manifest file",
|
|
4
|
-
"fileFlagDescription": "path to the second 'cleanup' manifest file",
|
|
5
|
-
"examples": ["$ sfdx jayree:manifest:cleanup --manifest=package.xml --file=packageignore.xml"]
|
|
6
|
-
}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"commandDescription": "generate a complete manifest file form the specified org\nUse this command to generate a manifest file based on an existing org.",
|
|
3
|
-
"configFlagDescription": "path to config file",
|
|
4
|
-
"quickfilterFlagDescription": "csv separated list of metadata type, member or file names to filter on",
|
|
5
|
-
"matchCaseFlagDescription": "enable 'match case' for the quickfilter",
|
|
6
|
-
"matchWholeWordFlagDescription": "enable 'match whole word' for the quickfilter",
|
|
7
|
-
"fileFlagDescription": "write to 'file' instead of stdout",
|
|
8
|
-
"excludeManagedFlagDescription": "exclude managed packages from output",
|
|
9
|
-
"excludeAllFlagDescription": "exclude all packages from output",
|
|
10
|
-
"includeflowversionsDescription": "include flow versions as with api version 43.0",
|
|
11
|
-
"examples": [
|
|
12
|
-
"$ sfdx jayree:manifest:generate --targetusername myOrg@example.com",
|
|
13
|
-
"<?xml version='1.0' encoding='UTF-8'?>",
|
|
14
|
-
"<Package xmlns='http://soap.sforce.com/2006/04/metadata'>...</Package>"
|
|
15
|
-
]
|
|
16
|
-
}
|