@melfore/clibelt 1.0.0 → 1.0.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.
@@ -10,10 +10,13 @@ var path_1 = __importDefault(require("path"));
10
10
  var os_1 = require("os");
11
11
  var config_1 = __importDefault(require("../../config"));
12
12
  exports.CLI_NAME = "i18nMsg";
13
+ var AUTOGENERATED_HEADER = "// autogenerated with \"i18n-msg\"\n// DO NOT EDIT MANUALLY\n\n";
13
14
  var inputFile = path_1.default.join(process.cwd(), config_1.default.get(exports.CLI_NAME).input);
14
15
  var mal = require(inputFile);
15
16
  var outMsgDir = path_1.default.join(process.cwd(), config_1.default.get(exports.CLI_NAME).outMsg);
16
17
  var outTsFile = path_1.default.join(process.cwd(), config_1.default.get(exports.CLI_NAME).outTs);
18
+ var outTempDir = path_1.default.join(process.cwd(), config_1.default.get(exports.CLI_NAME).outTemp);
19
+ var outTsDir = path_1.default.dirname(outTsFile);
17
20
  var EXT = "json";
18
21
  var info = "Splitting \"".concat(config_1.default.get(exports.CLI_NAME).input, "\" into lang messages in folder \"").concat(config_1.default.get(exports.CLI_NAME).outMsg, "\" and TS constants \"").concat(config_1.default.get(exports.CLI_NAME).outTs, "\"...");
19
22
  console.log(info);
@@ -46,40 +49,62 @@ var tsName = function (code) {
46
49
  var writeTs = function (filename, messages) {
47
50
  var output = messages.reduce(function (result, msg) {
48
51
  return result + "export const ".concat(tsName(msg.code), " = \"").concat(msg.code, "\";").concat(os_1.EOL);
49
- }, "");
52
+ }, AUTOGENERATED_HEADER);
50
53
  fs_1.default.writeFile(filename, output, function (err) {
51
54
  if (err)
52
55
  console.log(err);
53
56
  console.log("Successfully written to file \"".concat(filename, "\""));
54
57
  });
55
58
  };
59
+ var writeKeys = function (key, translations, output) {
60
+ translations.forEach(function (t) {
61
+ if (!output[t.l]) {
62
+ output[t.l] = {};
63
+ }
64
+ output[t.l][key] = t.v;
65
+ });
66
+ };
67
+ var writeFiles = function (language, translations, dest) {
68
+ var langDir = path_1.default.dirname(dest);
69
+ fs_1.default.mkdirSync(langDir, { recursive: true });
70
+ writeObjJson(dest, translations[language]);
71
+ };
56
72
  var splitMessages = function (messages, namespace) {
57
73
  var sortedMessages = messages.sort(function (a, b) { return a.code.localeCompare(b.code); });
58
74
  var sortedName = namespace ? "".concat(namespace, "-sort-temp") : "messages-sort-temp";
59
- var tsFile = namespace ? "".concat(outMsgDir, "/").concat(namespace, ".ts") : outTsFile;
60
- writeObjJson("".concat(outMsgDir, "/").concat(sortedName, ".").concat(EXT), sortedMessages);
75
+ var tsFile = namespace ? "".concat(outTsDir, "/").concat(namespace, ".ts") : outTsFile;
76
+ writeObjJson("".concat(outTempDir, "/").concat(sortedName, ".").concat(EXT), sortedMessages);
61
77
  writeTs(tsFile, sortedMessages);
62
78
  var res = {};
79
+ var overrides = {};
63
80
  sortedMessages.forEach(function (k) {
64
- k.tr.forEach(function (t) {
65
- if (!res[t.l]) {
66
- res[t.l] = {};
81
+ var _a;
82
+ writeKeys(k.code, k.tr, res);
83
+ (_a = k.overrides) === null || _a === void 0 ? void 0 : _a.forEach(function (override) {
84
+ if (!overrides[override.customer]) {
85
+ overrides[override.customer] = {};
67
86
  }
68
- res[t.l][k.code] = t.v;
87
+ writeKeys(k.code, override.tr, overrides[override.customer]);
69
88
  });
70
89
  });
71
90
  Object.keys(res).map(function (n) {
72
91
  var dest = namespace ? "".concat(outMsgDir, "/").concat(n, "/").concat(namespace, ".").concat(EXT) : "".concat(outMsgDir, "/").concat(n, ".").concat(EXT);
73
- var langDir = path_1.default.dirname(dest);
74
- fs_1.default.mkdirSync(langDir, { recursive: true });
75
- writeObjJson(dest, res[n]);
92
+ writeFiles(n, res, dest);
93
+ });
94
+ Object.keys(overrides).map(function (customer) {
95
+ Object.keys(overrides[customer]).map(function (n) {
96
+ var dest = namespace
97
+ ? "".concat(outMsgDir, "/").concat(n, "/").concat(customer, "-").concat(namespace, ".").concat(EXT)
98
+ : "".concat(outMsgDir, "/").concat(customer, "-").concat(n, ".").concat(EXT);
99
+ writeFiles(n, overrides[customer], dest);
100
+ });
76
101
  });
77
102
  };
78
103
  var writeNamespacesFile = function (namespaces) {
79
104
  var content = namespaces.reduce(function (result, _a) {
80
105
  var ns = _a[0];
81
106
  return result + "export * from './".concat(ns, "';").concat(os_1.EOL);
82
- }, "");
107
+ }, AUTOGENERATED_HEADER);
83
108
  fs_1.default.writeFile(outTsFile, content, function (err) {
84
109
  if (err) {
85
110
  console.log("Error writing to", outTsFile);
@@ -87,7 +112,9 @@ var writeNamespacesFile = function (namespaces) {
87
112
  });
88
113
  };
89
114
  var checkNamespaces = function () {
115
+ fs_1.default.mkdirSync(outTempDir, { recursive: true });
90
116
  fs_1.default.mkdirSync(outMsgDir, { recursive: true });
117
+ fs_1.default.mkdirSync(outTsDir, { recursive: true });
91
118
  var namespaces = mal.namespaces ? Object.entries(mal.namespaces) : [];
92
119
  if (namespaces.length > 0) {
93
120
  namespaces.forEach(function (_a) {
@@ -14,6 +14,13 @@ declare const _default: {
14
14
  arg: string;
15
15
  env: string;
16
16
  };
17
+ outTemp: {
18
+ doc: string;
19
+ format: StringConstructor;
20
+ default: string;
21
+ arg: string;
22
+ env: string;
23
+ };
17
24
  outTs: {
18
25
  doc: string;
19
26
  format: StringConstructor;
@@ -16,6 +16,13 @@ exports.default = {
16
16
  arg: "i18n-out-msg",
17
17
  env: "I18N_OUT_MSG",
18
18
  },
19
+ outTemp: {
20
+ doc: "sorted messages directory",
21
+ format: String,
22
+ default: "./src/messages/temp",
23
+ arg: "i18n-out-temp",
24
+ env: "I18N_OUT_TEMP",
25
+ },
19
26
  outTs: {
20
27
  doc: "TypeScript source output directory",
21
28
  format: String,
@@ -3,6 +3,7 @@ declare const config: convict.Config<{
3
3
  i18nMsg: {
4
4
  input: string;
5
5
  outMsg: string;
6
+ outTemp: string;
6
7
  outTs: string;
7
8
  };
8
9
  }>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@melfore/clibelt",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "homepage": "https://github.com/melfore/clibelt#readme",
5
5
  "description": "CLI belt: the Melfore tool belt",
6
6
  "repository": {