sfdx-easy-sources 0.9.6 → 0.9.7

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.
@@ -78,4 +78,10 @@ export declare const objectTranslations: {
78
78
  * @returns Promise resolving to minify result
79
79
  */
80
80
  minify: (options?: ObjectTranslationOptions) => Promise<AnyJson>;
81
+ /**
82
+ * Updates the _tagid key on CSV files based on the other fields.
83
+ * @param options Optional configuration, automatically resolved from settings if not provided
84
+ * @returns Promise resolving to operation result
85
+ */
86
+ updateKey: (options?: ObjectTranslationOptions) => Promise<AnyJson>;
81
87
  };
@@ -8,6 +8,7 @@ const merge_1 = require("../commands/easysources/objecttranslations/merge");
8
8
  const arealigned_1 = require("../commands/easysources/objecttranslations/arealigned");
9
9
  const clearempty_1 = require("../commands/easysources/objecttranslations/clearempty");
10
10
  const minify_1 = require("../commands/easysources/objecttranslations/minify");
11
+ const updatekey_1 = require("../commands/easysources/objecttranslations/updatekey");
11
12
  /**
12
13
  * Object Translations namespace containing all programmatic API functions for Salesforce Object Translation metadata operations.
13
14
  *
@@ -84,6 +85,14 @@ exports.objectTranslations = {
84
85
  */
85
86
  minify: async (options = {}) => {
86
87
  return await (0, minify_1.objectTranslationMinify)(options);
88
+ },
89
+ /**
90
+ * Updates the _tagid key on CSV files based on the other fields.
91
+ * @param options Optional configuration, automatically resolved from settings if not provided
92
+ * @returns Promise resolving to operation result
93
+ */
94
+ updateKey: async (options = {}) => {
95
+ return await (0, updatekey_1.objectTranslationUpdateKey)(options);
87
96
  }
88
97
  };
89
98
  //# sourceMappingURL=objecttranslations.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"objecttranslations.js","sourceRoot":"","sources":["../../src/api/objecttranslations.ts"],"names":[],"mappings":";;;AAGA,2EAA2E;AAC3E,4EAA0F;AAC1F,8EAA4F;AAC5F,4EAA0F;AAC1F,sFAAoG;AACpG,sFAAoG;AACpG,8EAA4F;AAiB5F;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACU,QAAA,kBAAkB,GAAG;IAChC;;;;OAIG;IACH,KAAK,EAAE,KAAK,EAAE,UAAoC,EAAE,EAAoB,EAAE;QACxE,OAAO,MAAM,IAAA,8BAAsB,EAAC,OAAO,CAAC,CAAC;IAC/C,CAAC;IAED;;;;OAIG;IACH,MAAM,EAAE,KAAK,EAAE,UAAoC,EAAE,EAAoB,EAAE;QACzE,OAAO,MAAM,IAAA,gCAAuB,EAAC,OAAO,CAAC,CAAC;IAChD,CAAC;IAED;;;;OAIG;IACH,KAAK,EAAE,KAAK,EAAE,UAAoC,EAAE,EAAoB,EAAE;QACxE,OAAO,MAAM,IAAA,8BAAsB,EAAC,OAAO,CAAC,CAAC;IAC/C,CAAC;IAED;;;;OAIG;IACH,UAAU,EAAE,KAAK,EAAE,UAAoC,EAAE,EAAoB,EAAE;QAC7E,OAAO,MAAM,IAAA,wCAA2B,EAAC,OAAO,CAAC,CAAC;IACpD,CAAC;IAED;;;;OAIG;IACH,UAAU,EAAE,KAAK,EAAE,UAAoC,EAAE,EAAoB,EAAE;QAC7E,OAAO,MAAM,IAAA,wCAA2B,EAAC,OAAO,CAAC,CAAC;IACpD,CAAC;IAED;;;;OAIG;IACH,MAAM,EAAE,KAAK,EAAE,UAAoC,EAAE,EAAoB,EAAE;QACzE,OAAO,MAAM,IAAA,gCAAuB,EAAC,OAAO,CAAC,CAAC;IAChD,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"objecttranslations.js","sourceRoot":"","sources":["../../src/api/objecttranslations.ts"],"names":[],"mappings":";;;AAGA,2EAA2E;AAC3E,4EAA0F;AAC1F,8EAA4F;AAC5F,4EAA0F;AAC1F,sFAAoG;AACpG,sFAAoG;AACpG,8EAA4F;AAC5F,oFAAkG;AAiBlG;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACU,QAAA,kBAAkB,GAAG;IAChC;;;;OAIG;IACH,KAAK,EAAE,KAAK,EAAE,UAAoC,EAAE,EAAoB,EAAE;QACxE,OAAO,MAAM,IAAA,8BAAsB,EAAC,OAAO,CAAC,CAAC;IAC/C,CAAC;IAED;;;;OAIG;IACH,MAAM,EAAE,KAAK,EAAE,UAAoC,EAAE,EAAoB,EAAE;QACzE,OAAO,MAAM,IAAA,gCAAuB,EAAC,OAAO,CAAC,CAAC;IAChD,CAAC;IAED;;;;OAIG;IACH,KAAK,EAAE,KAAK,EAAE,UAAoC,EAAE,EAAoB,EAAE;QACxE,OAAO,MAAM,IAAA,8BAAsB,EAAC,OAAO,CAAC,CAAC;IAC/C,CAAC;IAED;;;;OAIG;IACH,UAAU,EAAE,KAAK,EAAE,UAAoC,EAAE,EAAoB,EAAE;QAC7E,OAAO,MAAM,IAAA,wCAA2B,EAAC,OAAO,CAAC,CAAC;IACpD,CAAC;IAED;;;;OAIG;IACH,UAAU,EAAE,KAAK,EAAE,UAAoC,EAAE,EAAoB,EAAE;QAC7E,OAAO,MAAM,IAAA,wCAA2B,EAAC,OAAO,CAAC,CAAC;IACpD,CAAC;IAED;;;;OAIG;IACH,MAAM,EAAE,KAAK,EAAE,UAAoC,EAAE,EAAoB,EAAE;QACzE,OAAO,MAAM,IAAA,gCAAuB,EAAC,OAAO,CAAC,CAAC;IAChD,CAAC;IAED;;;;OAIG;IACH,SAAS,EAAE,KAAK,EAAE,UAAoC,EAAE,EAAoB,EAAE;QAC5E,OAAO,MAAM,IAAA,sCAA0B,EAAC,OAAO,CAAC,CAAC;IACnD,CAAC;CACF,CAAC"}
