sfdx-easy-sources 0.1.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/README.md +158 -0
- package/lib/commands/easysources/allmeta/merge.d.ts +15 -0
- package/lib/commands/easysources/allmeta/merge.js +47 -0
- package/lib/commands/easysources/allmeta/merge.js.map +1 -0
- package/lib/commands/easysources/allmeta/split.d.ts +11 -0
- package/lib/commands/easysources/allmeta/split.js +42 -0
- package/lib/commands/easysources/allmeta/split.js.map +1 -0
- package/lib/commands/easysources/allmeta/upsert.d.ts +11 -0
- package/lib/commands/easysources/allmeta/upsert.js +42 -0
- package/lib/commands/easysources/allmeta/upsert.js.map +1 -0
- package/lib/commands/easysources/applications/merge.d.ts +15 -0
- package/lib/commands/easysources/applications/merge.js +48 -0
- package/lib/commands/easysources/applications/merge.js.map +1 -0
- package/lib/commands/easysources/applications/split.d.ts +12 -0
- package/lib/commands/easysources/applications/split.js +47 -0
- package/lib/commands/easysources/applications/split.js.map +1 -0
- package/lib/commands/easysources/applications/updatekey.d.ts +11 -0
- package/lib/commands/easysources/applications/updatekey.js +43 -0
- package/lib/commands/easysources/applications/updatekey.js.map +1 -0
- package/lib/commands/easysources/applications/upsert.d.ts +15 -0
- package/lib/commands/easysources/applications/upsert.js +48 -0
- package/lib/commands/easysources/applications/upsert.js.map +1 -0
- package/lib/commands/easysources/globalvaluesets/merge.d.ts +15 -0
- package/lib/commands/easysources/globalvaluesets/merge.js +48 -0
- package/lib/commands/easysources/globalvaluesets/merge.js.map +1 -0
- package/lib/commands/easysources/globalvaluesets/split.d.ts +12 -0
- package/lib/commands/easysources/globalvaluesets/split.js +47 -0
- package/lib/commands/easysources/globalvaluesets/split.js.map +1 -0
- package/lib/commands/easysources/globalvaluesets/updatekey.d.ts +11 -0
- package/lib/commands/easysources/globalvaluesets/updatekey.js +43 -0
- package/lib/commands/easysources/globalvaluesets/updatekey.js.map +1 -0
- package/lib/commands/easysources/globalvaluesets/upsert.d.ts +15 -0
- package/lib/commands/easysources/globalvaluesets/upsert.js +48 -0
- package/lib/commands/easysources/globalvaluesets/upsert.js.map +1 -0
- package/lib/commands/easysources/globalvaluesettranslations/merge.d.ts +15 -0
- package/lib/commands/easysources/globalvaluesettranslations/merge.js +48 -0
- package/lib/commands/easysources/globalvaluesettranslations/merge.js.map +1 -0
- package/lib/commands/easysources/globalvaluesettranslations/split.d.ts +12 -0
- package/lib/commands/easysources/globalvaluesettranslations/split.js +47 -0
- package/lib/commands/easysources/globalvaluesettranslations/split.js.map +1 -0
- package/lib/commands/easysources/globalvaluesettranslations/updatekey.d.ts +11 -0
- package/lib/commands/easysources/globalvaluesettranslations/updatekey.js +43 -0
- package/lib/commands/easysources/globalvaluesettranslations/updatekey.js.map +1 -0
- package/lib/commands/easysources/globalvaluesettranslations/upsert.d.ts +15 -0
- package/lib/commands/easysources/globalvaluesettranslations/upsert.js +48 -0
- package/lib/commands/easysources/globalvaluesettranslations/upsert.js.map +1 -0
- package/lib/commands/easysources/labels/merge.d.ts +14 -0
- package/lib/commands/easysources/labels/merge.js +44 -0
- package/lib/commands/easysources/labels/merge.js.map +1 -0
- package/lib/commands/easysources/labels/split.d.ts +11 -0
- package/lib/commands/easysources/labels/split.js +43 -0
- package/lib/commands/easysources/labels/split.js.map +1 -0
- package/lib/commands/easysources/labels/updatekey.d.ts +10 -0
- package/lib/commands/easysources/labels/updatekey.js +39 -0
- package/lib/commands/easysources/labels/updatekey.js.map +1 -0
- package/lib/commands/easysources/labels/upsert.d.ts +14 -0
- package/lib/commands/easysources/labels/upsert.js +44 -0
- package/lib/commands/easysources/labels/upsert.js.map +1 -0
- package/lib/commands/easysources/permissionsets/delete.d.ts +16 -0
- package/lib/commands/easysources/permissionsets/delete.js +104 -0
- package/lib/commands/easysources/permissionsets/delete.js.map +1 -0
- package/lib/commands/easysources/permissionsets/merge.d.ts +15 -0
- package/lib/commands/easysources/permissionsets/merge.js +48 -0
- package/lib/commands/easysources/permissionsets/merge.js.map +1 -0
- package/lib/commands/easysources/permissionsets/split.d.ts +12 -0
- package/lib/commands/easysources/permissionsets/split.js +47 -0
- package/lib/commands/easysources/permissionsets/split.js.map +1 -0
- package/lib/commands/easysources/permissionsets/updatekey.d.ts +11 -0
- package/lib/commands/easysources/permissionsets/updatekey.js +43 -0
- package/lib/commands/easysources/permissionsets/updatekey.js.map +1 -0
- package/lib/commands/easysources/permissionsets/upsert.d.ts +15 -0
- package/lib/commands/easysources/permissionsets/upsert.js +48 -0
- package/lib/commands/easysources/permissionsets/upsert.js.map +1 -0
- package/lib/commands/easysources/profiles/delete.d.ts +16 -0
- package/lib/commands/easysources/profiles/delete.js +104 -0
- package/lib/commands/easysources/profiles/delete.js.map +1 -0
- package/lib/commands/easysources/profiles/merge.d.ts +15 -0
- package/lib/commands/easysources/profiles/merge.js +48 -0
- package/lib/commands/easysources/profiles/merge.js.map +1 -0
- package/lib/commands/easysources/profiles/split.d.ts +12 -0
- package/lib/commands/easysources/profiles/split.js +47 -0
- package/lib/commands/easysources/profiles/split.js.map +1 -0
- package/lib/commands/easysources/profiles/updatekey.d.ts +11 -0
- package/lib/commands/easysources/profiles/updatekey.js +43 -0
- package/lib/commands/easysources/profiles/updatekey.js.map +1 -0
- package/lib/commands/easysources/profiles/upsert.d.ts +15 -0
- package/lib/commands/easysources/profiles/upsert.js +48 -0
- package/lib/commands/easysources/profiles/upsert.js.map +1 -0
- package/lib/commands/easysources/recordtypes/delete.d.ts +17 -0
- package/lib/commands/easysources/recordtypes/delete.js +129 -0
- package/lib/commands/easysources/recordtypes/delete.js.map +1 -0
- package/lib/commands/easysources/recordtypes/merge.d.ts +16 -0
- package/lib/commands/easysources/recordtypes/merge.js +110 -0
- package/lib/commands/easysources/recordtypes/merge.js.map +1 -0
- package/lib/commands/easysources/recordtypes/split.d.ts +13 -0
- package/lib/commands/easysources/recordtypes/split.js +125 -0
- package/lib/commands/easysources/recordtypes/split.js.map +1 -0
- package/lib/commands/easysources/recordtypes/updatekey.d.ts +12 -0
- package/lib/commands/easysources/recordtypes/updatekey.js +104 -0
- package/lib/commands/easysources/recordtypes/updatekey.js.map +1 -0
- package/lib/commands/easysources/recordtypes/upsert.d.ts +16 -0
- package/lib/commands/easysources/recordtypes/upsert.js +144 -0
- package/lib/commands/easysources/recordtypes/upsert.js.map +1 -0
- package/lib/commands/hello/org.d.ts +17 -0
- package/lib/commands/hello/org.js +72 -0
- package/lib/commands/hello/org.js.map +1 -0
- package/lib/index.d.ts +2 -0
- package/lib/index.js +4 -0
- package/lib/index.js.map +1 -0
- package/lib/utils/commands/keyupdater.d.ts +3 -0
- package/lib/utils/commands/keyupdater.js +55 -0
- package/lib/utils/commands/keyupdater.js.map +1 -0
- package/lib/utils/commands/merger.d.ts +3 -0
- package/lib/utils/commands/merger.js +53 -0
- package/lib/utils/commands/merger.js.map +1 -0
- package/lib/utils/commands/splitter.d.ts +3 -0
- package/lib/utils/commands/splitter.js +73 -0
- package/lib/utils/commands/splitter.js.map +1 -0
- package/lib/utils/commands/upserter.d.ts +3 -0
- package/lib/utils/commands/upserter.js +85 -0
- package/lib/utils/commands/upserter.js.map +1 -0
- package/lib/utils/constants/constants.d.ts +6 -0
- package/lib/utils/constants/constants.js +10 -0
- package/lib/utils/constants/constants.js.map +1 -0
- package/lib/utils/constants/constants_applications.d.ts +13 -0
- package/lib/utils/constants/constants_applications.js +15 -0
- package/lib/utils/constants/constants_applications.js.map +1 -0
- package/lib/utils/constants/constants_globalvaluesets.d.ts +13 -0
- package/lib/utils/constants/constants_globalvaluesets.js +15 -0
- package/lib/utils/constants/constants_globalvaluesets.js.map +1 -0
- package/lib/utils/constants/constants_globalvaluesettranslations.d.ts +13 -0
- package/lib/utils/constants/constants_globalvaluesettranslations.js +15 -0
- package/lib/utils/constants/constants_globalvaluesettranslations.js.map +1 -0
- package/lib/utils/constants/constants_labels.d.ts +13 -0
- package/lib/utils/constants/constants_labels.js +15 -0
- package/lib/utils/constants/constants_labels.js.map +1 -0
- package/lib/utils/constants/constants_permissionsets.d.ts +83 -0
- package/lib/utils/constants/constants_permissionsets.js +55 -0
- package/lib/utils/constants/constants_permissionsets.js.map +1 -0
- package/lib/utils/constants/constants_profiles.d.ts +83 -0
- package/lib/utils/constants/constants_profiles.js +68 -0
- package/lib/utils/constants/constants_profiles.js.map +1 -0
- package/lib/utils/constants/constants_recordtypes.d.ts +13 -0
- package/lib/utils/constants/constants_recordtypes.js +15 -0
- package/lib/utils/constants/constants_recordtypes.js.map +1 -0
- package/lib/utils/filesUtils.d.ts +9 -0
- package/lib/utils/filesUtils.js +75 -0
- package/lib/utils/filesUtils.js.map +1 -0
- package/lib/utils/performance.d.ts +9 -0
- package/lib/utils/performance.js +22 -0
- package/lib/utils/performance.js.map +1 -0
- package/lib/utils/utils.d.ts +5 -0
- package/lib/utils/utils.js +84 -0
- package/lib/utils/utils.js.map +1 -0
- package/lib/utils/utils_recordtypes.d.ts +2 -0
- package/lib/utils/utils_recordtypes.js +37 -0
- package/lib/utils/utils_recordtypes.js.map +1 -0
- package/lib/utils/xmlFormatter.d.ts +4 -0
- package/lib/utils/xmlFormatter.js +18 -0
- package/lib/utils/xmlFormatter.js.map +1 -0
- package/messages/all_merge.json +11 -0
- package/messages/all_split.json +12 -0
- package/messages/all_upsert.json +11 -0
- package/messages/applications_merge.json +12 -0
- package/messages/applications_split.json +15 -0
- package/messages/applications_updatekey.json +11 -0
- package/messages/applications_upsert.json +12 -0
- package/messages/globalvaluesets_merge.json +12 -0
- package/messages/globalvaluesets_split.json +15 -0
- package/messages/globalvaluesets_updatekey.json +11 -0
- package/messages/globalvaluesets_upsert.json +12 -0
- package/messages/globalvaluesettranslations_merge.json +12 -0
- package/messages/globalvaluesettranslations_split.json +15 -0
- package/messages/globalvaluesettranslations_updatekey.json +11 -0
- package/messages/globalvaluesettranslations_upsert.json +12 -0
- package/messages/labels_merge.json +11 -0
- package/messages/labels_split.json +12 -0
- package/messages/labels_updatekey.json +10 -0
- package/messages/labels_upsert.json +11 -0
- package/messages/org.json +10 -0
- package/messages/permissionsets_delete.json +23 -0
- package/messages/permissionsets_merge.json +12 -0
- package/messages/permissionsets_split.json +15 -0
- package/messages/permissionsets_updatekey.json +11 -0
- package/messages/permissionsets_upsert.json +12 -0
- package/messages/profiles_delete.json +23 -0
- package/messages/profiles_merge.json +12 -0
- package/messages/profiles_split.json +15 -0
- package/messages/profiles_updatekey.json +11 -0
- package/messages/profiles_upsert.json +12 -0
- package/messages/recordtypes_delete.json +16 -0
- package/messages/recordtypes_merge.json +15 -0
- package/messages/recordtypes_split.json +16 -0
- package/messages/recordtypes_updatekey.json +13 -0
- package/messages/recordtypes_upsert.json +15 -0
- package/oclif.manifest.json +1 -0
- package/package.json +76 -0
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
/*
|
|
4
|
+
* Copyright (c) 2020, salesforce.com, inc.
|
|
5
|
+
* All rights reserved.
|
|
6
|
+
* Licensed under the BSD 3-Clause license.
|
|
7
|
+
* For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
|
|
8
|
+
*/
|
|
9
|
+
const os = require("os");
|
|
10
|
+
const command_1 = require("@salesforce/command");
|
|
11
|
+
const core_1 = require("@salesforce/core");
|
|
12
|
+
const fs = require('fs-extra');
|
|
13
|
+
const path_1 = require("path");
|
|
14
|
+
const performance_1 = require("../../../utils/performance");
|
|
15
|
+
const constants_1 = require("../../../utils/constants/constants");
|
|
16
|
+
const constants_recordtypes_1 = require("../../../utils/constants/constants_recordtypes");
|
|
17
|
+
const filesUtils_1 = require("../../../utils/filesUtils");
|
|
18
|
+
const utils_1 = require("../../../utils/utils");
|
|
19
|
+
const utils_recordtypes_1 = require("../../../utils/utils_recordtypes");
|
|
20
|
+
// Initialize Messages with the current plugin directory
|
|
21
|
+
core_1.Messages.importMessagesDirectory(__dirname);
|
|
22
|
+
// Load the specific messages for this file. Messages from @salesforce/command, @salesforce/core,
|
|
23
|
+
// or any library that is using the messages framework can also be loaded this way.
|
|
24
|
+
const messages = core_1.Messages.loadMessages('sfdx-easy-sources', 'recordtypes_merge');
|
|
25
|
+
class Merge extends command_1.SfdxCommand {
|
|
26
|
+
async run() {
|
|
27
|
+
performance_1.default.getInstance().start();
|
|
28
|
+
const baseInputDir = (0, path_1.join)((this.flags.dir || constants_1.DEFAULT_PATH), constants_recordtypes_1.RECORDTYPES_SUBPATH);
|
|
29
|
+
const baseOutputDir = this.flags.output == null ? baseInputDir : (0, path_1.join)(this.flags.output, constants_recordtypes_1.RECORDTYPES_SUBPATH);
|
|
30
|
+
const inputObject = (this.flags.object);
|
|
31
|
+
const inputRecordType = (this.flags.recordtype);
|
|
32
|
+
if (!fs.existsSync(baseInputDir)) {
|
|
33
|
+
console.log('Input folder ' + baseInputDir + ' does not exist!');
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
var objectList = [];
|
|
37
|
+
if (inputObject) {
|
|
38
|
+
objectList = inputObject.split(',');
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
objectList = fs.readdirSync(baseInputDir, { withFileTypes: true })
|
|
42
|
+
.filter(item => item.isDirectory())
|
|
43
|
+
.map(item => item.name);
|
|
44
|
+
}
|
|
45
|
+
for (const obj of objectList) {
|
|
46
|
+
if (!fs.existsSync((0, path_1.join)(baseInputDir, obj, 'recordTypes')))
|
|
47
|
+
continue;
|
|
48
|
+
var recordTypeList = [];
|
|
49
|
+
if (inputRecordType) {
|
|
50
|
+
recordTypeList = inputRecordType.split(',');
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
recordTypeList = fs.readdirSync((0, path_1.join)(baseInputDir, obj, 'recordTypes'), { withFileTypes: true })
|
|
54
|
+
.filter(item => item.isDirectory())
|
|
55
|
+
.map(item => item.name);
|
|
56
|
+
}
|
|
57
|
+
for (const dir of recordTypeList) {
|
|
58
|
+
console.log('Merging: ' + (0, path_1.join)(obj, dir));
|
|
59
|
+
const inputXML = (0, path_1.join)(baseInputDir, obj, 'recordTypes', dir, dir) + constants_1.XML_PART_EXTENSION;
|
|
60
|
+
const mergedXml = (await (0, filesUtils_1.readXmlFromFile)(inputXML)) ?? {};
|
|
61
|
+
const outputDir = (0, path_1.join)(baseOutputDir, obj, 'recordTypes');
|
|
62
|
+
for (const tag_section in constants_recordtypes_1.RECORDTYPE_ITEMS) {
|
|
63
|
+
const csvFilePath = (0, path_1.join)(baseInputDir, obj, 'recordTypes', dir, (0, filesUtils_1.calcCsvFilename)(dir, tag_section));
|
|
64
|
+
if (fs.existsSync(csvFilePath)) {
|
|
65
|
+
var jsonArray = await (0, filesUtils_1.readCsvToJsonArray)(csvFilePath);
|
|
66
|
+
jsonArray = (0, utils_1.sortByKey)(jsonArray);
|
|
67
|
+
for (var i in jsonArray) {
|
|
68
|
+
delete jsonArray[i]['_tagid'];
|
|
69
|
+
}
|
|
70
|
+
var jsonArrayForXML = (0, utils_recordtypes_1.transformCSVtoXML)(jsonArray);
|
|
71
|
+
mergedXml[constants_recordtypes_1.RECORDTYPES_ROOT_TAG][constants_recordtypes_1.RECORDTYPES_PICKVAL_ROOT] = jsonArrayForXML;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
const outputFile = (0, path_1.join)(outputDir, dir + constants_recordtypes_1.RECORDTYPES_EXTENSION);
|
|
75
|
+
if (!fs.existsSync(outputDir)) {
|
|
76
|
+
fs.mkdirSync(outputDir);
|
|
77
|
+
}
|
|
78
|
+
(0, filesUtils_1.writeXmlToFile)(outputFile, mergedXml);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
// dir is the record type name without the extension
|
|
82
|
+
performance_1.default.getInstance().end();
|
|
83
|
+
var outputString = 'OK';
|
|
84
|
+
return { outputString };
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
exports.default = Merge;
|
|
88
|
+
Merge.description = messages.getMessage('commandDescription');
|
|
89
|
+
Merge.examples = messages.getMessage('examples').split(os.EOL);
|
|
90
|
+
Merge.args = [{ name: 'file' }];
|
|
91
|
+
Merge.flagsConfig = {
|
|
92
|
+
// flag with a value (-n, --name=VALUE)
|
|
93
|
+
dir: command_1.flags.string({
|
|
94
|
+
char: 'd',
|
|
95
|
+
description: messages.getMessage('dirFlagDescription', [constants_1.DEFAULT_PATH]),
|
|
96
|
+
}),
|
|
97
|
+
object: command_1.flags.string({
|
|
98
|
+
char: 's',
|
|
99
|
+
description: messages.getMessage('objectFlagDescription'),
|
|
100
|
+
}),
|
|
101
|
+
recordtype: command_1.flags.string({
|
|
102
|
+
char: 'r',
|
|
103
|
+
description: messages.getMessage('recordtypeFlagDescription'),
|
|
104
|
+
}),
|
|
105
|
+
output: command_1.flags.string({
|
|
106
|
+
char: 'o',
|
|
107
|
+
description: messages.getMessage('outputFlagDescription', [constants_1.DEFAULT_PATH]),
|
|
108
|
+
})
|
|
109
|
+
};
|
|
110
|
+
//# sourceMappingURL=merge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merge.js","sourceRoot":"","sources":["../../../../src/commands/easysources/recordtypes/merge.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { flags, SfdxCommand } from '@salesforce/command';
|
|
2
|
+
import { AnyJson } from '@salesforce/ts-types';
|
|
3
|
+
export default class Split extends SfdxCommand {
|
|
4
|
+
static description: string;
|
|
5
|
+
static examples: string[];
|
|
6
|
+
protected static flagsConfig: {
|
|
7
|
+
dir: flags.Discriminated<flags.String>;
|
|
8
|
+
object: flags.Discriminated<flags.String>;
|
|
9
|
+
recordtype: flags.Discriminated<flags.String>;
|
|
10
|
+
output: flags.Discriminated<flags.String>;
|
|
11
|
+
};
|
|
12
|
+
run(): Promise<AnyJson>;
|
|
13
|
+
}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
/*
|
|
4
|
+
* Copyright (c) 2020, salesforce.com, inc.
|
|
5
|
+
* All rights reserved.
|
|
6
|
+
* Licensed under the BSD 3-Clause license.
|
|
7
|
+
* For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
|
|
8
|
+
*/
|
|
9
|
+
const os = require("os");
|
|
10
|
+
const command_1 = require("@salesforce/command");
|
|
11
|
+
const core_1 = require("@salesforce/core");
|
|
12
|
+
const filesUtils_1 = require("../../../utils/filesUtils");
|
|
13
|
+
// import { generateTagId } from '../../../utils/utils'
|
|
14
|
+
const { Parser } = require('json2csv');
|
|
15
|
+
const constants_recordtypes_1 = require("../../../utils/constants/constants_recordtypes");
|
|
16
|
+
const performance_1 = require("../../../utils/performance");
|
|
17
|
+
const path_1 = require("path");
|
|
18
|
+
const utils_1 = require("../../../utils/utils");
|
|
19
|
+
const constants_1 = require("../../../utils/constants/constants");
|
|
20
|
+
const utils_recordtypes_1 = require("../../../utils/utils_recordtypes");
|
|
21
|
+
const fs = require('fs-extra');
|
|
22
|
+
// Initialize Messages with the current plugin directory
|
|
23
|
+
core_1.Messages.importMessagesDirectory(__dirname);
|
|
24
|
+
// Load the specific messages for this file. Messages from @salesforce/command, @salesforce/core,
|
|
25
|
+
// or any library that is using the messages framework can also be loaded this way.
|
|
26
|
+
const messages = core_1.Messages.loadMessages('sfdx-easy-sources', 'recordtypes_split');
|
|
27
|
+
class Split extends command_1.SfdxCommand {
|
|
28
|
+
async run() {
|
|
29
|
+
performance_1.default.getInstance().start();
|
|
30
|
+
const baseInputDir = (0, path_1.join)((this.flags.dir || constants_1.DEFAULT_PATH), constants_recordtypes_1.RECORDTYPES_SUBPATH);
|
|
31
|
+
const baseOutputDir = this.flags.output == null ? baseInputDir : (0, path_1.join)(this.flags.output, constants_recordtypes_1.RECORDTYPES_SUBPATH);
|
|
32
|
+
const inputObject = (this.flags.object);
|
|
33
|
+
const inputRecordType = (this.flags.recordtype);
|
|
34
|
+
if (!fs.existsSync(baseInputDir)) {
|
|
35
|
+
console.log('Input folder ' + baseInputDir + ' does not exist!');
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
var objectList = [];
|
|
39
|
+
if (inputObject) {
|
|
40
|
+
objectList = inputObject.split(',');
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
objectList = fs.readdirSync(baseInputDir, { withFileTypes: true })
|
|
44
|
+
.filter(item => item.isDirectory())
|
|
45
|
+
.map(item => item.name);
|
|
46
|
+
}
|
|
47
|
+
for (const obj of objectList) {
|
|
48
|
+
if (!fs.existsSync((0, path_1.join)(baseInputDir, obj, 'recordTypes')))
|
|
49
|
+
continue;
|
|
50
|
+
var recordTypeList = [];
|
|
51
|
+
if (inputRecordType) {
|
|
52
|
+
recordTypeList = inputRecordType.split(',');
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
recordTypeList = fs.readdirSync((0, path_1.join)(baseInputDir, obj, 'recordTypes'), { withFileTypes: true })
|
|
56
|
+
.filter(item => !item.isDirectory() && item.name.endsWith(constants_recordtypes_1.RECORDTYPES_EXTENSION))
|
|
57
|
+
.map(item => item.name);
|
|
58
|
+
}
|
|
59
|
+
for (const filename of recordTypeList) {
|
|
60
|
+
console.log('Splitting: ' + (0, path_1.join)(obj, filename));
|
|
61
|
+
const inputFile = (0, path_1.join)(baseInputDir, obj, 'recordTypes', filename);
|
|
62
|
+
const xmlFileContent = (await (0, filesUtils_1.readXmlFromFile)(inputFile)) ?? {};
|
|
63
|
+
const recordtypeProperties = xmlFileContent[constants_recordtypes_1.RECORDTYPES_ROOT_TAG] ?? {};
|
|
64
|
+
const recordTypeName = (0, filesUtils_1.removeExtension)(filename);
|
|
65
|
+
const outputDir = (0, path_1.join)(baseOutputDir, obj, 'recordTypes', recordTypeName);
|
|
66
|
+
for (const tag_section in constants_recordtypes_1.RECORDTYPE_ITEMS) {
|
|
67
|
+
var myjson = recordtypeProperties[constants_recordtypes_1.RECORDTYPES_PICKVAL_ROOT];
|
|
68
|
+
if (myjson == undefined)
|
|
69
|
+
continue;
|
|
70
|
+
if (!Array.isArray(myjson))
|
|
71
|
+
myjson = [myjson];
|
|
72
|
+
var jsforcsv = (0, utils_recordtypes_1.transformXMLtoCSV)(myjson);
|
|
73
|
+
// generate _tagId column
|
|
74
|
+
(0, utils_1.generateTagId)(jsforcsv, constants_recordtypes_1.RECORDTYPE_ITEMS[tag_section].key, constants_recordtypes_1.RECORDTYPE_ITEMS[tag_section].headers);
|
|
75
|
+
jsforcsv = (0, utils_1.sortByKey)(jsforcsv);
|
|
76
|
+
const headers = constants_recordtypes_1.RECORDTYPE_ITEMS[tag_section].headers;
|
|
77
|
+
const parser = new Parser({ fields: [...(0, utils_1.setDefault)(headers), '_tagid'] });
|
|
78
|
+
const csv = parser.parse(jsforcsv);
|
|
79
|
+
const outputFileCSV = (0, path_1.join)(outputDir, (0, filesUtils_1.calcCsvFilename)(recordTypeName, tag_section));
|
|
80
|
+
if (!fs.existsSync(outputDir)) {
|
|
81
|
+
fs.mkdirSync(outputDir, { recursive: true });
|
|
82
|
+
}
|
|
83
|
+
try {
|
|
84
|
+
fs.writeFileSync(outputFileCSV, csv, { flag: 'w+' });
|
|
85
|
+
// file written successfully
|
|
86
|
+
}
|
|
87
|
+
catch (err) {
|
|
88
|
+
console.error(err);
|
|
89
|
+
}
|
|
90
|
+
xmlFileContent[constants_recordtypes_1.RECORDTYPES_ROOT_TAG][tag_section] = null;
|
|
91
|
+
}
|
|
92
|
+
if (fs.existsSync(outputDir)) {
|
|
93
|
+
const outputFileXML = (0, path_1.join)(outputDir, recordTypeName + constants_1.XML_PART_EXTENSION);
|
|
94
|
+
(0, filesUtils_1.writeXmlToFile)(outputFileXML, xmlFileContent);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
performance_1.default.getInstance().end();
|
|
99
|
+
var outputString = 'OK';
|
|
100
|
+
return { outputString };
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
exports.default = Split;
|
|
104
|
+
Split.description = messages.getMessage('commandDescription');
|
|
105
|
+
Split.examples = messages.getMessage('examples').split(os.EOL);
|
|
106
|
+
Split.flagsConfig = {
|
|
107
|
+
// flag with a value (-n, --name=VALUE)
|
|
108
|
+
dir: command_1.flags.string({
|
|
109
|
+
char: 'd',
|
|
110
|
+
description: messages.getMessage('dirFlagDescription', [constants_1.DEFAULT_PATH]),
|
|
111
|
+
}),
|
|
112
|
+
object: command_1.flags.string({
|
|
113
|
+
char: 's',
|
|
114
|
+
description: messages.getMessage('objectFlagDescription'),
|
|
115
|
+
}),
|
|
116
|
+
recordtype: command_1.flags.string({
|
|
117
|
+
char: 'r',
|
|
118
|
+
description: messages.getMessage('recordtypeFlagDescription'),
|
|
119
|
+
}),
|
|
120
|
+
output: command_1.flags.string({
|
|
121
|
+
char: 'o',
|
|
122
|
+
description: messages.getMessage('outputFlagDescription', [constants_1.DEFAULT_PATH]),
|
|
123
|
+
}),
|
|
124
|
+
};
|
|
125
|
+
//# sourceMappingURL=split.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"split.js","sourceRoot":"","sources":["../../../../src/commands/easysources/recordtypes/split.ts"],"names":[],"mappings":";;AAAA;;;;;GAKG;AACH,yBAAyB;AACzB,iDAAyD;AACzD,2CAA4C;AAE5C,0DAA6G;AAC7G,uDAAuD;AACvD,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AACvC,0FAA8K;AAC9K,4DAAqD;AACrD,+BAA4B;AAC5B,gDAA4E;AAC5E,kEAAsF;AACtF,wEAAqE;AACrE,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAE/B,wDAAwD;AACxD,eAAQ,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC;AAE5C,iGAAiG;AACjG,mFAAmF;AACnF,MAAM,QAAQ,GAAG,eAAQ,CAAC,YAAY,CAAC,mBAAmB,EAAE,mBAAmB,CAAC,CAAC;AAEjF,MAAqB,KAAM,SAAQ,qBAAW;IA0BnC,KAAK,CAAC,GAAG;QACZ,qBAAW,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,CAAC;QAElC,MAAM,YAAY,GAAG,IAAA,WAAI,EAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,wBAAY,CAAC,EAAE,2CAAmB,CAAW,CAAC;QAC3F,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAA,WAAI,EAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,2CAAmB,CAAW,CAAC;QAExH,MAAM,WAAW,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAW,CAAC;QAClD,MAAM,eAAe,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAW,CAAC;QAE1D,IAAG,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,eAAe,GAAG,YAAY,GAAG,kBAAkB,CAAC,CAAC;YACjE,OAAO;SACV;QAED,IAAI,UAAU,GAAG,EAAE,CAAC;QACpB,IAAI,WAAW,EAAE;YACb,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;SACvC;aAAM;YACH,UAAU,GAAG,EAAE,CAAC,WAAW,CAAC,YAAY,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;iBAC7D,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;iBAClC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;SAC9B;QAED,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE;YAC1B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAA,WAAI,EAAC,YAAY,EAAE,GAAG,EAAE,aAAa,CAAC,CAAC;gBAAE,SAAS;YAErE,IAAI,cAAc,GAAG,EAAE,CAAC;YAExB,IAAI,eAAe,EAAE;gBACjB,cAAc,GAAG,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;aAC/C;iBAAM;gBACH,cAAc,GAAG,EAAE,CAAC,WAAW,CAAC,IAAA,WAAI,EAAC,YAAY,EAAE,GAAG,EAAE,aAAa,CAAC,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;qBAC3F,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,6CAAqB,CAAC,CAAC;qBAChF,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;aAC9B;YAGD,KAAK,MAAM,QAAQ,IAAI,cAAc,EAAE;gBACnC,OAAO,CAAC,GAAG,CAAC,aAAa,GAAG,IAAA,WAAI,EAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC;gBAGjD,MAAM,SAAS,GAAG,IAAA,WAAI,EAAC,YAAY,EAAE,GAAG,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC;gBACnE,MAAM,cAAc,GAAG,CAAC,MAAM,IAAA,4BAAe,EAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC;gBAChE,MAAM,oBAAoB,GAAG,cAAc,CAAC,4CAAoB,CAAC,IAAI,EAAE,CAAC;gBAExE,MAAM,cAAc,GAAG,IAAA,4BAAe,EAAC,QAAQ,CAAC,CAAC;gBACjD,MAAM,SAAS,GAAG,IAAA,WAAI,EAAC,aAAa,EAAE,GAAG,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC;gBAE1E,KAAK,MAAM,WAAW,IAAI,wCAAgB,EAAE;oBACxC,IAAI,MAAM,GAAG,oBAAoB,CAAC,gDAAwB,CAAC,CAAC;oBAC5D,IAAI,MAAM,IAAI,SAAS;wBAAE,SAAS;oBAClC,IAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;wBAAE,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC;oBAE7C,IAAI,QAAQ,GAAG,IAAA,qCAAiB,EAAC,MAAM,CAAC,CAAC;oBAGzC,yBAAyB;oBACzB,IAAA,qBAAa,EAAC,QAAQ,EAAE,wCAAgB,CAAC,WAAW,CAAC,CAAC,GAAG,EAAE,wCAAgB,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC;oBAClG,QAAQ,GAAG,IAAA,iBAAS,EAAC,QAAQ,CAAC,CAAC;oBAE/B,MAAM,OAAO,GAAG,wCAAgB,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC;oBACtD,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,EAAC,MAAM,EAAE,CAAC,GAAG,IAAA,kBAAU,EAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,EAAC,CAAC,CAAC;oBACxE,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;oBAEnC,MAAM,aAAa,GAAG,IAAA,WAAI,EAAC,SAAS,EAAE,IAAA,4BAAe,EAAC,cAAc,EAAE,WAAW,CAAC,CAAC,CAAC;oBAEpF,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;wBAC3B,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;qBAChD;oBAED,IAAI;wBACA,EAAE,CAAC,aAAa,CAAC,aAAa,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;wBACrD,4BAA4B;qBAC/B;oBAAC,OAAO,GAAG,EAAE;wBACV,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;qBACtB;oBAED,cAAc,CAAC,4CAAoB,CAAC,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC;iBAE5D;gBACD,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;oBAC1B,MAAM,aAAa,GAAG,IAAA,WAAI,EAAC,SAAS,EAAE,cAAc,GAAG,8BAAkB,CAAC,CAAC;oBAC3E,IAAA,2BAAc,EAAC,aAAa,EAAE,cAAc,CAAC,CAAC;iBACjD;aACJ;SACJ;QAED,qBAAW,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC;QAEhC,IAAI,YAAY,GAAG,IAAI,CAAA;QACvB,OAAO,EAAE,YAAY,EAAE,CAAC;IAC5B,CAAC;;AArHL,wBAsHC;AArHiB,iBAAW,GAAG,QAAQ,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC;AAExD,cAAQ,GAAG,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AAEtD,iBAAW,GAAG;IAC3B,uCAAuC;IACvC,GAAG,EAAE,eAAK,CAAC,MAAM,CAAC;QACd,IAAI,EAAE,GAAG;QACT,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,wBAAY,CAAC,CAAC;KACzE,CAAC;IACF,MAAM,EAAE,eAAK,CAAC,MAAM,CAAC;QACjB,IAAI,EAAE,GAAG;QACT,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC,uBAAuB,CAAC;KAC5D,CAAC;IACF,UAAU,EAAE,eAAK,CAAC,MAAM,CAAC;QACrB,IAAI,EAAE,GAAG;QACT,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC,2BAA2B,CAAC;KAChE,CAAC;IACF,MAAM,EAAE,eAAK,CAAC,MAAM,CAAC;QACjB,IAAI,EAAE,GAAG;QACT,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC,uBAAuB,EAAE,CAAC,wBAAY,CAAC,CAAC;KAC5E,CAAC;CACL,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { flags, SfdxCommand } from '@salesforce/command';
|
|
2
|
+
import { AnyJson } from '@salesforce/ts-types';
|
|
3
|
+
export default class UpdateKey extends SfdxCommand {
|
|
4
|
+
static description: string;
|
|
5
|
+
static examples: string[];
|
|
6
|
+
protected static flagsConfig: {
|
|
7
|
+
dir: flags.Discriminated<flags.String>;
|
|
8
|
+
object: flags.Discriminated<flags.String>;
|
|
9
|
+
recordtype: flags.Discriminated<flags.String>;
|
|
10
|
+
};
|
|
11
|
+
run(): Promise<AnyJson>;
|
|
12
|
+
}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
/*
|
|
4
|
+
* Copyright (c) 2020, salesforce.com, inc.
|
|
5
|
+
* All rights reserved.
|
|
6
|
+
* Licensed under the BSD 3-Clause license.
|
|
7
|
+
* For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
|
|
8
|
+
*/
|
|
9
|
+
const os = require("os");
|
|
10
|
+
const command_1 = require("@salesforce/command");
|
|
11
|
+
const core_1 = require("@salesforce/core");
|
|
12
|
+
const filesUtils_1 = require("../../../utils/filesUtils");
|
|
13
|
+
const utils_1 = require("../../../utils/utils");
|
|
14
|
+
const { Parser, transforms: { unwind } } = require('json2csv');
|
|
15
|
+
const constants_1 = require("../../../utils/constants/constants");
|
|
16
|
+
const performance_1 = require("../../../utils/performance");
|
|
17
|
+
const path_1 = require("path");
|
|
18
|
+
const constants_recordtypes_1 = require("../../../utils/constants/constants_recordtypes");
|
|
19
|
+
const fs = require('fs-extra');
|
|
20
|
+
// Initialize Messages with the current plugin directory
|
|
21
|
+
core_1.Messages.importMessagesDirectory(__dirname);
|
|
22
|
+
// Load the specific messages for this file. Messages from @salesforce/command, @salesforce/core,
|
|
23
|
+
// or any library that is using the messages framework can also be loaded this way.
|
|
24
|
+
const messages = core_1.Messages.loadMessages('sfdx-easy-sources', 'recordtypes_updatekey');
|
|
25
|
+
class UpdateKey extends command_1.SfdxCommand {
|
|
26
|
+
async run() {
|
|
27
|
+
performance_1.default.getInstance().start();
|
|
28
|
+
const baseInputDir = (0, path_1.join)((this.flags.dir || constants_1.DEFAULT_PATH), constants_recordtypes_1.RECORDTYPES_SUBPATH);
|
|
29
|
+
const inputObject = (this.flags.object);
|
|
30
|
+
const inputRecordType = (this.flags.recordtype);
|
|
31
|
+
if (!fs.existsSync(baseInputDir)) {
|
|
32
|
+
console.log('Input folder ' + baseInputDir + ' does not exist!');
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
var objectList = [];
|
|
36
|
+
if (inputObject) {
|
|
37
|
+
objectList = inputObject.split(',');
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
objectList = fs.readdirSync(baseInputDir, { withFileTypes: true })
|
|
41
|
+
.filter(item => item.isDirectory())
|
|
42
|
+
.map(item => item.name);
|
|
43
|
+
}
|
|
44
|
+
for (const obj of objectList) {
|
|
45
|
+
var recordTypeList = [];
|
|
46
|
+
if (inputRecordType) {
|
|
47
|
+
recordTypeList = inputRecordType.split(',');
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
if (!fs.existsSync((0, path_1.join)(baseInputDir, obj, 'recordTypes')))
|
|
51
|
+
continue;
|
|
52
|
+
recordTypeList = fs.readdirSync((0, path_1.join)(baseInputDir, obj, 'recordTypes'), { withFileTypes: true })
|
|
53
|
+
.filter(item => item.isDirectory())
|
|
54
|
+
.map(item => item.name);
|
|
55
|
+
}
|
|
56
|
+
// dir is the record type name without the extension
|
|
57
|
+
for (const dir of recordTypeList) {
|
|
58
|
+
console.log('UpdateKey: ' + dir);
|
|
59
|
+
// key is each profile section (applicationVisibilities, classAccess ecc)
|
|
60
|
+
for (const tag_section in constants_recordtypes_1.RECORDTYPE_ITEMS) {
|
|
61
|
+
const csvFilePath = (0, path_1.join)(baseInputDir, obj, 'recordTypes', dir, (0, filesUtils_1.calcCsvFilename)(dir, tag_section));
|
|
62
|
+
if (fs.existsSync(csvFilePath)) {
|
|
63
|
+
var jsonArray = await (0, filesUtils_1.readCsvToJsonArray)(csvFilePath);
|
|
64
|
+
(0, utils_1.generateTagId)(jsonArray, constants_recordtypes_1.RECORDTYPE_ITEMS[tag_section].key, constants_recordtypes_1.RECORDTYPE_ITEMS[tag_section].headers);
|
|
65
|
+
jsonArray = (0, utils_1.sortByKey)(jsonArray);
|
|
66
|
+
const headers = constants_recordtypes_1.RECORDTYPE_ITEMS[tag_section].headers;
|
|
67
|
+
const transforms = [unwind({ paths: headers })];
|
|
68
|
+
const parser = new Parser({ fields: [...(0, utils_1.setDefault)(headers), '_tagid'], transforms });
|
|
69
|
+
const csv = parser.parse(jsonArray);
|
|
70
|
+
try {
|
|
71
|
+
fs.writeFileSync(csvFilePath, csv, { flag: 'w+' });
|
|
72
|
+
// file written successfully
|
|
73
|
+
}
|
|
74
|
+
catch (err) {
|
|
75
|
+
console.error(err);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
performance_1.default.getInstance().end();
|
|
82
|
+
var outputString = 'OK';
|
|
83
|
+
return { outputString };
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
exports.default = UpdateKey;
|
|
87
|
+
UpdateKey.description = messages.getMessage('commandDescription');
|
|
88
|
+
UpdateKey.examples = messages.getMessage('examples').split(os.EOL);
|
|
89
|
+
UpdateKey.flagsConfig = {
|
|
90
|
+
// flag with a value (-n, --name=VALUE)
|
|
91
|
+
dir: command_1.flags.string({
|
|
92
|
+
char: 'd',
|
|
93
|
+
description: messages.getMessage('dirFlagDescription', [constants_1.DEFAULT_PATH]),
|
|
94
|
+
}),
|
|
95
|
+
object: command_1.flags.string({
|
|
96
|
+
char: 's',
|
|
97
|
+
description: messages.getMessage('objectFlagDescription'),
|
|
98
|
+
}),
|
|
99
|
+
recordtype: command_1.flags.string({
|
|
100
|
+
char: 'r',
|
|
101
|
+
description: messages.getMessage('recordtypeFlagDescription'),
|
|
102
|
+
})
|
|
103
|
+
};
|
|
104
|
+
//# sourceMappingURL=updatekey.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"updatekey.js","sourceRoot":"","sources":["../../../../src/commands/easysources/recordtypes/updatekey.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { flags, SfdxCommand } from '@salesforce/command';
|
|
2
|
+
import { AnyJson } from '@salesforce/ts-types';
|
|
3
|
+
export default class Upsert extends SfdxCommand {
|
|
4
|
+
static description: string;
|
|
5
|
+
static examples: string[];
|
|
6
|
+
static args: {
|
|
7
|
+
name: string;
|
|
8
|
+
}[];
|
|
9
|
+
protected static flagsConfig: {
|
|
10
|
+
dir: flags.Discriminated<flags.String>;
|
|
11
|
+
object: flags.Discriminated<flags.String>;
|
|
12
|
+
recordtype: flags.Discriminated<flags.String>;
|
|
13
|
+
output: flags.Discriminated<flags.String>;
|
|
14
|
+
};
|
|
15
|
+
run(): Promise<AnyJson>;
|
|
16
|
+
}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
/*
|
|
4
|
+
* Copyright (c) 2020, salesforce.com, inc.
|
|
5
|
+
* All rights reserved.
|
|
6
|
+
* Licensed under the BSD 3-Clause license.
|
|
7
|
+
* For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
|
|
8
|
+
*/
|
|
9
|
+
const os = require("os");
|
|
10
|
+
const command_1 = require("@salesforce/command");
|
|
11
|
+
const core_1 = require("@salesforce/core");
|
|
12
|
+
const filesUtils_1 = require("../../../utils/filesUtils");
|
|
13
|
+
const utils_1 = require("../../../utils/utils");
|
|
14
|
+
const { Parser, transforms: { unwind } } = require('json2csv');
|
|
15
|
+
const constants_1 = require("../../../utils/constants/constants");
|
|
16
|
+
const performance_1 = require("../../../utils/performance");
|
|
17
|
+
const path_1 = require("path");
|
|
18
|
+
const constants_recordtypes_1 = require("../../../utils/constants/constants_recordtypes");
|
|
19
|
+
const utils_recordtypes_1 = require("../../../utils/utils_recordtypes");
|
|
20
|
+
const fs = require('fs-extra');
|
|
21
|
+
// Initialize Messages with the current plugin directory
|
|
22
|
+
core_1.Messages.importMessagesDirectory(__dirname);
|
|
23
|
+
// Load the specific messages for this file. Messages from @salesforce/command, @salesforce/core,
|
|
24
|
+
// or any library that is using the messages framework can also be loaded this way.
|
|
25
|
+
const messages = core_1.Messages.loadMessages('sfdx-easy-sources', 'recordtypes_upsert');
|
|
26
|
+
class Upsert extends command_1.SfdxCommand {
|
|
27
|
+
async run() {
|
|
28
|
+
performance_1.default.getInstance().start();
|
|
29
|
+
const baseInputDir = (0, path_1.join)((this.flags.dir || constants_1.DEFAULT_PATH), constants_recordtypes_1.RECORDTYPES_SUBPATH);
|
|
30
|
+
const baseOutputDir = this.flags.output == null ? baseInputDir : (0, path_1.join)(this.flags.output, constants_recordtypes_1.RECORDTYPES_SUBPATH);
|
|
31
|
+
const inputObject = (this.flags.object);
|
|
32
|
+
const inputRecordType = (this.flags.recordtype);
|
|
33
|
+
if (!fs.existsSync(baseInputDir)) {
|
|
34
|
+
console.log('Input folder ' + baseInputDir + ' does not exist!');
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
var objectList = [];
|
|
38
|
+
if (inputObject) {
|
|
39
|
+
objectList = inputObject.split(',');
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
objectList = fs.readdirSync(baseInputDir, { withFileTypes: true })
|
|
43
|
+
.filter(item => item.isDirectory())
|
|
44
|
+
.map(item => item.name);
|
|
45
|
+
}
|
|
46
|
+
for (const obj of objectList) {
|
|
47
|
+
var recordTypeList = [];
|
|
48
|
+
if (inputRecordType) {
|
|
49
|
+
recordTypeList = inputRecordType.split(',');
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
if (!fs.existsSync((0, path_1.join)(baseInputDir, obj, 'recordTypes')))
|
|
53
|
+
continue;
|
|
54
|
+
recordTypeList = fs.readdirSync((0, path_1.join)(baseInputDir, obj, 'recordTypes'), { withFileTypes: true })
|
|
55
|
+
.filter(item => !item.isDirectory() && item.name.endsWith(constants_recordtypes_1.RECORDTYPES_EXTENSION))
|
|
56
|
+
.map(item => item.name);
|
|
57
|
+
}
|
|
58
|
+
for (const filename of recordTypeList) {
|
|
59
|
+
console.log('Upserting: ' + filename);
|
|
60
|
+
const inputFile = (0, path_1.join)(baseInputDir, obj, 'recordTypes', filename);
|
|
61
|
+
const xmlFileContent = (await (0, filesUtils_1.readXmlFromFile)(inputFile)) ?? {};
|
|
62
|
+
const recordtypeProperties = xmlFileContent[constants_recordtypes_1.RECORDTYPES_ROOT_TAG] ?? {};
|
|
63
|
+
const recordtypeName = (0, filesUtils_1.removeExtension)(filename);
|
|
64
|
+
const outputDir = (0, path_1.join)(baseOutputDir, obj, 'recordTypes', recordtypeName);
|
|
65
|
+
for (const tag_section in constants_recordtypes_1.RECORDTYPE_ITEMS) {
|
|
66
|
+
var jsonArray = recordtypeProperties[tag_section];
|
|
67
|
+
if (jsonArray == undefined)
|
|
68
|
+
continue;
|
|
69
|
+
if (!Array.isArray(jsonArray))
|
|
70
|
+
jsonArray = [jsonArray];
|
|
71
|
+
var jsonArrayNew = (0, utils_recordtypes_1.transformXMLtoCSV)(jsonArray);
|
|
72
|
+
(0, utils_1.generateTagId)(jsonArrayNew, constants_recordtypes_1.RECORDTYPE_ITEMS[tag_section].key, constants_recordtypes_1.RECORDTYPE_ITEMS[tag_section].headers);
|
|
73
|
+
const headers = constants_recordtypes_1.RECORDTYPE_ITEMS[tag_section].headers;
|
|
74
|
+
const transforms = [unwind({ paths: headers })];
|
|
75
|
+
const parser = new Parser({ fields: [...(0, utils_1.setDefault)(headers), '_tagid'], transforms });
|
|
76
|
+
const outputFile = (0, path_1.join)(outputDir, (0, filesUtils_1.calcCsvFilename)(recordtypeName, tag_section));
|
|
77
|
+
if (!fs.existsSync(outputDir)) {
|
|
78
|
+
fs.mkdirSync(outputDir);
|
|
79
|
+
}
|
|
80
|
+
if (fs.existsSync(outputFile)) {
|
|
81
|
+
const csvFilePath = (0, path_1.join)(baseOutputDir, obj, 'recordTypes', recordtypeName, (0, filesUtils_1.calcCsvFilename)(recordtypeName, tag_section));
|
|
82
|
+
var jsonMapOld = await (0, filesUtils_1.readCsvToJsonMap)(csvFilePath);
|
|
83
|
+
var jsonMapNew = (0, filesUtils_1.jsonArrayToMap)(jsonArrayNew);
|
|
84
|
+
for (var k in jsonMapNew) {
|
|
85
|
+
jsonMapOld[k] = jsonMapNew[k];
|
|
86
|
+
}
|
|
87
|
+
jsonArrayNew = Object.values(jsonMapOld);
|
|
88
|
+
}
|
|
89
|
+
try {
|
|
90
|
+
jsonArrayNew = (0, utils_1.sortByKey)(jsonArrayNew);
|
|
91
|
+
const csv = parser.parse(jsonArrayNew);
|
|
92
|
+
fs.writeFileSync(outputFile, csv, { flag: 'w+' });
|
|
93
|
+
// file written successfully
|
|
94
|
+
}
|
|
95
|
+
catch (err) {
|
|
96
|
+
console.error(err);
|
|
97
|
+
}
|
|
98
|
+
xmlFileContent[constants_recordtypes_1.RECORDTYPES_ROOT_TAG][tag_section] = null;
|
|
99
|
+
}
|
|
100
|
+
const inputFilePart = (0, path_1.join)(baseInputDir, obj, 'recordTypes', recordtypeName, recordtypeName + constants_1.XML_PART_EXTENSION);
|
|
101
|
+
if (fs.existsSync(inputFilePart)) {
|
|
102
|
+
const xmlFileContentPart = (await (0, filesUtils_1.readXmlFromFile)(inputFilePart)) ?? {};
|
|
103
|
+
const recordtypePropertiesPart = xmlFileContentPart[constants_recordtypes_1.RECORDTYPES_ROOT_TAG] ?? {};
|
|
104
|
+
for (var k in recordtypeProperties) {
|
|
105
|
+
recordtypePropertiesPart[k] = recordtypeProperties[k];
|
|
106
|
+
}
|
|
107
|
+
(0, filesUtils_1.writeXmlToFile)(inputFilePart, xmlFileContentPart);
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
if (fs.existsSync((0, path_1.join)(baseInputDir, obj, 'recordTypes', recordtypeName))) {
|
|
111
|
+
(0, filesUtils_1.writeXmlToFile)(inputFilePart, recordtypeProperties);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
performance_1.default.getInstance().end();
|
|
117
|
+
var outputString = 'OK';
|
|
118
|
+
return { outputString };
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
exports.default = Upsert;
|
|
122
|
+
Upsert.description = messages.getMessage('commandDescription');
|
|
123
|
+
Upsert.examples = messages.getMessage('examples').split(os.EOL);
|
|
124
|
+
Upsert.args = [{ name: 'file' }];
|
|
125
|
+
Upsert.flagsConfig = {
|
|
126
|
+
// flag with a value (-n, --name=VALUE)
|
|
127
|
+
dir: command_1.flags.string({
|
|
128
|
+
char: 'd',
|
|
129
|
+
description: messages.getMessage('dirFlagDescription', [constants_1.DEFAULT_PATH]),
|
|
130
|
+
}),
|
|
131
|
+
object: command_1.flags.string({
|
|
132
|
+
char: 's',
|
|
133
|
+
description: messages.getMessage('objectFlagDescription'),
|
|
134
|
+
}),
|
|
135
|
+
recordtype: command_1.flags.string({
|
|
136
|
+
char: 'r',
|
|
137
|
+
description: messages.getMessage('recordtypeFlagDescription'),
|
|
138
|
+
}),
|
|
139
|
+
output: command_1.flags.string({
|
|
140
|
+
char: 'o',
|
|
141
|
+
description: messages.getMessage('outputFlagDescription', [constants_1.DEFAULT_PATH]),
|
|
142
|
+
}),
|
|
143
|
+
};
|
|
144
|
+
//# sourceMappingURL=upsert.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upsert.js","sourceRoot":"","sources":["../../../../src/commands/easysources/recordtypes/upsert.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { flags, SfdxCommand } from '@salesforce/command';
|
|
2
|
+
import { AnyJson } from '@salesforce/ts-types';
|
|
3
|
+
export default class Org extends SfdxCommand {
|
|
4
|
+
static description: string;
|
|
5
|
+
static examples: string[];
|
|
6
|
+
static args: {
|
|
7
|
+
name: string;
|
|
8
|
+
}[];
|
|
9
|
+
protected static flagsConfig: {
|
|
10
|
+
name: flags.Discriminated<flags.String>;
|
|
11
|
+
force: flags.Discriminated<flags.Boolean<boolean>>;
|
|
12
|
+
};
|
|
13
|
+
protected static requiresUsername: boolean;
|
|
14
|
+
protected static supportsDevhubUsername: boolean;
|
|
15
|
+
protected static requiresProject: boolean;
|
|
16
|
+
run(): Promise<AnyJson>;
|
|
17
|
+
}
|