sf-decomposer 5.3.1 → 5.3.2
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 +10 -0
- package/README.md +4 -10
- package/lib/commands/decomposer/decompose.js +4 -3
- package/lib/commands/decomposer/decompose.js.map +1 -1
- package/lib/commands/decomposer/recompose.js +4 -3
- package/lib/commands/decomposer/recompose.js.map +1 -1
- package/lib/metadata/getPackageDirectories.js +14 -20
- package/lib/metadata/getPackageDirectories.js.map +1 -1
- package/lib/service/decomposeFileHandler.js +11 -13
- package/lib/service/decomposeFileHandler.js.map +1 -1
- package/lib/service/getRepoRoot.js +19 -25
- package/lib/service/getRepoRoot.js.map +1 -1
- package/lib/service/moveFiles.js +5 -5
- package/lib/service/moveFiles.js.map +1 -1
- package/lib/service/recomposeFileHandler.js +16 -18
- package/lib/service/recomposeFileHandler.js.map +1 -1
- package/lib/service/renameBotVersionFiles.js +6 -5
- package/lib/service/renameBotVersionFiles.js.map +1 -1
- package/oclif.manifest.json +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,16 @@
|
|
|
5
5
|
|
|
6
6
|
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
7
7
|
|
|
8
|
+
## [5.3.2](https://github.com/mcarvin8/sf-decomposer/compare/v5.3.1...v5.3.2) (2025-01-18)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Bug Fixes
|
|
12
|
+
|
|
13
|
+
* get all package directories in parallel ([7b412cd](https://github.com/mcarvin8/sf-decomposer/commit/7b412cd85918050faeda3d57ac9dfdbb9ce0c206))
|
|
14
|
+
* move files in parallel ([e23cd9b](https://github.com/mcarvin8/sf-decomposer/commit/e23cd9b1cc4a2a0c95a6fac394d9f0a46ad691f2))
|
|
15
|
+
* remove awaits in loops in handlers ([0e12cee](https://github.com/mcarvin8/sf-decomposer/commit/0e12ceeb734fc95be04bd5ccdbec52a340057e24))
|
|
16
|
+
* rename all bot version files in parallel ([b24645a](https://github.com/mcarvin8/sf-decomposer/commit/b24645a599e48c516ac0aca4b2adc161c7d8c2ae))
|
|
17
|
+
|
|
8
18
|
## [5.3.1](https://github.com/mcarvin8/sf-decomposer/compare/v5.3.0...v5.3.1) (2025-01-14)
|
|
9
19
|
|
|
10
20
|
|
package/README.md
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
- [`sf decomposer recompose`](#sf-decomposer-recompose)
|
|
14
14
|
- [Supported Metadata](#supported-metadata)
|
|
15
15
|
- [Metadata Exceptions](#metadata-exceptions)
|
|
16
|
-
- [
|
|
16
|
+
- [Debugging](#debugging)
|
|
17
17
|
- [Ignore Files when Decomposing](#ignore-files-when-decomposing)
|
|
18
18
|
- [Hooks](#hooks)
|
|
19
19
|
- [Ignore Files](#ignore-files)
|
|
@@ -186,7 +186,7 @@ Here are some examples:
|
|
|
186
186
|
Error (1): Metadata type not found for the given suffix: field.
|
|
187
187
|
```
|
|
188
188
|
|
|
189
|
-
##
|
|
189
|
+
## Debugging
|
|
190
190
|
|
|
191
191
|
The plugin searches the current working directory for the `sfdx-project.json`, and if it's not found in the current working directory, it will search upwards for it until it hits your root drive. If the `sfdx-project.json` file isn't found, the plugin will fail with:
|
|
192
192
|
|
|
@@ -194,19 +194,13 @@ The plugin searches the current working directory for the `sfdx-project.json`, a
|
|
|
194
194
|
Error (1): sfdx-project.json not found in any parent directory.
|
|
195
195
|
```
|
|
196
196
|
|
|
197
|
-
The
|
|
198
|
-
|
|
199
|
-
By default, this package will only log errors to the file. This plugin will print `xml-disassembler` errors as warnings in the command terminal to allow all other files to be processed.
|
|
200
|
-
|
|
201
|
-
These warnings when running `decompose` and `recompose` commands will look as such:
|
|
197
|
+
The xml-disassembler package will log errors, and optionally debugging statements, to a log file, `disassemble.log`. This log will be created in the working directory and will be created when running this plugin at all times. If there were no errors, this log will be empty. By default, the log will only contain errors. This plugin will print the errors as warnings in the command terminal to allow all other files to be processed. These warnings when decomposing or recomposing will look like:
|
|
202
198
|
|
|
203
199
|
```
|
|
204
200
|
Warning: C:\Users\matth\Documents\sf-decomposer\test\baselines\flows\Get_Info\actionCalls\Get_Info.actionCalls-meta.xml was unabled to be parsed and will not be processed. Confirm formatting and try again.
|
|
205
201
|
```
|
|
206
202
|
|
|
207
|
-
To add additional debugging statements to the log file, provide the `--debug` flag to
|
|
208
|
-
|
|
209
|
-
General debugging statements in the log file will look like:
|
|
203
|
+
To add additional debugging statements to the log file, provide the `--debug` flag to the decompose or recompose command. Debugging statements will look like:
|
|
210
204
|
|
|
211
205
|
```
|
|
212
206
|
[2024-03-30T14:28:37.959] [DEBUG] default - Created disassembled file: mock\no-nested-elements\HR_Admin\HR_Admin.permissionset-meta.xml
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
'use strict';
|
|
2
|
-
/* eslint-disable no-await-in-loop */
|
|
3
2
|
import { SfCommand, Flags } from '@salesforce/sf-plugins-core';
|
|
4
3
|
import { Messages } from '@salesforce/core';
|
|
5
4
|
import { LOG_FILE, DECOMPOSED_FILE_TYPES } from '../../helpers/constants.js';
|
|
@@ -57,7 +56,7 @@ export default class DecomposerDecompose extends SfCommand {
|
|
|
57
56
|
const debug = flags['debug'];
|
|
58
57
|
const format = flags['format'];
|
|
59
58
|
const ignoreDirs = flags['ignore-package-directory'];
|
|
60
|
-
|
|
59
|
+
const promises = metadataTypes.map(async (metadataType) => {
|
|
61
60
|
const { metaAttributes, ignorePath } = await getRegistryValuesBySuffix(metadataType, 'decompose', ignoreDirs);
|
|
62
61
|
const currentLogFile = await readOriginalLogFile(LOG_FILE);
|
|
63
62
|
await decomposeFileHandler(metaAttributes, prepurge, postpurge, debug, format, ignorePath);
|
|
@@ -68,7 +67,9 @@ export default class DecomposerDecompose extends SfCommand {
|
|
|
68
67
|
});
|
|
69
68
|
}
|
|
70
69
|
this.log(`All metadata files have been decomposed for the metadata type: ${metadataType}`);
|
|
71
|
-
}
|
|
70
|
+
});
|
|
71
|
+
// Wait for all the promises to resolve
|
|
72
|
+
await Promise.all(promises);
|
|
72
73
|
return {
|
|
73
74
|
metadata: metadataTypes,
|
|
74
75
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decompose.js","sourceRoot":"","sources":["../../../src/commands/decomposer/decompose.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"decompose.js","sourceRoot":"","sources":["../../../src/commands/decomposer/decompose.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
'use strict';
|
|
2
|
-
/* eslint-disable no-await-in-loop */
|
|
3
2
|
import { SfCommand, Flags } from '@salesforce/sf-plugins-core';
|
|
4
3
|
import { Messages } from '@salesforce/core';
|
|
5
4
|
import { LOG_FILE, DECOMPOSED_FILE_TYPES } from '../../helpers/constants.js';
|
|
@@ -51,7 +50,7 @@ export default class DecomposerRecompose extends SfCommand {
|
|
|
51
50
|
const debug = flags['debug'];
|
|
52
51
|
const format = flags['format'];
|
|
53
52
|
const ignoreDirs = flags['ignore-package-directory'];
|
|
54
|
-
|
|
53
|
+
const promises = metadataTypes.map(async (metadataType) => {
|
|
55
54
|
const { metaAttributes } = await getRegistryValuesBySuffix(metadataType, 'recompose', ignoreDirs);
|
|
56
55
|
const currentLogFile = await readOriginalLogFile(LOG_FILE);
|
|
57
56
|
await recomposeFileHandler(metaAttributes, postpurge, debug, format);
|
|
@@ -62,7 +61,9 @@ export default class DecomposerRecompose extends SfCommand {
|
|
|
62
61
|
});
|
|
63
62
|
}
|
|
64
63
|
this.log(`All metadata files have been recomposed for the metadata type: ${metadataType}`);
|
|
65
|
-
}
|
|
64
|
+
});
|
|
65
|
+
// Wait for all the promises to resolve
|
|
66
|
+
await Promise.all(promises);
|
|
66
67
|
return {
|
|
67
68
|
metadata: metadataTypes,
|
|
68
69
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recompose.js","sourceRoot":"","sources":["../../../src/commands/decomposer/recompose.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"recompose.js","sourceRoot":"","sources":["../../../src/commands/decomposer/recompose.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
'use strict';
|
|
2
|
-
/* eslint-disable no-await-in-loop */
|
|
3
2
|
import { resolve, join, basename } from 'node:path';
|
|
4
3
|
import { readFile, readdir, stat } from 'node:fs/promises';
|
|
5
4
|
import { getRepoRoot } from '../service/getRepoRoot.js';
|
|
@@ -15,33 +14,28 @@ export async function getPackageDirectories(metaDirectory, ignoreDirs) {
|
|
|
15
14
|
const sfdxProject = JSON.parse(sfdxProjectRaw);
|
|
16
15
|
const normalizedIgnoreDirs = (ignoreDirs ?? []).map((dir) => basename(dir));
|
|
17
16
|
const packageDirectories = sfdxProject.packageDirectories.map((directory) => resolve(repoRoot, directory.path));
|
|
18
|
-
const metadataPaths =
|
|
19
|
-
for (const directory of packageDirectories) {
|
|
17
|
+
const metadataPaths = (await Promise.all(packageDirectories.map(async (directory) => {
|
|
20
18
|
if (normalizedIgnoreDirs.includes(basename(directory))) {
|
|
21
|
-
|
|
19
|
+
return undefined;
|
|
22
20
|
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
return { metadataPaths, ignorePath };
|
|
21
|
+
return searchRecursively(directory, metaDirectory);
|
|
22
|
+
}))).filter((filePath) => filePath !== undefined);
|
|
23
|
+
return { metadataPaths: metadataPaths.map((path) => resolve(path)), ignorePath };
|
|
29
24
|
}
|
|
30
25
|
async function searchRecursively(dxDirectory, subDirectoryName) {
|
|
31
26
|
const files = await readdir(dxDirectory);
|
|
32
|
-
|
|
27
|
+
const searchPromises = files.map(async (file) => {
|
|
33
28
|
const filePath = join(dxDirectory, file);
|
|
34
29
|
const stats = await stat(filePath);
|
|
35
|
-
if (stats.isDirectory()
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
return result;
|
|
30
|
+
if (stats.isDirectory()) {
|
|
31
|
+
if (file === subDirectoryName) {
|
|
32
|
+
return filePath;
|
|
39
33
|
}
|
|
34
|
+
return searchRecursively(filePath, subDirectoryName);
|
|
40
35
|
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
return undefined;
|
|
36
|
+
return undefined;
|
|
37
|
+
});
|
|
38
|
+
const results = await Promise.all(searchPromises);
|
|
39
|
+
return results.find((result) => result !== undefined);
|
|
46
40
|
}
|
|
47
41
|
//# sourceMappingURL=getPackageDirectories.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getPackageDirectories.js","sourceRoot":"","sources":["../../src/metadata/getPackageDirectories.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"getPackageDirectories.js","sourceRoot":"","sources":["../../src/metadata/getPackageDirectories.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAE3D,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,aAAqB,EACrB,UAAgC;IAEhC,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,GAAG,MAAM,WAAW,EAAE,CAAC;IAC3D,IAAI,CAAC,QAAQ,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;IACnF,CAAC;IACD,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACxB,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAClD,MAAM,cAAc,GAAW,MAAM,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;IACzE,MAAM,WAAW,GAAgB,IAAI,CAAC,KAAK,CAAC,cAAc,CAAgB,CAAC;IAC3E,MAAM,oBAAoB,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5E,MAAM,kBAAkB,GAAG,WAAW,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IAEhH,MAAM,aAAa,GAAG,CACpB,MAAM,OAAO,CAAC,GAAG,CACf,kBAAkB,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE;QACzC,IAAI,oBAAoB,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;YACvD,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,iBAAiB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IACrD,CAAC,CAAC,CACH,CACF,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAsB,EAAE,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC;IAEnE,OAAO,EAAE,aAAa,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC;AACnF,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,WAAmB,EAAE,gBAAwB;IAC5E,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,CAAC;IAEzC,MAAM,cAAc,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QACzC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnC,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,IAAI,IAAI,KAAK,gBAAgB,EAAE,CAAC;gBAC9B,OAAO,QAAQ,CAAC;YAClB,CAAC;YACD,OAAO,iBAAiB,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;QACvD,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAClD,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAoB,EAAE,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;AAC1E,CAAC"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
'use strict';
|
|
2
|
-
/* eslint-disable no-await-in-loop */
|
|
3
2
|
import { resolve, relative, join } from 'node:path';
|
|
4
3
|
import { readdir, stat, rm, rename } from 'node:fs/promises';
|
|
5
4
|
import { DisassembleXMLFileHandler, setLogLevel } from 'xml-disassembler';
|
|
@@ -11,7 +10,7 @@ export async function decomposeFileHandler(metaAttributes, prepurge, postpurge,
|
|
|
11
10
|
const { metadataPaths, metaSuffix, strictDirectoryName, folderType, uniqueIdElements } = metaAttributes;
|
|
12
11
|
if (debug)
|
|
13
12
|
setLogLevel('debug');
|
|
14
|
-
|
|
13
|
+
await Promise.all(metadataPaths.map(async (metadataPath) => {
|
|
15
14
|
if (strictDirectoryName || folderType) {
|
|
16
15
|
await subDirectoryHandler(metadataPath, uniqueIdElements, prepurge, postpurge, format, ignorePath);
|
|
17
16
|
}
|
|
@@ -31,7 +30,7 @@ export async function decomposeFileHandler(metaAttributes, prepurge, postpurge,
|
|
|
31
30
|
if (metaSuffix === 'workflow') {
|
|
32
31
|
await renameWorkflows(metadataPath);
|
|
33
32
|
}
|
|
34
|
-
}
|
|
33
|
+
}));
|
|
35
34
|
}
|
|
36
35
|
async function disassembleHandler(filePath, uniqueIdElements, prePurge, postPurge, format, ignorePath) {
|
|
37
36
|
let handler;
|
|
@@ -54,49 +53,48 @@ async function disassembleHandler(filePath, uniqueIdElements, prePurge, postPurg
|
|
|
54
53
|
}
|
|
55
54
|
async function prePurgeLabels(metadataPath) {
|
|
56
55
|
const subFiles = await readdir(metadataPath);
|
|
57
|
-
|
|
56
|
+
await Promise.all(subFiles.map(async (subFile) => {
|
|
58
57
|
const subfilePath = join(metadataPath, subFile);
|
|
59
58
|
if ((await stat(subfilePath)).isFile() && subFile !== CUSTOM_LABELS_FILE) {
|
|
60
59
|
await rm(subfilePath, { recursive: true });
|
|
61
60
|
}
|
|
62
|
-
}
|
|
61
|
+
}));
|
|
63
62
|
}
|
|
64
63
|
async function moveAndRenameLabels(metadataPath, format) {
|
|
65
64
|
const sourceDirectory = join(metadataPath, 'CustomLabels', 'labels');
|
|
66
65
|
const destinationDirectory = metadataPath;
|
|
67
66
|
const labelFiles = await readdir(sourceDirectory);
|
|
68
|
-
|
|
67
|
+
await Promise.all(labelFiles.map(async (file) => {
|
|
69
68
|
if (file.endsWith(`.labels-meta.${format}`)) {
|
|
70
69
|
const oldFilePath = join(sourceDirectory, file);
|
|
71
70
|
const newFileName = file.replace(`.labels-meta.${format}`, `.label-meta.${format}`);
|
|
72
71
|
const newFilePath = join(destinationDirectory, newFileName);
|
|
73
72
|
await rename(oldFilePath, newFilePath);
|
|
74
73
|
}
|
|
75
|
-
}
|
|
74
|
+
}));
|
|
76
75
|
await moveFiles(sourceDirectory, destinationDirectory, () => true);
|
|
77
76
|
await rm(join(metadataPath, 'CustomLabels'), { recursive: true });
|
|
78
77
|
}
|
|
79
78
|
async function subDirectoryHandler(metadataPath, uniqueIdElements, prepurge, postpurge, format, ignorePath) {
|
|
80
79
|
const subFiles = await readdir(metadataPath);
|
|
81
|
-
|
|
80
|
+
await Promise.all(subFiles.map(async (subFile) => {
|
|
82
81
|
const subFilePath = join(metadataPath, subFile);
|
|
83
82
|
if ((await stat(subFilePath)).isDirectory()) {
|
|
84
83
|
await disassembleHandler(subFilePath, uniqueIdElements, prepurge, postpurge, format, ignorePath);
|
|
85
84
|
}
|
|
86
|
-
}
|
|
85
|
+
}));
|
|
87
86
|
}
|
|
88
87
|
async function renameWorkflows(directory) {
|
|
89
88
|
const files = await readdir(directory, { recursive: true });
|
|
90
|
-
|
|
89
|
+
await Promise.all(files.map(async (file) => {
|
|
91
90
|
// Check if the file matches any suffix in WORKFLOW_SUFFIX_MAPPING
|
|
92
91
|
for (const [suffix, newSuffix] of Object.entries(WORKFLOW_SUFFIX_MAPPING)) {
|
|
93
92
|
if (file.endsWith(suffix)) {
|
|
94
93
|
const oldFilePath = join(directory, file);
|
|
95
94
|
const newFilePath = join(directory, file.replace(suffix, newSuffix));
|
|
96
|
-
|
|
97
|
-
break;
|
|
95
|
+
return rename(oldFilePath, newFilePath);
|
|
98
96
|
}
|
|
99
97
|
}
|
|
100
|
-
}
|
|
98
|
+
}));
|
|
101
99
|
}
|
|
102
100
|
//# sourceMappingURL=decomposeFileHandler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decomposeFileHandler.js","sourceRoot":"","sources":["../../src/service/decomposeFileHandler.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"decomposeFileHandler.js","sourceRoot":"","sources":["../../src/service/decomposeFileHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,32 +1,26 @@
|
|
|
1
1
|
'use strict';
|
|
2
|
-
/* eslint-disable no-await-in-loop */
|
|
3
2
|
import { access } from 'node:fs/promises';
|
|
4
3
|
import { join, dirname } from 'node:path';
|
|
5
4
|
import { SFDX_PROJECT_FILE_NAME } from '../helpers/constants.js';
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
found = true;
|
|
19
|
-
}
|
|
20
|
-
catch {
|
|
21
|
-
// If file not found, move up one directory level
|
|
22
|
-
const parentDir = dirname(currentDir);
|
|
23
|
-
if (currentDir === parentDir) {
|
|
24
|
-
// Reached the root without finding the file, throw an error
|
|
25
|
-
throw new Error('sfdx-project.json not found in any parent directory.');
|
|
26
|
-
}
|
|
27
|
-
currentDir = parentDir;
|
|
5
|
+
async function findRepoRoot(dir) {
|
|
6
|
+
const filePath = join(dir, SFDX_PROJECT_FILE_NAME);
|
|
7
|
+
try {
|
|
8
|
+
// Check if sfdx-project.json exists in the current directory
|
|
9
|
+
await access(filePath);
|
|
10
|
+
return { repoRoot: dir, dxConfigFilePath: filePath };
|
|
11
|
+
}
|
|
12
|
+
catch {
|
|
13
|
+
const parentDir = dirname(dir);
|
|
14
|
+
if (dir === parentDir) {
|
|
15
|
+
// Reached the root without finding the file, throw an error
|
|
16
|
+
throw new Error(`${SFDX_PROJECT_FILE_NAME} not found in any parent directory.`);
|
|
28
17
|
}
|
|
29
|
-
|
|
30
|
-
|
|
18
|
+
// Recursively search in the parent directory
|
|
19
|
+
return findRepoRoot(parentDir);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
export async function getRepoRoot() {
|
|
23
|
+
const currentDir = process.cwd();
|
|
24
|
+
return findRepoRoot(currentDir);
|
|
31
25
|
}
|
|
32
26
|
//# sourceMappingURL=getRepoRoot.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getRepoRoot.js","sourceRoot":"","sources":["../../src/service/getRepoRoot.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AACb,
|
|
1
|
+
{"version":3,"file":"getRepoRoot.js","sourceRoot":"","sources":["../../src/service/getRepoRoot.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AACb,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAEjE,KAAK,UAAU,YAAY,CACzB,GAAW;IAEX,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,sBAAsB,CAAC,CAAC;IACnD,IAAI,CAAC;QACH,6DAA6D;QAC7D,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;QACvB,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,gBAAgB,EAAE,QAAQ,EAAE,CAAC;IACvD,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,4DAA4D;YAC5D,MAAM,IAAI,KAAK,CAAC,GAAG,sBAAsB,qCAAqC,CAAC,CAAC;QAClF,CAAC;QACD,6CAA6C;QAC7C,OAAO,YAAY,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IACjC,OAAO,YAAY,CAAC,UAAU,CAAC,CAAC;AAClC,CAAC"}
|
package/lib/service/moveFiles.js
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
'use strict';
|
|
2
|
-
/* eslint-disable no-await-in-loop */
|
|
3
2
|
import { readdir, stat } from 'node:fs/promises';
|
|
4
3
|
import { join } from 'node:path';
|
|
5
4
|
import { move } from 'fs-extra';
|
|
6
5
|
export async function moveFiles(sourceDirectory, destinationDirectory, predicate) {
|
|
7
6
|
const files = await readdir(sourceDirectory);
|
|
8
|
-
|
|
9
|
-
const
|
|
7
|
+
const moveFilePromises = files.map(async (file) => {
|
|
8
|
+
const sourceFile = join(sourceDirectory, file);
|
|
9
|
+
const fileStat = await stat(sourceFile);
|
|
10
10
|
if (fileStat.isFile() && predicate(file)) {
|
|
11
|
-
const sourceFile = join(sourceDirectory, file);
|
|
12
11
|
const destinationFile = join(destinationDirectory, file);
|
|
13
12
|
await move(sourceFile, destinationFile, { overwrite: true });
|
|
14
13
|
}
|
|
15
|
-
}
|
|
14
|
+
});
|
|
15
|
+
await Promise.all(moveFilePromises);
|
|
16
16
|
}
|
|
17
17
|
//# sourceMappingURL=moveFiles.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"moveFiles.js","sourceRoot":"","sources":["../../src/service/moveFiles.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"moveFiles.js","sourceRoot":"","sources":["../../src/service/moveFiles.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAEhC,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,eAAuB,EACvB,oBAA4B,EAC5B,SAAwC;IAExC,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,eAAe,CAAC,CAAC;IAC7C,MAAM,gBAAgB,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QAChD,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;QAC/C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,CAAC;QACxC,IAAI,QAAQ,CAAC,MAAM,EAAE,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;YACzC,MAAM,eAAe,GAAG,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;YACzD,MAAM,IAAI,CAAC,UAAU,EAAE,eAAe,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC,CAAC,CAAC;IACH,MAAM,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;AACtC,CAAC"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
'use strict';
|
|
2
|
-
/* eslint-disable no-await-in-loop */
|
|
3
2
|
import { readdir, stat, rm } from 'node:fs/promises';
|
|
4
3
|
import { join } from 'node:path';
|
|
5
4
|
import { ReassembleXMLFileHandler, setLogLevel } from 'xml-disassembler';
|
|
@@ -12,19 +11,18 @@ export async function recomposeFileHandler(metaAttributes, postpurge, debug, for
|
|
|
12
11
|
const { metaSuffix, strictDirectoryName, folderType, metadataPaths } = metaAttributes;
|
|
13
12
|
if (debug)
|
|
14
13
|
setLogLevel('debug');
|
|
15
|
-
|
|
14
|
+
await Promise.all(metadataPaths.map(async (metadataPath) => {
|
|
16
15
|
if (metaSuffix === 'labels') {
|
|
17
16
|
await reassembleLabels(metadataPath, metaSuffix, postpurge, format);
|
|
18
17
|
}
|
|
19
18
|
else {
|
|
20
|
-
|
|
21
|
-
if (strictDirectoryName || folderType)
|
|
22
|
-
recurse = true;
|
|
19
|
+
const recurse = strictDirectoryName || Boolean(folderType);
|
|
23
20
|
await reassembleDirectories(metadataPath, metaSuffix, recurse, postpurge, format);
|
|
24
21
|
}
|
|
25
|
-
if (metaSuffix === 'bot')
|
|
22
|
+
if (metaSuffix === 'bot') {
|
|
26
23
|
await renameBotVersionFile(metadataPath);
|
|
27
|
-
|
|
24
|
+
}
|
|
25
|
+
}));
|
|
28
26
|
}
|
|
29
27
|
async function reassembleHandler(filePath, fileExtension, postPurge, format) {
|
|
30
28
|
let handler;
|
|
@@ -47,7 +45,6 @@ async function reassembleLabels(metadataPath, metaSuffix, postpurge, format) {
|
|
|
47
45
|
let sourceDirectory = metadataPath;
|
|
48
46
|
let destinationDirectory = join(metadataPath, 'CustomLabels', 'labels');
|
|
49
47
|
await moveFiles(sourceDirectory, destinationDirectory, (fileName) => fileName !== CUSTOM_LABELS_FILE);
|
|
50
|
-
// do not use postpurge flag due to file moving
|
|
51
48
|
await reassembleHandler(join(metadataPath, 'CustomLabels'), `${metaSuffix}-meta.xml`, false, format);
|
|
52
49
|
sourceDirectory = join(metadataPath, 'CustomLabels', 'labels');
|
|
53
50
|
destinationDirectory = metadataPath;
|
|
@@ -58,25 +55,26 @@ async function reassembleLabels(metadataPath, metaSuffix, postpurge, format) {
|
|
|
58
55
|
}
|
|
59
56
|
async function deleteFilesInDirectory(directory) {
|
|
60
57
|
const files = await readdir(directory);
|
|
61
|
-
|
|
58
|
+
await Promise.all(files.map(async (file) => {
|
|
62
59
|
const filePath = join(directory, file);
|
|
63
60
|
const fileStat = await stat(filePath);
|
|
64
61
|
if (fileStat.isFile() && file !== CUSTOM_LABELS_FILE) {
|
|
65
62
|
await rm(filePath);
|
|
66
63
|
}
|
|
67
|
-
}
|
|
64
|
+
}));
|
|
68
65
|
}
|
|
69
66
|
async function reassembleDirectories(metadataPath, metaSuffix, recurse, postpurge, format) {
|
|
70
67
|
const subdirectories = (await readdir(metadataPath)).map((file) => join(metadataPath, file));
|
|
71
|
-
|
|
68
|
+
await Promise.all(subdirectories.map(async (subdirectory) => {
|
|
72
69
|
const subDirStat = await stat(subdirectory);
|
|
73
|
-
if (subDirStat.isDirectory()
|
|
74
|
-
|
|
75
|
-
|
|
70
|
+
if (subDirStat.isDirectory()) {
|
|
71
|
+
if (recurse) {
|
|
72
|
+
await reassembleDirectories(subdirectory, metaSuffix, false, postpurge, format);
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
await reassembleHandler(subdirectory, `${metaSuffix}-meta.xml`, postpurge, format);
|
|
76
|
+
}
|
|
76
77
|
}
|
|
77
|
-
|
|
78
|
-
await reassembleHandler(subdirectory, `${metaSuffix}-meta.xml`, postpurge, format);
|
|
79
|
-
}
|
|
80
|
-
}
|
|
78
|
+
}));
|
|
81
79
|
}
|
|
82
80
|
//# sourceMappingURL=recomposeFileHandler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recomposeFileHandler.js","sourceRoot":"","sources":["../../src/service/recomposeFileHandler.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"recomposeFileHandler.js","sourceRoot":"","sources":["../../src/service/recomposeFileHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,23 +1,24 @@
|
|
|
1
1
|
'use strict';
|
|
2
|
-
/* eslint-disable no-await-in-loop */
|
|
3
2
|
import { lstat, readdir, rename } from 'node:fs/promises';
|
|
4
3
|
import { join } from 'node:path';
|
|
5
4
|
export async function renameBotVersionFile(metadataPath) {
|
|
6
5
|
const subDirectories = await readdir(metadataPath);
|
|
7
|
-
|
|
6
|
+
// Process all subdirectories concurrently
|
|
7
|
+
await Promise.all(subDirectories.map(async (subDirectory) => {
|
|
8
8
|
const subDirectoryPath = join(metadataPath, subDirectory);
|
|
9
9
|
const stats = await lstat(subDirectoryPath);
|
|
10
10
|
if (stats.isDirectory()) {
|
|
11
11
|
const files = await readdir(subDirectoryPath);
|
|
12
|
-
|
|
12
|
+
// Process all files concurrently
|
|
13
|
+
await Promise.all(files.map(async (file) => {
|
|
13
14
|
// Check if the bot meta file name contains "v" followed by a number
|
|
14
15
|
if (/v\d+\.bot-meta\.xml$/.test(file)) {
|
|
15
16
|
const sourcePath = join(subDirectoryPath, file);
|
|
16
17
|
const destinationPath = join(subDirectoryPath, file.replace('bot-meta.xml', 'botVersion-meta.xml'));
|
|
17
18
|
await rename(sourcePath, destinationPath);
|
|
18
19
|
}
|
|
19
|
-
}
|
|
20
|
+
}));
|
|
20
21
|
}
|
|
21
|
-
}
|
|
22
|
+
}));
|
|
22
23
|
}
|
|
23
24
|
//# sourceMappingURL=renameBotVersionFiles.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renameBotVersionFiles.js","sourceRoot":"","sources":["../../src/service/renameBotVersionFiles.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AACb,
|
|
1
|
+
{"version":3,"file":"renameBotVersionFiles.js","sourceRoot":"","sources":["../../src/service/renameBotVersionFiles.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AACb,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,YAAoB;IAC7D,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,CAAC;IAEnD,0CAA0C;IAC1C,MAAM,OAAO,CAAC,GAAG,CACf,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE;QACxC,MAAM,gBAAgB,GAAG,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;QAE1D,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAC5C,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,gBAAgB,CAAC,CAAC;YAE9C,iCAAiC;YACjC,MAAM,OAAO,CAAC,GAAG,CACf,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;gBACvB,oEAAoE;gBACpE,IAAI,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;oBACtC,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;oBAChD,MAAM,eAAe,GAAG,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,qBAAqB,CAAC,CAAC,CAAC;oBACpG,MAAM,MAAM,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;gBAC5C,CAAC;YACH,CAAC,CAAC,CACH,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CACH,CAAC;AACJ,CAAC"}
|
package/oclif.manifest.json
CHANGED