@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 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.5.3
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.5.3/src/commands/jayree/manifest/cleanup.ts)_
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.5.3/src/commands/jayree/manifest/generate.ts)_
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.5.3/src/commands/jayree/manifest/git/diff.ts)_
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 {};