@jayree/sfdx-plugin-manifest 2.5.3 → 2.6.1
Sign up to get free protection for your applications and to get access to all the features.
- package/CHANGELOG.md +22 -0
- package/README.md +63 -4
- package/lib/SDR-extra/collections/componentSetExtra.d.ts +38 -0
- package/lib/SDR-extra/collections/componentSetExtra.js +66 -0
- package/lib/SDR-extra/collections/componentSetExtra.js.map +1 -0
- package/lib/SDR-extra/resolve/gitDiffResolver.d.ts +18 -0
- package/lib/SDR-extra/resolve/gitDiffResolver.js +192 -0
- package/lib/SDR-extra/resolve/gitDiffResolver.js.map +1 -0
- package/lib/SDR-extra/resolve/treeContainersExtra.d.ts +13 -0
- package/lib/SDR-extra/resolve/treeContainersExtra.js +51 -0
- package/lib/SDR-extra/resolve/treeContainersExtra.js.map +1 -0
- package/lib/SDR-extra/utils/git-extra.d.ts +65 -0
- package/lib/SDR-extra/utils/git-extra.js +198 -0
- package/lib/SDR-extra/utils/git-extra.js.map +1 -0
- package/lib/commands/jayree/manifest/beta/git/diff.d.ts +32 -0
- package/lib/commands/jayree/manifest/beta/git/diff.js +127 -0
- package/lib/commands/jayree/manifest/beta/git/diff.js.map +1 -0
- package/lib/jayreeSfdxCommand.d.ts +3 -0
- package/lib/jayreeSfdxCommand.js +8 -1
- package/lib/jayreeSfdxCommand.js.map +1 -1
- package/lib/utils/gitdiff.js +1 -1
- package/lib/utils/gitdiff.js.map +1 -1
- package/messages/gitdiffbeta.json +17 -0
- package/oclif.manifest.json +1 -1
- package/package.json +5 -5
package/CHANGELOG.md
CHANGED
@@ -1,3 +1,25 @@
|
|
1
|
+
## [2.6.1](https://github.com/jayree/sfdx-plugin-manifest/compare/v2.6.0...v2.6.1) (2023-01-01)
|
2
|
+
|
3
|
+
|
4
|
+
### Bug Fixes
|
5
|
+
|
6
|
+
* update changelog ([0829ae1](https://github.com/jayree/sfdx-plugin-manifest/commit/0829ae1362fec75ede6c8d63f669fabb6d6c1243))
|
7
|
+
|
8
|
+
# [2.6.0](https://github.com/jayree/sfdx-plugin-manifest/compare/v2.5.3...v2.6.0) (2023-01-01)
|
9
|
+
|
10
|
+
|
11
|
+
### Bug Fixes
|
12
|
+
|
13
|
+
* **gitdiff:** fix diff status of childComponents ([ef13e60](https://github.com/jayree/sfdx-plugin-manifest/commit/ef13e600df02bf23aa764084686c0eb789055c20))
|
14
|
+
|
15
|
+
|
16
|
+
### Features
|
17
|
+
|
18
|
+
* **manifest:beta:git:diff:** added new beta command manifest:beta:git:diff ([f4b6242](https://github.com/jayree/sfdx-plugin-manifest/commit/f4b6242e52a4a04d1279e2090dcf1fe37aca2ff2))
|
19
|
+
|
20
|
+
I recommend that you try the new manifest:beta:git:diff command.\
|
21
|
+
I plan to make the beta command generally available in the near future.
|
22
|
+
|
1
23
|
## [2.5.3](https://github.com/jayree/sfdx-plugin-manifest/compare/v2.5.2...v2.5.3) (2022-12-31)
|
2
24
|
|
3
25
|
|
package/README.md
CHANGED
@@ -22,7 +22,7 @@ $ sfdx plugins:install @jayree/sfdx-plugin-manifest
|
|
22
22
|
$ sfdx jayree:[COMMAND]
|
23
23
|
running command...
|
24
24
|
$ sfdx plugins
|
25
|
-
@jayree/sfdx-plugin-manifest 2.
|
25
|
+
@jayree/sfdx-plugin-manifest 2.6.1
|
26
26
|
$ sfdx help jayree:[COMMAND]
|
27
27
|
USAGE
|
28
28
|
$ sfdx jayree:COMMAND
|
@@ -33,10 +33,69 @@ USAGE
|
|
33
33
|
## Commands
|
34
34
|
|
35
35
|
<!-- commands -->
|
36
|
+
* [`sfdx jayree:manifest:beta:git:diff`](#sfdx-jayreemanifestbetagitdiff)
|
36
37
|
* [`sfdx jayree:manifest:cleanup`](#sfdx-jayreemanifestcleanup)
|
37
38
|
* [`sfdx jayree:manifest:generate`](#sfdx-jayreemanifestgenerate)
|
38
39
|
* [`sfdx jayree:manifest:git:diff`](#sfdx-jayreemanifestgitdiff)
|
39
40
|
|
41
|
+
### `sfdx jayree:manifest:beta:git:diff`
|
42
|
+
|
43
|
+
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
|
44
|
+
|
45
|
+
```
|
46
|
+
USAGE
|
47
|
+
$ sfdx jayree:manifest:beta:git:diff [-p <array>] [-o <string>] [-d] [--apiversion <string>] [--json] [--loglevel
|
48
|
+
trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL]
|
49
|
+
|
50
|
+
ARGUMENTS
|
51
|
+
REF1 base commit or branch
|
52
|
+
REF2 commit or branch to compare to the base commit
|
53
|
+
|
54
|
+
FLAGS
|
55
|
+
-d, --destructivechangesonly create a destructiveChanges manifest
|
56
|
+
only (package.xml will be empty)
|
57
|
+
-o, --outputdir=<value> directory to save the created
|
58
|
+
manifest files
|
59
|
+
-p, --sourcepath=<value> comma-separated list of paths to the
|
60
|
+
local source files to include in the
|
61
|
+
manifest
|
62
|
+
--apiversion=<value> override the api version used for
|
63
|
+
api requests made by this command
|
64
|
+
--json format output as json
|
65
|
+
--loglevel=(trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL) [default: warn] logging level for
|
66
|
+
this command invocation
|
67
|
+
|
68
|
+
DESCRIPTION
|
69
|
+
create a project manifest and destructiveChanges manifest that lists the metadata components you want to deploy or
|
70
|
+
delete based on changes in your git history
|
71
|
+
Use this command to create a manifest and destructiveChanges manifest file based on the difference (git diff) of two
|
72
|
+
git refs.
|
73
|
+
|
74
|
+
You can use all ways to spell <commit> which are valid for 'git diff'.
|
75
|
+
(See https://git-scm.com/docs/git-diff)
|
76
|
+
|
77
|
+
EXAMPLES
|
78
|
+
$ sfdx jayree:manifest:beta:git:diff <commit> <commit>
|
79
|
+
|
80
|
+
$ sfdx jayree:manifest:git:diff <commit>..<commit>
|
81
|
+
|
82
|
+
uses the changes between two arbitrary <commit>
|
83
|
+
|
84
|
+
$ sfdx jayree:manifest:beta:git:diff <commit>...<commit>
|
85
|
+
|
86
|
+
uses the changes on the branch containing and up to the second <commit>, starting at a common ancestor of both <commit>.
|
87
|
+
|
88
|
+
$ sfdx jayree:manifest:beta:git:diff branchA..branchB
|
89
|
+
|
90
|
+
uses the diff of what is unique in branchB (REF2) and unique in branchA (REF1)
|
91
|
+
|
92
|
+
$ sfdx jayree:manifest:beta:git:diff branchA...branchB
|
93
|
+
|
94
|
+
uses the diff of what is unique in branchB (REF2)
|
95
|
+
```
|
96
|
+
|
97
|
+
_See code: [src/commands/jayree/manifest/beta/git/diff.ts](https://github.com/jayree/sfdx-plugin-manifest/blob/v2.6.1/src/commands/jayree/manifest/beta/git/diff.ts)_
|
98
|
+
|
40
99
|
### `sfdx jayree:manifest:cleanup`
|
41
100
|
|
42
101
|
removes those tags from a manifest file that are present in a second manifest file
|
@@ -63,7 +122,7 @@ EXAMPLES
|
|
63
122
|
$ sfdx jayree:manifest:cleanup --manifest=package.xml --file=packageignore.xml
|
64
123
|
```
|
65
124
|
|
66
|
-
_See code: [src/commands/jayree/manifest/cleanup.ts](https://github.com/jayree/sfdx-plugin-manifest/blob/v2.
|
125
|
+
_See code: [src/commands/jayree/manifest/cleanup.ts](https://github.com/jayree/sfdx-plugin-manifest/blob/v2.6.1/src/commands/jayree/manifest/cleanup.ts)_
|
67
126
|
|
68
127
|
### `sfdx jayree:manifest:generate`
|
69
128
|
|
@@ -106,7 +165,7 @@ EXAMPLES
|
|
106
165
|
<Package xmlns='http://soap.sforce.com/2006/04/metadata'>...</Package>
|
107
166
|
```
|
108
167
|
|
109
|
-
_See code: [src/commands/jayree/manifest/generate.ts](https://github.com/jayree/sfdx-plugin-manifest/blob/v2.
|
168
|
+
_See code: [src/commands/jayree/manifest/generate.ts](https://github.com/jayree/sfdx-plugin-manifest/blob/v2.6.1/src/commands/jayree/manifest/generate.ts)_
|
110
169
|
|
111
170
|
### `sfdx jayree:manifest:git:diff`
|
112
171
|
|
@@ -160,5 +219,5 @@ EXAMPLES
|
|
160
219
|
uses the diff of what is unique in branchB (REF2)
|
161
220
|
```
|
162
221
|
|
163
|
-
_See code: [src/commands/jayree/manifest/git/diff.ts](https://github.com/jayree/sfdx-plugin-manifest/blob/v2.
|
222
|
+
_See code: [src/commands/jayree/manifest/git/diff.ts](https://github.com/jayree/sfdx-plugin-manifest/blob/v2.6.1/src/commands/jayree/manifest/git/diff.ts)_
|
164
223
|
<!-- commandsstop -->
|
@@ -0,0 +1,38 @@
|
|
1
|
+
import { ComponentSet, OptionalTreeRegistryOptions } from '@salesforce/source-deploy-retrieve';
|
2
|
+
import Debug from 'debug';
|
3
|
+
export declare const debug: Debug.Debugger;
|
4
|
+
export interface FromGitDiffOptions extends OptionalTreeRegistryOptions {
|
5
|
+
/**
|
6
|
+
* Git ref to resolve components against
|
7
|
+
*/
|
8
|
+
ref: string | string[];
|
9
|
+
/**
|
10
|
+
* File paths or directory paths to resolve components against
|
11
|
+
*/
|
12
|
+
fsPaths?: string[];
|
13
|
+
}
|
14
|
+
export declare class ComponentSetExtra extends ComponentSet {
|
15
|
+
/**
|
16
|
+
* Resolve metadata components from git diff <ref> HEAD.
|
17
|
+
*
|
18
|
+
* @param ref Git ref to resolve components against HEAD
|
19
|
+
* @returns ComponentSet of source resolved components
|
20
|
+
*/
|
21
|
+
static fromGitDiff(ref: string): Promise<ComponentSet>;
|
22
|
+
/**
|
23
|
+
* Resolve metadata components from git diff <ref1> <ref2>.
|
24
|
+
*
|
25
|
+
* @param refs Git refs to resolve components against
|
26
|
+
* @returns ComponentSet of source resolved components
|
27
|
+
*/
|
28
|
+
static fromGitDiff(refs: string[]): Promise<ComponentSet>;
|
29
|
+
/**
|
30
|
+
* Resolve metadata components from git diff.
|
31
|
+
* Customize the resolution process using an options object, such as specifying filters
|
32
|
+
* and resolving against a different file system abstraction (see {@link TreeContainer}).
|
33
|
+
*
|
34
|
+
* @param options
|
35
|
+
* @returns ComponentSet of source resolved components
|
36
|
+
*/
|
37
|
+
static fromGitDiff(options: FromGitDiffOptions): Promise<ComponentSet>;
|
38
|
+
}
|
@@ -0,0 +1,66 @@
|
|
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 { ComponentSet, DestructiveChangesType, registry as untypedRegistry, } from '@salesforce/source-deploy-retrieve';
|
8
|
+
import { SfProject } from '@salesforce/core';
|
9
|
+
import Debug from 'debug';
|
10
|
+
import { GitDiffResolver } from '../resolve/gitDiffResolver.js';
|
11
|
+
export const debug = Debug('sf:gitDiff:ComponentSetExtra');
|
12
|
+
export class ComponentSetExtra extends ComponentSet {
|
13
|
+
static async fromGitDiff(input) {
|
14
|
+
let fsPaths;
|
15
|
+
let registry;
|
16
|
+
let tree;
|
17
|
+
let ref1;
|
18
|
+
let ref2;
|
19
|
+
if (Array.isArray(input)) {
|
20
|
+
ref1 = input[0];
|
21
|
+
ref2 = input[1];
|
22
|
+
}
|
23
|
+
else if (typeof input === 'object') {
|
24
|
+
if (Array.isArray(input.ref)) {
|
25
|
+
ref1 = input.ref[0];
|
26
|
+
ref2 = input.ref[1];
|
27
|
+
}
|
28
|
+
else {
|
29
|
+
ref1 = input.ref;
|
30
|
+
}
|
31
|
+
fsPaths = input.fsPaths;
|
32
|
+
registry = input.registry ?? registry;
|
33
|
+
tree = input.tree ?? tree;
|
34
|
+
}
|
35
|
+
else {
|
36
|
+
ref1 = input;
|
37
|
+
}
|
38
|
+
const proj = await SfProject.resolve();
|
39
|
+
fsPaths = fsPaths || proj.getUniquePackageDirectories().map((pDir) => pDir.fullPath);
|
40
|
+
const gitDiffResolver = new GitDiffResolver();
|
41
|
+
const inclusiveFilter = await gitDiffResolver.resolve(ref1, ref2, fsPaths);
|
42
|
+
const components = ComponentSet.fromSource({
|
43
|
+
fsPaths,
|
44
|
+
include: inclusiveFilter,
|
45
|
+
tree,
|
46
|
+
registry,
|
47
|
+
});
|
48
|
+
const childsTobeReplacedByParent = [
|
49
|
+
...Object.keys(untypedRegistry.types.workflow.children.types),
|
50
|
+
...Object.keys(untypedRegistry.types.sharingrules.children.types),
|
51
|
+
...Object.keys(untypedRegistry.types.customobjecttranslation.children.types),
|
52
|
+
...Object.keys(untypedRegistry.types.bot.children.types),
|
53
|
+
];
|
54
|
+
for (const component of inclusiveFilter.getSourceComponents()) {
|
55
|
+
if (component.isMarkedForDelete()) {
|
56
|
+
components.add(component, DestructiveChangesType.POST);
|
57
|
+
}
|
58
|
+
else if (childsTobeReplacedByParent.includes(component.type.id)) {
|
59
|
+
debug(`add parent ${component.parent.type.name}:${component.parent.fullName} of ${component.type.name}:${component.fullName} to manifest`);
|
60
|
+
components.add(component.parent);
|
61
|
+
}
|
62
|
+
}
|
63
|
+
return components;
|
64
|
+
}
|
65
|
+
}
|
66
|
+
//# sourceMappingURL=componentSetExtra.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"componentSetExtra.js","sourceRoot":"","sources":["../../../src/SDR-extra/collections/componentSetExtra.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,18 @@
|
|
1
|
+
import { ComponentSet } from '@salesforce/source-deploy-retrieve';
|
2
|
+
import Debug from 'debug';
|
3
|
+
export declare const debug: Debug.Debugger;
|
4
|
+
/**
|
5
|
+
* Resolver for metadata type and component objects from a git diff result
|
6
|
+
*
|
7
|
+
* @internal
|
8
|
+
*/
|
9
|
+
export declare class GitDiffResolver {
|
10
|
+
private ref1VirtualTreeContainer;
|
11
|
+
private ref2VirtualTreeContainer;
|
12
|
+
private ref1Resolver;
|
13
|
+
private ref2Resolver;
|
14
|
+
private static getFileStatus;
|
15
|
+
resolve(ref1: string, ref2: string, fsPaths: string[]): Promise<ComponentSet>;
|
16
|
+
private getComponentSet;
|
17
|
+
private getChildComponentStatus;
|
18
|
+
}
|
@@ -0,0 +1,192 @@
|
|
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 path from 'path';
|
8
|
+
import { ComponentSet, RegistryAccess, MetadataResolver, SourceComponent, DestructiveChangesType, } from '@salesforce/source-deploy-retrieve';
|
9
|
+
import { SfProject, SfError } from '@salesforce/core';
|
10
|
+
import fs from 'fs-extra';
|
11
|
+
import { parseMetadataXml } from '@salesforce/source-deploy-retrieve/lib/src/utils/index.js';
|
12
|
+
import equal from 'fast-deep-equal';
|
13
|
+
import Debug from 'debug';
|
14
|
+
import { resolveMultiRefString, resolveSingleRefString, getFileState, getStatus } from '../utils/git-extra.js';
|
15
|
+
import { VirtualTreeContainerExtra } from './treeContainersExtra.js';
|
16
|
+
export const debug = Debug('sf:gitDiff:resolver');
|
17
|
+
const registryAccess = new RegistryAccess();
|
18
|
+
/**
|
19
|
+
* Resolver for metadata type and component objects from a git diff result
|
20
|
+
*
|
21
|
+
* @internal
|
22
|
+
*/
|
23
|
+
export class GitDiffResolver {
|
24
|
+
static async getFileStatus(ref1, ref2, dir, resolveSourcePaths) {
|
25
|
+
let files;
|
26
|
+
if (ref2) {
|
27
|
+
files = (await getFileState(ref1, ref2, dir)).filter((l) => resolveSourcePaths.some((f) => l.path.startsWith(f)));
|
28
|
+
}
|
29
|
+
else {
|
30
|
+
files = await getStatus(dir, ref1);
|
31
|
+
files = files.filter((l) => resolveSourcePaths.some((f) => l.path.startsWith(f)));
|
32
|
+
}
|
33
|
+
files = files.filter((file) => {
|
34
|
+
if (file.status === 'D') {
|
35
|
+
for (const sourcePath of resolveSourcePaths) {
|
36
|
+
const defaultFolder = path.join(sourcePath, 'main', 'default');
|
37
|
+
const filePath = file.path.replace(file.path.startsWith(defaultFolder) ? defaultFolder : sourcePath, '');
|
38
|
+
const target = files.find((t) => t.path.endsWith(filePath) && t.status === 'A');
|
39
|
+
if (target) {
|
40
|
+
return false;
|
41
|
+
}
|
42
|
+
}
|
43
|
+
}
|
44
|
+
return true;
|
45
|
+
});
|
46
|
+
return files;
|
47
|
+
}
|
48
|
+
async resolve(ref1, ref2, fsPaths) {
|
49
|
+
const proj = await SfProject.resolve();
|
50
|
+
if (ref2 === undefined) {
|
51
|
+
const { ref1: r1, ref2: r2 } = await resolveMultiRefString({ ref: ref1, dir: proj.getPath(), fs });
|
52
|
+
ref1 = r1;
|
53
|
+
ref2 = r2;
|
54
|
+
}
|
55
|
+
else {
|
56
|
+
const [r1, r2] = await Promise.all([
|
57
|
+
resolveSingleRefString({ ref: ref1, dir: proj.getPath(), fs }),
|
58
|
+
resolveSingleRefString({ ref: ref2, dir: proj.getPath(), fs }),
|
59
|
+
]);
|
60
|
+
ref1 = r1;
|
61
|
+
ref2 = r2;
|
62
|
+
}
|
63
|
+
debug({ ref1, ref2 });
|
64
|
+
const fileStatus = await GitDiffResolver.getFileStatus(ref1, ref2, proj.getPath(), fsPaths);
|
65
|
+
debug({ fileStatus });
|
66
|
+
const [ref1VirtualTreeContainer, ref2VirtualTreeContainer] = await Promise.all([
|
67
|
+
VirtualTreeContainerExtra.fromGitRef(ref1, proj.getPath(), fileStatus.filter((l) => l.status === 'M').map((l) => l.path)),
|
68
|
+
VirtualTreeContainerExtra.fromGitRef(ref2, proj.getPath(), fileStatus.filter((l) => l.status === 'M').map((l) => l.path)),
|
69
|
+
]);
|
70
|
+
this.ref1VirtualTreeContainer = ref1VirtualTreeContainer;
|
71
|
+
this.ref2VirtualTreeContainer = ref2VirtualTreeContainer;
|
72
|
+
fsPaths = fsPaths.map((filepath) => {
|
73
|
+
filepath = path.resolve(filepath);
|
74
|
+
if (!this.ref1VirtualTreeContainer.exists(filepath) && !this.ref2VirtualTreeContainer.exists(filepath)) {
|
75
|
+
throw new SfError(`The sourcepath "${filepath}" is not a valid source file path.`);
|
76
|
+
}
|
77
|
+
return filepath;
|
78
|
+
});
|
79
|
+
debug({ fsPaths });
|
80
|
+
this.ref1Resolver = new MetadataResolver(registryAccess, this.ref1VirtualTreeContainer);
|
81
|
+
this.ref2Resolver = new MetadataResolver(registryAccess, this.ref2VirtualTreeContainer);
|
82
|
+
return this.getComponentSet(fileStatus, fsPaths);
|
83
|
+
}
|
84
|
+
async getComponentSet(gitLines, fsPaths) {
|
85
|
+
const results = new ComponentSet(undefined, registryAccess);
|
86
|
+
const childComponentPromises = [];
|
87
|
+
for (const [, { status, path: fpath }] of gitLines.entries()) {
|
88
|
+
if (!fsPaths || fsPaths.some((fsPath) => path.resolve(fpath).startsWith(fsPath))) {
|
89
|
+
if (status === 'D') {
|
90
|
+
for (const c of this.ref1Resolver.getComponentsFromPath(fpath)) {
|
91
|
+
// if the component supports partial delete AND there are files that are not deleted,
|
92
|
+
// set the component for deploy, not for delete.
|
93
|
+
if (!!c.type.supportsPartialDelete && c.content && this.ref2VirtualTreeContainer.exists(c.content)) {
|
94
|
+
// all bundle types have a directory name
|
95
|
+
try {
|
96
|
+
this.ref2Resolver
|
97
|
+
.getComponentsFromPath(path.resolve(c.content))
|
98
|
+
.filter((input) => input instanceof SourceComponent)
|
99
|
+
.map((nonDeletedComponent) => {
|
100
|
+
results.add(nonDeletedComponent);
|
101
|
+
});
|
102
|
+
}
|
103
|
+
catch (e) {
|
104
|
+
debug(`unable to find component at ${c.content}. That's ok if it was supposed to be deleted`);
|
105
|
+
}
|
106
|
+
}
|
107
|
+
else {
|
108
|
+
results.add(c, DestructiveChangesType.POST);
|
109
|
+
}
|
110
|
+
}
|
111
|
+
}
|
112
|
+
else if (status === 'A') {
|
113
|
+
for (const c of this.ref2Resolver.getComponentsFromPath(fpath)) {
|
114
|
+
results.add(c);
|
115
|
+
}
|
116
|
+
}
|
117
|
+
else {
|
118
|
+
childComponentPromises.push(this.getChildComponentStatus(fpath));
|
119
|
+
}
|
120
|
+
}
|
121
|
+
}
|
122
|
+
for await (const check of childComponentPromises) {
|
123
|
+
if (check.status === 0) {
|
124
|
+
for (const c of this.ref2Resolver.getComponentsFromPath(check.path)) {
|
125
|
+
results.add(c);
|
126
|
+
}
|
127
|
+
}
|
128
|
+
else if (check.status === -1) {
|
129
|
+
// unchanged file
|
130
|
+
}
|
131
|
+
else {
|
132
|
+
for (const c of check.toDestructiveChanges) {
|
133
|
+
results.add(c, DestructiveChangesType.POST);
|
134
|
+
}
|
135
|
+
for (const c of check.toManifest) {
|
136
|
+
results.add(c);
|
137
|
+
}
|
138
|
+
}
|
139
|
+
}
|
140
|
+
debug({
|
141
|
+
forceIgnoredPaths: {
|
142
|
+
ref1: Array.from(this.ref1Resolver.forceIgnoredPaths),
|
143
|
+
ref2: Array.from(this.ref2Resolver.forceIgnoredPaths),
|
144
|
+
},
|
145
|
+
});
|
146
|
+
return results;
|
147
|
+
}
|
148
|
+
async getChildComponentStatus(fpath) {
|
149
|
+
if (!parseMetadataXml(fpath)) {
|
150
|
+
return { path: fpath, status: 0 };
|
151
|
+
}
|
152
|
+
const [ref2Component] = this.ref2Resolver.getComponentsFromPath(fpath); // git path only conaints files
|
153
|
+
const [ref1Component] = this.ref1Resolver.getComponentsFromPath(fpath); // git path only conaints files
|
154
|
+
if (equal(await ref1Component.parseXml(), await ref2Component.parseXml())) {
|
155
|
+
return { path: fpath, status: -1 };
|
156
|
+
}
|
157
|
+
if (ref1Component.type.strictDirectoryName === true || !ref1Component.type.children) {
|
158
|
+
return { path: fpath, status: 0 };
|
159
|
+
}
|
160
|
+
const getUniqueIdentifier = (component) => `${component.type.name}#${component[component.type.uniqueIdElement]}`;
|
161
|
+
const ref2ChildUniqueIdArray = ref2Component
|
162
|
+
.getChildren()
|
163
|
+
.map((childComponent) => getUniqueIdentifier(childComponent));
|
164
|
+
const ref1ChildUniqueIdArray = ref1Component
|
165
|
+
.getChildren()
|
166
|
+
.map((childComponent) => getUniqueIdentifier(childComponent));
|
167
|
+
const childComponentsNotInRef2 = ref1Component
|
168
|
+
.getChildren()
|
169
|
+
.filter((childComponent) => !ref2ChildUniqueIdArray.includes(getUniqueIdentifier(childComponent))); // deleted
|
170
|
+
const childComponentsNotInRef1 = ref2Component
|
171
|
+
.getChildren()
|
172
|
+
.filter((childComponent) => !ref1ChildUniqueIdArray.includes(getUniqueIdentifier(childComponent))); // added
|
173
|
+
const childComponentsInRef1AndRef2 = ref1Component
|
174
|
+
.getChildren()
|
175
|
+
.filter((childComponent) => ref2ChildUniqueIdArray.includes(getUniqueIdentifier(childComponent))); // modified?
|
176
|
+
for await (const childComponentRef1 of childComponentsInRef1AndRef2) {
|
177
|
+
const [childComponentRef2] = ref2Component
|
178
|
+
.getChildren()
|
179
|
+
.filter((childComponent) => getUniqueIdentifier(childComponentRef1) === getUniqueIdentifier(childComponent));
|
180
|
+
if (!equal(await childComponentRef1.parseXml(), await childComponentRef2.parseXml())) {
|
181
|
+
childComponentsNotInRef1.push(childComponentRef2); // modified! -> add to added
|
182
|
+
}
|
183
|
+
}
|
184
|
+
return {
|
185
|
+
path: fpath,
|
186
|
+
status: 1 + childComponentsNotInRef2.length + childComponentsNotInRef1.length,
|
187
|
+
toManifest: childComponentsNotInRef1,
|
188
|
+
toDestructiveChanges: childComponentsNotInRef2,
|
189
|
+
};
|
190
|
+
}
|
191
|
+
}
|
192
|
+
//# sourceMappingURL=gitDiffResolver.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"gitDiffResolver.js","sourceRoot":"","sources":["../../../src/SDR-extra/resolve/gitDiffResolver.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,13 @@
|
|
1
|
+
import { VirtualTreeContainer } from '@salesforce/source-deploy-retrieve';
|
2
|
+
export declare class VirtualTreeContainerExtra extends VirtualTreeContainer {
|
3
|
+
/**
|
4
|
+
* Designed for recreating virtual files from a git ref
|
5
|
+
* To support use of MetadataResolver to also resolve metadata xmls file names can be provided
|
6
|
+
*
|
7
|
+
* @param ref git ref
|
8
|
+
* @param dir git dir
|
9
|
+
* @param includeBufferForFiles full paths to modified files
|
10
|
+
* @returns VirtualTreeContainer
|
11
|
+
*/
|
12
|
+
static fromGitRef(ref: string, dir: string, includeBufferForFiles: string[]): Promise<VirtualTreeContainer>;
|
13
|
+
}
|
@@ -0,0 +1,51 @@
|
|
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 path from 'path';
|
8
|
+
import { VirtualTreeContainer } from '@salesforce/source-deploy-retrieve';
|
9
|
+
import { parseMetadataXml } from '@salesforce/source-deploy-retrieve/lib/src/utils/index.js';
|
10
|
+
import fs from 'fs-extra';
|
11
|
+
import { listFullPathFiles, getOid, readBlobAsBuffer } from '../utils/git-extra.js';
|
12
|
+
export class VirtualTreeContainerExtra extends VirtualTreeContainer {
|
13
|
+
/**
|
14
|
+
* Designed for recreating virtual files from a git ref
|
15
|
+
* To support use of MetadataResolver to also resolve metadata xmls file names can be provided
|
16
|
+
*
|
17
|
+
* @param ref git ref
|
18
|
+
* @param dir git dir
|
19
|
+
* @param includeBufferForFiles full paths to modified files
|
20
|
+
* @returns VirtualTreeContainer
|
21
|
+
*/
|
22
|
+
static async fromGitRef(ref, dir, includeBufferForFiles) {
|
23
|
+
const paths = await listFullPathFiles(dir, ref);
|
24
|
+
const oid = await getOid(dir, ref);
|
25
|
+
const virtualDirectoryByFullPath = new Map();
|
26
|
+
for await (const filename of paths) {
|
27
|
+
let dirPath = path.dirname(filename);
|
28
|
+
virtualDirectoryByFullPath.set(dirPath, {
|
29
|
+
dirPath,
|
30
|
+
children: Array.from(new Set(virtualDirectoryByFullPath.get(dirPath)?.children ?? []).add({
|
31
|
+
name: path.basename(filename),
|
32
|
+
data: parseMetadataXml(filename) && includeBufferForFiles.includes(filename)
|
33
|
+
? oid
|
34
|
+
? await readBlobAsBuffer(dir, oid, filename)
|
35
|
+
: await fs.readFile(filename)
|
36
|
+
: Buffer.from(''),
|
37
|
+
})),
|
38
|
+
});
|
39
|
+
const splits = filename.split(path.sep);
|
40
|
+
for (let i = 1; i < splits.length - 1; i++) {
|
41
|
+
dirPath = splits.slice(0, i + 1).join(path.sep);
|
42
|
+
virtualDirectoryByFullPath.set(dirPath, {
|
43
|
+
dirPath,
|
44
|
+
children: Array.from(new Set(virtualDirectoryByFullPath.get(dirPath)?.children ?? []).add(splits[i + 1])),
|
45
|
+
});
|
46
|
+
}
|
47
|
+
}
|
48
|
+
return new VirtualTreeContainer(Array.from(virtualDirectoryByFullPath.values()));
|
49
|
+
}
|
50
|
+
}
|
51
|
+
//# sourceMappingURL=treeContainersExtra.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"treeContainersExtra.js","sourceRoot":"","sources":["../../../src/SDR-extra/resolve/treeContainersExtra.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,oBAAoB,EAAoB,MAAM,oCAAoC,CAAC;AAC5F,OAAO,EAAE,gBAAgB,EAAE,MAAM,2DAA2D,CAAC;AAC7F,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEpF,MAAM,OAAO,yBAA0B,SAAQ,oBAAoB;IACjE;;;;;;;;OAQG;IACI,MAAM,CAAC,KAAK,CAAC,UAAU,CAC5B,GAAW,EACX,GAAW,EACX,qBAA+B;QAE/B,MAAM,KAAK,GAAG,MAAM,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAChD,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACnC,MAAM,0BAA0B,GAAG,IAAI,GAAG,EAA4B,CAAC;QACvE,IAAI,KAAK,EAAE,MAAM,QAAQ,IAAI,KAAK,EAAE;YAClC,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACrC,0BAA0B,CAAC,GAAG,CAAC,OAAO,EAAE;gBACtC,OAAO;gBACP,QAAQ,EAAE,KAAK,CAAC,IAAI,CAClB,IAAI,GAAG,CAAC,0BAA0B,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC;oBACnE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;oBAC7B,IAAI,EACF,gBAAgB,CAAC,QAAQ,CAAC,IAAI,qBAAqB,CAAC,QAAQ,CAAC,QAAQ,CAAC;wBACpE,CAAC,CAAC,GAAG;4BACH,CAAC,CAAC,MAAM,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,CAAC;4BAC5C,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC;wBAC/B,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;iBACtB,CAAC,CACH;aACF,CAAC,CAAC;YACH,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBAC1C,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAChD,0BAA0B,CAAC,GAAG,CAAC,OAAO,EAAE;oBACtC,OAAO;oBACP,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,0BAA0B,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;iBAC1G,CAAC,CAAC;aACJ;SACF;QACD,OAAO,IAAI,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACnF,CAAC;CACF"}
|
@@ -0,0 +1,65 @@
|
|
1
|
+
/// <reference types="node" resolution-mode="require"/>
|
2
|
+
import { CallbackFsClient, PromiseFsClient } from 'isomorphic-git';
|
3
|
+
import Debug from 'debug';
|
4
|
+
export declare const debug: Debug.Debugger;
|
5
|
+
export interface GetCommitLogOptions {
|
6
|
+
/**
|
7
|
+
* File paths or directory paths to resolve components against
|
8
|
+
*/
|
9
|
+
ref: string;
|
10
|
+
/**
|
11
|
+
* File paths or directory paths to resolve components against
|
12
|
+
*/
|
13
|
+
dir: string;
|
14
|
+
/**
|
15
|
+
* File paths or directory paths to resolve components against
|
16
|
+
*/
|
17
|
+
fs: CallbackFsClient | PromiseFsClient;
|
18
|
+
}
|
19
|
+
interface MultiRefStringOptions {
|
20
|
+
/**
|
21
|
+
* File paths or directory paths to resolve components against
|
22
|
+
*/
|
23
|
+
ref: string;
|
24
|
+
/**
|
25
|
+
* File paths or directory paths to resolve components against
|
26
|
+
*/
|
27
|
+
dir: string;
|
28
|
+
/**
|
29
|
+
* File paths or directory paths to resolve components against
|
30
|
+
*/
|
31
|
+
fs: CallbackFsClient | PromiseFsClient;
|
32
|
+
}
|
33
|
+
export declare function resolveMultiRefString(options: MultiRefStringOptions): Promise<{
|
34
|
+
ref1: string;
|
35
|
+
ref2: string;
|
36
|
+
}>;
|
37
|
+
interface SingleRefStringOptions {
|
38
|
+
/**
|
39
|
+
* File paths or directory paths to resolve components against
|
40
|
+
*/
|
41
|
+
ref: string;
|
42
|
+
/**
|
43
|
+
* File paths or directory paths to resolve components against
|
44
|
+
*/
|
45
|
+
dir: string;
|
46
|
+
/**
|
47
|
+
* File paths or directory paths to resolve components against
|
48
|
+
*/
|
49
|
+
fs: CallbackFsClient | PromiseFsClient;
|
50
|
+
}
|
51
|
+
export declare function resolveSingleRefString(options: SingleRefStringOptions): Promise<string>;
|
52
|
+
export declare function getFileState(commitHash1: string, commitHash2: string, dir: string): Promise<[
|
53
|
+
{
|
54
|
+
path: string;
|
55
|
+
status: string;
|
56
|
+
}
|
57
|
+
]>;
|
58
|
+
export declare function getStatus(dir: string, ref: string): Promise<Array<{
|
59
|
+
path: string;
|
60
|
+
status: string;
|
61
|
+
}>>;
|
62
|
+
export declare function listFullPathFiles(dir: string, ref: string): Promise<string[]>;
|
63
|
+
export declare function getOid(dir: string, ref: string): Promise<string>;
|
64
|
+
export declare function readBlobAsBuffer(dir: string, oid: string, filename: string): Promise<Buffer>;
|
65
|
+
export {};
|