@@ -0,0 +1,13 @@
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
+ "es-csv": flags.Discriminated<flags.String>;
8
+ input: flags.Discriminated<flags.String>;
9
+ sort: flags.Discriminated<flags.Enum<string>>;
10
+ };
11
+ run(): Promise<AnyJson>;
12
+ }
13
+ export declare function objectTranslationUpdateKey(options?: any): Promise<AnyJson>;
@@ -0,0 +1,117 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.objectTranslationUpdateKey = void 0;
4
+ /*
5
+ * Copyright (c) 2020, salesforce.com, inc.
6
+ * All rights reserved.
7
+ * Licensed under the BSD 3-Clause license.
8
+ * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
9
+ */
10
+ const os = require("os");
11
+ const command_1 = require("@salesforce/command");
12
+ const core_1 = require("@salesforce/core");
13
+ const performance_1 = require("../../../utils/performance");
14
+ const constants_objecttranslations_1 = require("../../../utils/constants/constants_objecttranslations");
15
+ const constants_1 = require("../../../utils/constants/constants");
16
+ const filesUtils_1 = require("../../../utils/filesUtils");
17
+ const utils_1 = require("../../../utils/utils");
18
+ const utils_2 = require("../../../utils/commands/utils");
19
+ const localSettings_1 = require("../../../utils/localSettings");
20
+ const csvWriter_1 = require("../../../utils/csvWriter");
21
+ const path_1 = require("path");
22
+ const fs = require('fs-extra');
23
+ const settings = (0, localSettings_1.loadSettings)();
24
+ // Initialize Messages with the current plugin directory
25
+ core_1.Messages.importMessagesDirectory(__dirname);
26
+ // Load the specific messages for this file. Messages from @salesforce/command, @salesforce/core,
27
+ // or any library that is using the messages framework can also be loaded this way.
28
+ const messages = core_1.Messages.loadMessages('sfdx-easy-sources', 'objtransl_updatekey');
29
+ class UpdateKey extends command_1.SfdxCommand {
30
+ async run() {
31
+ performance_1.default.getInstance().start();
32
+ var result = await objectTranslationUpdateKey(this.flags);
33
+ performance_1.default.getInstance().end();
34
+ return result;
35
+ }
36
+ }
37
+ exports.default = UpdateKey;
38
+ UpdateKey.description = messages.getMessage('commandDescription');
39
+ UpdateKey.examples = messages.getMessage('examples').split(os.EOL);
40
+ UpdateKey.flagsConfig = {
41
+ // flag with a value (-n, --name=VALUE)
42
+ "es-csv": command_1.flags.string({
43
+ char: 'c',
44
+ description: messages.getMessage('esCsvFlagDescription', [constants_1.DEFAULT_ESCSV_PATH]),
45
+ }),
46
+ input: command_1.flags.string({
47
+ char: 'i',
48
+ description: messages.getMessage('inputFlagDescription'),
49
+ }),
50
+ sort: command_1.flags.enum({
51
+ char: 'S',
52
+ description: messages.getMessage('sortFlagDescription', ['true']),
53
+ options: ['true', 'false'],
54
+ default: 'true',
55
+ }),
56
+ };
57
+ // Export function for programmatic API
58
+ async function objectTranslationUpdateKey(options = {}) {
59
+ const csvWriter = new csvWriter_1.default();
60
+ const baseInputDir = (0, path_1.join)((options["es-csv"] || settings['easysources-csv-path'] || constants_1.DEFAULT_ESCSV_PATH), constants_objecttranslations_1.OBJTRANSL_SUBPATH);
61
+ const inputObject = (options.input);
62
+ if (!fs.existsSync(baseInputDir)) {
63
+ return (0, utils_2.jsonAndPrintError)(`Input folder ${baseInputDir} does not exist`);
64
+ }
65
+ // Initialize result object
66
+ const result = { result: 'OK', items: {} };
67
+ var objectTList = [];
68
+ if (inputObject) {
69
+ objectTList = inputObject.split(',');
70
+ }
71
+ else {
72
+ objectTList = fs.readdirSync(baseInputDir, { withFileTypes: true })
73
+ .filter(item => item.isDirectory())
74
+ .map(item => item.name);
75
+ }
76
+ for (const objTrName of objectTList) {
77
+ console.log('UpdateKey: ' + objTrName);
78
+ const csvDir = (0, path_1.join)(baseInputDir, objTrName, 'csv');
79
+ if (!fs.existsSync(csvDir)) {
80
+ console.log('Skipping ' + objTrName + '; CSV folder ' + csvDir + ' does not exist!');
81
+ result.items[objTrName] = { result: 'KO', error: `CSV folder ${csvDir} does not exist` };
82
+ continue;
83
+ }
84
+ try {
85
+ for (const tag_section in constants_objecttranslations_1.OBJTRANSL_ITEMS) {
86
+ const csvFilePath = (0, path_1.join)(csvDir, (0, filesUtils_1.calcCsvFilename)(objTrName, tag_section));
87
+ if (!fs.existsSync(csvFilePath))
88
+ continue;
89
+ var jsonArray = await (0, filesUtils_1.readCsvToJsonArray)(csvFilePath);
90
+ (0, utils_1.generateTagId)(jsonArray, constants_objecttranslations_1.OBJTRANSL_ITEMS[tag_section].key, constants_objecttranslations_1.OBJTRANSL_ITEMS[tag_section].headers);
91
+ if (options.sort === 'true') {
92
+ jsonArray = (0, utils_1.sortByKey)(jsonArray);
93
+ }
94
+ const headers = constants_objecttranslations_1.OBJTRANSL_ITEMS[tag_section].headers;
95
+ try {
96
+ const csvContent = await csvWriter.toCsv(jsonArray, headers);
97
+ fs.writeFileSync(csvFilePath, csvContent, { flag: 'w+' });
98
+ }
99
+ catch (err) {
100
+ console.error(err);
101
+ throw new Error(`Failed to write CSV file ${csvFilePath}: ${err.message}`);
102
+ }
103
+ }
104
+ result.items[objTrName] = { result: 'OK' };
105
+ }
106
+ catch (error) {
107
+ console.error(`Error processing object ${objTrName}:`, error);
108
+ result.items[objTrName] = {
109
+ result: 'KO',
110
+ error: error.message || 'Unknown error occurred'
111
+ };
112
+ }
113
+ }
114
+ return result;
115
+ }
116
+ exports.objectTranslationUpdateKey = objectTranslationUpdateKey;
117
+ //# sourceMappingURL=updatekey.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updatekey.js","sourceRoot":"","sources":["../../../../src/commands/easysources/objecttranslations/updatekey.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ {
2
+ "commandDescription": "Update _tagid on csv files, based on the other fields",
3
+ "esCsvFlagDescription": "Specify a custom dir for input object translations. Default: '%s'",
4
+ "inputFlagDescription": "Specify an object translation. Example: Account-es",
5
+ "sortFlagDescription" : "Specify if split results must be sorted. Default '%s'",
6
+ "examples": [
7
+ "sf easysources objecttranslations updatekey",
8
+ "sf easysources objecttranslations updatekey -c './easysources'"
9
+ ]
10
+ }