trm-client 6.1.1 → 7.0.0

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.
Files changed (184) hide show
  1. package/LICENSE +20 -20
  2. package/README.md +65 -65
  3. package/changelog.txt +179 -165
  4. package/dist/command/AbstractCommand.d.ts +42 -0
  5. package/dist/command/AbstractCommand.js +418 -0
  6. package/dist/command/InquirerType.d.ts +3 -0
  7. package/dist/command/InquirerType.js +7 -0
  8. package/dist/{utils/executeCommand.d.ts → command/LoggerType.d.ts} +0 -4
  9. package/dist/command/LoggerType.js +11 -0
  10. package/dist/{utils/registerCommand.d.ts → command/RegisterCommandOpts.d.ts} +4 -3
  11. package/dist/command/implementations/Alias.d.ts +8 -0
  12. package/dist/command/implementations/Alias.js +172 -0
  13. package/dist/command/implementations/Compare.d.ts +7 -0
  14. package/dist/command/implementations/Compare.js +133 -0
  15. package/dist/command/implementations/Content.d.ts +5 -0
  16. package/dist/command/implementations/Content.js +195 -0
  17. package/dist/command/implementations/Deprecate.d.ts +5 -0
  18. package/dist/command/implementations/Deprecate.js +33 -0
  19. package/dist/command/implementations/DistTag.d.ts +5 -0
  20. package/dist/command/implementations/DistTag.js +48 -0
  21. package/dist/command/implementations/FindDependencies.d.ts +5 -0
  22. package/dist/command/implementations/FindDependencies.js +42 -0
  23. package/dist/command/implementations/Info.d.ts +11 -0
  24. package/dist/command/implementations/Info.js +245 -0
  25. package/dist/command/implementations/Install.d.ts +13 -0
  26. package/dist/command/implementations/Install.js +201 -0
  27. package/dist/command/implementations/List.d.ts +5 -0
  28. package/dist/command/implementations/List.js +116 -0
  29. package/dist/command/implementations/Lock.d.ts +5 -0
  30. package/dist/command/implementations/Lock.js +40 -0
  31. package/dist/command/implementations/Login.d.ts +5 -0
  32. package/dist/command/implementations/Login.js +66 -0
  33. package/dist/command/implementations/Logout.d.ts +5 -0
  34. package/dist/command/implementations/Logout.js +37 -0
  35. package/dist/command/implementations/Ping.d.ts +5 -0
  36. package/dist/{commands/findDependencies.js → command/implementations/Ping.js} +15 -16
  37. package/dist/command/implementations/Publish.d.ts +6 -0
  38. package/dist/command/implementations/Publish.js +145 -0
  39. package/dist/command/implementations/Registry.d.ts +5 -0
  40. package/dist/command/implementations/Registry.js +88 -0
  41. package/dist/command/implementations/Settings.d.ts +5 -0
  42. package/dist/command/implementations/Settings.js +42 -0
  43. package/dist/command/implementations/Unpublish.d.ts +5 -0
  44. package/dist/command/implementations/Unpublish.js +34 -0
  45. package/dist/command/implementations/View.d.ts +9 -0
  46. package/dist/command/implementations/View.js +237 -0
  47. package/dist/command/implementations/WhoAmI.d.ts +5 -0
  48. package/dist/command/implementations/WhoAmI.js +36 -0
  49. package/dist/command/implementations/index.d.ts +19 -0
  50. package/dist/command/implementations/index.js +35 -0
  51. package/dist/command/index.d.ts +4 -0
  52. package/dist/{commands/commons → command}/index.js +4 -2
  53. package/dist/{commands/arguments/ConnectArguments.d.ts → command/prompts/connect.d.ts} +2 -0
  54. package/dist/{commands → command}/prompts/connect.js +3 -3
  55. package/dist/command/prompts/createAlias.d.ts +1 -0
  56. package/dist/{commands → command/prompts}/createAlias.js +8 -8
  57. package/dist/command/prompts/deleteAlias.d.ts +1 -0
  58. package/dist/{commands → command/prompts}/deleteAlias.js +3 -4
  59. package/dist/command/prompts/index.d.ts +4 -0
  60. package/dist/{commands → command}/prompts/index.js +2 -0
  61. package/dist/index.js +34 -278
  62. package/dist/registryAlias/RegistryAlias.js +1 -1
  63. package/dist/systemAlias/SystemAlias.js +4 -4
  64. package/dist/utils/{Context.d.ts → GlobalContext.d.ts} +3 -3
  65. package/dist/utils/{Context.js → GlobalContext.js} +6 -6
  66. package/dist/utils/checkCliUpdate.d.ts +3 -2
  67. package/dist/utils/checkCliUpdate.js +3 -3
  68. package/dist/utils/getSapLogonConnections.js +3 -3
  69. package/dist/utils/index.d.ts +1 -4
  70. package/dist/utils/index.js +1 -4
  71. package/package.json +67 -65
  72. package/dist/commands/addRegistry.d.ts +0 -2
  73. package/dist/commands/addRegistry.js +0 -66
  74. package/dist/commands/alias.d.ts +0 -2
  75. package/dist/commands/alias.js +0 -156
  76. package/dist/commands/arguments/AddRegistryArguments.d.ts +0 -5
  77. package/dist/commands/arguments/AliasArguments.d.ts +0 -3
  78. package/dist/commands/arguments/AliasArguments.js +0 -2
  79. package/dist/commands/arguments/CheckArguments.d.ts +0 -4
  80. package/dist/commands/arguments/CheckArguments.js +0 -2
  81. package/dist/commands/arguments/CompareArguments.d.ts +0 -4
  82. package/dist/commands/arguments/CompareArguments.js +0 -2
  83. package/dist/commands/arguments/ConnectArguments.js +0 -2
  84. package/dist/commands/arguments/ContentArguments.d.ts +0 -6
  85. package/dist/commands/arguments/ContentArguments.js +0 -2
  86. package/dist/commands/arguments/CreateAliasArguments.d.ts +0 -3
  87. package/dist/commands/arguments/CreateAliasArguments.js +0 -2
  88. package/dist/commands/arguments/DeleteAliasArguments.d.ts +0 -3
  89. package/dist/commands/arguments/DeleteAliasArguments.js +0 -2
  90. package/dist/commands/arguments/FindDependenciesArguments.d.ts +0 -5
  91. package/dist/commands/arguments/FindDependenciesArguments.js +0 -2
  92. package/dist/commands/arguments/ImportArguments.d.ts +0 -19
  93. package/dist/commands/arguments/ImportArguments.js +0 -2
  94. package/dist/commands/arguments/InfoArguments.d.ts +0 -1
  95. package/dist/commands/arguments/InfoArguments.js +0 -2
  96. package/dist/commands/arguments/InstallArguments.d.ts +0 -20
  97. package/dist/commands/arguments/InstallArguments.js +0 -2
  98. package/dist/commands/arguments/ListArguments.d.ts +0 -3
  99. package/dist/commands/arguments/ListArguments.js +0 -2
  100. package/dist/commands/arguments/LockArguments.d.ts +0 -4
  101. package/dist/commands/arguments/LockArguments.js +0 -2
  102. package/dist/commands/arguments/LoginArguments.d.ts +0 -4
  103. package/dist/commands/arguments/LoginArguments.js +0 -2
  104. package/dist/commands/arguments/LogoutArguments.d.ts +0 -1
  105. package/dist/commands/arguments/LogoutArguments.js +0 -2
  106. package/dist/commands/arguments/PackArguments.d.ts +0 -22
  107. package/dist/commands/arguments/PackArguments.js +0 -2
  108. package/dist/commands/arguments/PingArguments.d.ts +0 -1
  109. package/dist/commands/arguments/PingArguments.js +0 -2
  110. package/dist/commands/arguments/PublishArguments.d.ts +0 -24
  111. package/dist/commands/arguments/PublishArguments.js +0 -2
  112. package/dist/commands/arguments/RemoveRegistryArguments.d.ts +0 -4
  113. package/dist/commands/arguments/RemoveRegistryArguments.js +0 -2
  114. package/dist/commands/arguments/SettingsArgument.d.ts +0 -3
  115. package/dist/commands/arguments/SettingsArgument.js +0 -2
  116. package/dist/commands/arguments/UnpublishArguments.d.ts +0 -4
  117. package/dist/commands/arguments/UnpublishArguments.js +0 -2
  118. package/dist/commands/arguments/UpdateArguments.d.ts +0 -2
  119. package/dist/commands/arguments/UpdateArguments.js +0 -2
  120. package/dist/commands/arguments/ViewArguments.d.ts +0 -3
  121. package/dist/commands/arguments/ViewArguments.js +0 -2
  122. package/dist/commands/arguments/WhoAmIArguments.d.ts +0 -1
  123. package/dist/commands/arguments/WhoAmIArguments.js +0 -2
  124. package/dist/commands/arguments/index.d.ts +0 -24
  125. package/dist/commands/arguments/index.js +0 -40
  126. package/dist/commands/check.d.ts +0 -2
  127. package/dist/commands/check.js +0 -87
  128. package/dist/commands/commons/CommandContext.d.ts +0 -9
  129. package/dist/commands/commons/CommandContext.js +0 -41
  130. package/dist/commands/commons/index.d.ts +0 -2
  131. package/dist/commands/commons/viewRegistryPackage.d.ts +0 -2
  132. package/dist/commands/commons/viewRegistryPackage.js +0 -48
  133. package/dist/commands/compare.d.ts +0 -2
  134. package/dist/commands/compare.js +0 -167
  135. package/dist/commands/content.d.ts +0 -2
  136. package/dist/commands/content.js +0 -182
  137. package/dist/commands/createAlias.d.ts +0 -2
  138. package/dist/commands/deleteAlias.d.ts +0 -2
  139. package/dist/commands/findDependencies.d.ts +0 -2
  140. package/dist/commands/import.d.ts +0 -2
  141. package/dist/commands/import.js +0 -84
  142. package/dist/commands/index.d.ts +0 -27
  143. package/dist/commands/index.js +0 -43
  144. package/dist/commands/info.d.ts +0 -2
  145. package/dist/commands/info.js +0 -233
  146. package/dist/commands/install.d.ts +0 -2
  147. package/dist/commands/install.js +0 -85
  148. package/dist/commands/list.d.ts +0 -2
  149. package/dist/commands/list.js +0 -70
  150. package/dist/commands/lock.d.ts +0 -2
  151. package/dist/commands/lock.js +0 -64
  152. package/dist/commands/login.d.ts +0 -2
  153. package/dist/commands/login.js +0 -59
  154. package/dist/commands/logout.d.ts +0 -2
  155. package/dist/commands/logout.js +0 -27
  156. package/dist/commands/pack.d.ts +0 -2
  157. package/dist/commands/pack.js +0 -95
  158. package/dist/commands/ping.d.ts +0 -2
  159. package/dist/commands/ping.js +0 -21
  160. package/dist/commands/prompts/connect.d.ts +0 -3
  161. package/dist/commands/prompts/index.d.ts +0 -2
  162. package/dist/commands/publish.d.ts +0 -2
  163. package/dist/commands/publish.js +0 -128
  164. package/dist/commands/removeRegistry.d.ts +0 -2
  165. package/dist/commands/removeRegistry.js +0 -36
  166. package/dist/commands/selfUpdate.d.ts +0 -1
  167. package/dist/commands/selfUpdate.js +0 -77
  168. package/dist/commands/settings.d.ts +0 -2
  169. package/dist/commands/settings.js +0 -32
  170. package/dist/commands/unpublish.d.ts +0 -2
  171. package/dist/commands/unpublish.js +0 -61
  172. package/dist/commands/update.d.ts +0 -2
  173. package/dist/commands/update.js +0 -20
  174. package/dist/commands/view.d.ts +0 -2
  175. package/dist/commands/view.js +0 -219
  176. package/dist/commands/whoami.d.ts +0 -2
  177. package/dist/commands/whoami.js +0 -34
  178. package/dist/utils/checkTrmDependencies.d.ts +0 -1
  179. package/dist/utils/checkTrmDependencies.js +0 -43
  180. package/dist/utils/executeCommand.js +0 -213
  181. package/dist/utils/registerCommand.js +0 -93
  182. /package/dist/{commands/arguments/AddRegistryArguments.js → command/RegisterCommandOpts.js} +0 -0
  183. /package/dist/{commands → command}/prompts/pickRegistry.d.ts +0 -0
  184. /package/dist/{commands → command}/prompts/pickRegistry.js +0 -0
@@ -0,0 +1,245 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.Info = void 0;
16
+ const trm_commons_1 = require("trm-commons");
17
+ const trm_core_1 = require("trm-core");
18
+ const AbstractCommand_1 = require("../AbstractCommand");
19
+ const utils_1 = require("../../utils");
20
+ const semver_1 = require("semver");
21
+ const chalk_1 = __importDefault(require("chalk"));
22
+ const fs_1 = require("fs");
23
+ const path_1 = require("path");
24
+ const get_root_path_1 = require("get-root-path");
25
+ class Info extends AbstractCommand_1.AbstractCommand {
26
+ init() {
27
+ this.registerOpts.requiresConnection = true;
28
+ this.registerOpts.addNoConnection = true;
29
+ this.registerOpts.requiresTrmDependencies = true;
30
+ this.command.description(`TRM Client/Server Info. Shows installed and available updates.`);
31
+ }
32
+ onTrmDepMissing(dependency) {
33
+ return false;
34
+ }
35
+ onTrmDepVersionNotSatisfied(trmPackage) {
36
+ return false;
37
+ }
38
+ getDependencyVersion(moduleName, rootModule = 'trm-client') {
39
+ var file;
40
+ try {
41
+ file = (0, fs_1.readFileSync)((0, path_1.join)(get_root_path_1.rootPath, `/node_modules/${rootModule}/node_modules/${moduleName}/package.json`));
42
+ }
43
+ catch (e) {
44
+ file = (0, fs_1.readFileSync)((0, path_1.join)(get_root_path_1.rootPath, `/node_modules/${moduleName}/package.json`));
45
+ }
46
+ if (!file) {
47
+ trm_commons_1.Logger.warning(`Library ${moduleName} (root ${rootModule}) was not found!`, true);
48
+ }
49
+ else {
50
+ return JSON.parse(file.toString()).version;
51
+ }
52
+ }
53
+ getNodeRfcVersion(npmGlobal) {
54
+ var file;
55
+ try {
56
+ file = (0, fs_1.readFileSync)((0, path_1.join)(npmGlobal, `/node-rfc/package.json`));
57
+ }
58
+ catch (e) {
59
+ }
60
+ if (!file) {
61
+ trm_commons_1.Logger.warning(`Library node-rfc was not found!`, true);
62
+ }
63
+ else {
64
+ return JSON.parse(file.toString()).version;
65
+ }
66
+ }
67
+ getNpmLatestForText(packageName, installedVersion, text) {
68
+ return __awaiter(this, void 0, void 0, function* () {
69
+ try {
70
+ const latestVersion = yield (0, utils_1.getNpmPackageLatestVersion)(packageName);
71
+ if ((0, semver_1.gte)(installedVersion, latestVersion)) {
72
+ text += ` ${chalk_1.default.bgGreen('LATEST')}`;
73
+ }
74
+ else {
75
+ text += ` ${chalk_1.default.bold('v' + latestVersion + ' available')}`;
76
+ }
77
+ }
78
+ catch (e) {
79
+ text += ` ${chalk_1.default.bgGray('Can\'t fetch latest version')}`;
80
+ }
81
+ return text;
82
+ });
83
+ }
84
+ handler() {
85
+ return __awaiter(this, void 0, void 0, function* () {
86
+ trm_commons_1.Logger.loading(`Reading data...`);
87
+ const npmGlobal = utils_1.GlobalContext.getInstance().getSettings().globalNodeModules;
88
+ const clientLatest = yield this.getCliVersionStatus();
89
+ const clientVersion = (0, utils_1.getClientVersion)();
90
+ const clientDependencies = (0, utils_1.getClientNodeDependencies)();
91
+ const trmDependencies = (0, trm_core_1.getCoreTrmDependencies)();
92
+ const trmDependenciesInstances = (yield this.getTrmDependenciesCheck()).dependencies;
93
+ const trmMissingDependencies = (yield this.getTrmDependenciesCheck()).missingDependencies;
94
+ const nodeRfcVersion = this.getNodeRfcVersion(npmGlobal);
95
+ const packages = yield this.getSystemPackages();
96
+ const trmRest = packages.find(o => o.compareName("trm-rest") && o.compareRegistry(trm_core_1.RegistryProvider.getRegistry()));
97
+ var nodeR3transVersion;
98
+ try {
99
+ nodeR3transVersion = this.getDependencyVersion("node-r3trans", "trm-core");
100
+ if (!nodeR3transVersion) {
101
+ throw new Error();
102
+ }
103
+ }
104
+ catch (e) {
105
+ nodeR3transVersion = this.getDependencyVersion("node-r3trans");
106
+ }
107
+ var clientDependenciesTree = [];
108
+ if (clientDependencies) {
109
+ for (const d of Object.keys(clientDependencies).filter(k => k.startsWith('trm'))) {
110
+ var dText = ``;
111
+ var dInstalledVersion = this.getDependencyVersion(d);
112
+ if (dInstalledVersion) {
113
+ dText = ` -> ${dInstalledVersion}`;
114
+ dText = yield this.getNpmLatestForText(d, dInstalledVersion, dText);
115
+ }
116
+ clientDependenciesTree.push({
117
+ text: `${d} ${clientDependencies[d]}${dText}`,
118
+ children: []
119
+ });
120
+ }
121
+ }
122
+ var serverDependenciesTree = [];
123
+ if (trmDependencies) {
124
+ for (const d of Object.keys(trmDependencies)) {
125
+ var dText = ``;
126
+ const oTrmPackage = trmDependenciesInstances.find(o => o.compareName(d));
127
+ if (oTrmPackage) {
128
+ var dInstalledVersion;
129
+ try {
130
+ dInstalledVersion = oTrmPackage.manifest.get().version;
131
+ }
132
+ catch (e) {
133
+ dText = ` -> ${e.message}`;
134
+ }
135
+ if (dInstalledVersion) {
136
+ dText = ` -> ${dInstalledVersion}`;
137
+ try {
138
+ const dLatestVersion = (yield oTrmPackage.registry.getPackage(oTrmPackage.packageName, 'latest')).manifest.version;
139
+ if ((0, semver_1.gte)(dInstalledVersion, dLatestVersion)) {
140
+ dText += ` ${chalk_1.default.bgGreen('LATEST')}`;
141
+ }
142
+ else {
143
+ dText += ` ${chalk_1.default.bold('v' + dLatestVersion + ' available')}`;
144
+ }
145
+ }
146
+ catch (e) {
147
+ dText += ` ${chalk_1.default.bgGray('Can\'t fetch latest version')}`;
148
+ }
149
+ }
150
+ }
151
+ else {
152
+ const missingDependency = trmMissingDependencies.find(o => {
153
+ if (typeof (o) === 'string') {
154
+ if (o === d) {
155
+ return o;
156
+ }
157
+ }
158
+ });
159
+ if (missingDependency) {
160
+ try {
161
+ dText = ` -> ${chalk_1.default.bgRed(missingDependency.manifest.get().version)}`;
162
+ }
163
+ catch (e) {
164
+ dText = ` -> ${chalk_1.default.bgRed('Not found')}`;
165
+ }
166
+ }
167
+ }
168
+ serverDependenciesTree.push({
169
+ text: `${d} ${trmDependencies[d]}${dText}`,
170
+ children: []
171
+ });
172
+ }
173
+ }
174
+ if (trmRest && trmRest.manifest) {
175
+ serverDependenciesTree.push({
176
+ text: `trm-rest -> ${trmRest.manifest.get().version}`,
177
+ children: []
178
+ });
179
+ }
180
+ var clientChildrenTree = [{
181
+ text: `trm-client ${clientVersion} ${(0, semver_1.gte)(clientLatest.localVersion, clientLatest.latestVersion) ? chalk_1.default.bgGreen('LATEST') : chalk_1.default.bold('v' + clientLatest.latestVersion + ' available')}`,
182
+ children: clientDependenciesTree
183
+ }];
184
+ if (nodeRfcVersion) {
185
+ clientChildrenTree.push({
186
+ text: yield this.getNpmLatestForText('node-rfc', nodeRfcVersion, `node-rfc ${nodeRfcVersion}`),
187
+ children: []
188
+ });
189
+ }
190
+ else {
191
+ clientChildrenTree.push({
192
+ text: `node-rfc ${chalk_1.default.bold('not found')}`,
193
+ children: []
194
+ });
195
+ }
196
+ if (nodeR3transVersion) {
197
+ clientChildrenTree.push({
198
+ text: yield this.getNpmLatestForText('node-r3trans', nodeR3transVersion, `node-r3trans ${nodeR3transVersion}`),
199
+ children: []
200
+ });
201
+ }
202
+ else {
203
+ clientChildrenTree.push({
204
+ text: `node-r3trans ${chalk_1.default.bold('not found')}`,
205
+ children: []
206
+ });
207
+ }
208
+ const clientTree = {
209
+ text: chalk_1.default.bold(`Client`),
210
+ children: clientChildrenTree
211
+ };
212
+ const serverTree = {
213
+ text: chalk_1.default.bold(`Server (${trm_core_1.SystemConnector.getDest()})`),
214
+ children: serverDependenciesTree
215
+ };
216
+ const pluginsTree = {
217
+ text: chalk_1.default.bold(`Plugins`),
218
+ children: []
219
+ };
220
+ for (const plugin of utils_1.GlobalContext.getInstance().getPlugins()) {
221
+ try {
222
+ const installedVersion = JSON.parse((0, fs_1.readFileSync)((0, path_1.join)(plugin.location, 'package.json')).toString()).version;
223
+ pluginsTree.children.push({
224
+ text: yield this.getNpmLatestForText(plugin.name, installedVersion, `${plugin.name} ${installedVersion}`),
225
+ children: []
226
+ });
227
+ }
228
+ catch (_a) {
229
+ pluginsTree.children.push({
230
+ text: plugin.name,
231
+ children: []
232
+ });
233
+ }
234
+ }
235
+ trm_commons_1.Logger.tree(clientTree);
236
+ if (!(trm_core_1.SystemConnector.systemConnector instanceof utils_1.DummyConnector)) {
237
+ trm_commons_1.Logger.tree(serverTree);
238
+ }
239
+ if (pluginsTree.children.length > 0) {
240
+ trm_commons_1.Logger.tree(pluginsTree);
241
+ }
242
+ });
243
+ }
244
+ }
245
+ exports.Info = Info;
@@ -0,0 +1,13 @@
1
+ import { TrmPackage } from "trm-core";
2
+ import { AbstractCommand } from "../AbstractCommand";
3
+ export declare class Install extends AbstractCommand {
4
+ protected init(): void;
5
+ private selfUpdate;
6
+ private detectPackageManager;
7
+ private looksLikeYarnBerry;
8
+ private isPermsError;
9
+ private formatPermsHelp;
10
+ protected onArgs(): void;
11
+ protected onTrmDepVersionNotSatisfied(trmPackage: TrmPackage): boolean;
12
+ protected handler(): Promise<void>;
13
+ }
@@ -0,0 +1,201 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.Install = void 0;
16
+ const trm_commons_1 = require("trm-commons");
17
+ const trm_core_1 = require("trm-core");
18
+ const AbstractCommand_1 = require("../AbstractCommand");
19
+ const utils_1 = require("../../utils");
20
+ const execa_1 = require("execa");
21
+ const node_os_1 = __importDefault(require("node:os"));
22
+ const lockfile_1 = require("trm-core/dist/lockfile");
23
+ class Install extends AbstractCommand_1.AbstractCommand {
24
+ init() {
25
+ this.registerOpts.requiresConnection = true;
26
+ this.registerOpts.requiresTrmDependencies = true;
27
+ this.registerOpts.requiresR3trans = true;
28
+ if (this.name === 'update') {
29
+ this.registerOpts.requiresRegistry = true;
30
+ this.command.argument(`[package]`, `Name of the package.`);
31
+ this.command.argument(`[version]`, `Version (or tag) of the release.`, `latest`);
32
+ this.command.description(`Update trm-client / Update package from registry into system.`);
33
+ this.command.addHelpText(`before`, `When no package name is specified, trm-client will self-update; all options are invalid, in this case.`);
34
+ }
35
+ else if (this.name === 'install') {
36
+ this.registerOpts.requiresRegistry = true;
37
+ this.command.argument(`<package>`, `Name of the package.`);
38
+ this.command.argument(`[version]`, `Version (or tag) of the release.`, `latest`);
39
+ this.command.description(`Install package from registry into system.`);
40
+ }
41
+ else if (this.name === 'clean-install') {
42
+ this.registerOpts.requiresRegistry = true;
43
+ this.command.argument(`<package>`, `Name of the package.`);
44
+ this.command.argument(`[version]`, `Version (or tag) of the release.`, `latest`);
45
+ this.command.description(`Clean install package from registry into system (requires lockfile).`);
46
+ this.command.option(`-L, --lock-file`, `Install lockfile`, `trm-lock.json`);
47
+ }
48
+ else if (this.name === 'import') {
49
+ this.command.argument(`<filename>`, `Name (or path) of the file.`);
50
+ this.command.description(`Import a package (as a file) into system.`);
51
+ }
52
+ this.command.option(`-t, --timeout <seconds>`, `Transport import timeout (in seconds)`, `180`);
53
+ this.command.option(`-T, --transport-layer <transport layer>`, `Package transport layer. (default: System default)`);
54
+ this.command.option(`--no-deps`, `Do not install dependencies.`, false);
55
+ this.command.option(`--no-obj-type`, `Do not check object types before import.`, false);
56
+ this.command.option(`--no-obj-check`, `Do not check if objects before import.`, false);
57
+ this.command.option(`--no-sap-entries`, `Do not check SAP entries before import.`, false);
58
+ this.command.option(`--no-lang-tr`, `Do not import language (translation) transport.`, false);
59
+ this.command.option(`--no-cust-tr`, `Do not import customizing transports.`, false);
60
+ this.command.option(`--no-install-tr`, `Do not create install transport.`, false);
61
+ this.command.option(`--no-namespace`, `Do not import namespace.`, false);
62
+ this.command.option(`--package-replacements <replacements>`, `SAP Package replacements (JSON or path to JSON file)`);
63
+ this.command.option(`--install-tr-target <target>`, `Install transport target system`);
64
+ this.command.option(`--no-prompts`, `No prompts (will force some decisions).`, false);
65
+ }
66
+ selfUpdate() {
67
+ return __awaiter(this, void 0, void 0, function* () {
68
+ const pm = this.detectPackageManager();
69
+ const target = `trm-client@latest`;
70
+ const command = pm === "pnpm"
71
+ ? { bin: "pnpm", args: ["add", "-g", target] }
72
+ : pm === "yarn1"
73
+ ? { bin: "yarn", args: ["global", "add", target] }
74
+ : { bin: "npm", args: ["install", "-g", target] };
75
+ try {
76
+ yield (0, execa_1.execa)(command.bin, command.args, { stdio: "inherit" });
77
+ trm_commons_1.Logger.success(`Client updated successfully.`);
78
+ }
79
+ catch (err) {
80
+ if (this.isPermsError(err)) {
81
+ trm_commons_1.Logger.error(this.formatPermsHelp(command.bin));
82
+ }
83
+ if (command.bin === "yarn" && this.looksLikeYarnBerry()) {
84
+ trm_commons_1.Logger.error(`\Detected Yarn ≥2 (Berry). It doesn't support reliable global installs.\n` +
85
+ ` Try: npm install -g ${target}`);
86
+ }
87
+ throw err;
88
+ }
89
+ });
90
+ }
91
+ detectPackageManager() {
92
+ var _a;
93
+ const ua = (_a = process.env.npm_config_user_agent) !== null && _a !== void 0 ? _a : "";
94
+ if (ua.includes("pnpm/"))
95
+ return "pnpm";
96
+ if (ua.includes("yarn/1."))
97
+ return "yarn1";
98
+ return "npm";
99
+ }
100
+ looksLikeYarnBerry() {
101
+ var _a;
102
+ const ua = (_a = process.env.npm_config_user_agent) !== null && _a !== void 0 ? _a : "";
103
+ return ua.includes("yarn/") && !ua.includes("yarn/1.");
104
+ }
105
+ isPermsError(err) {
106
+ const msg = String((err === null || err === void 0 ? void 0 : err.message) || err);
107
+ return ((err === null || err === void 0 ? void 0 : err.code) === "EACCES" ||
108
+ (err === null || err === void 0 ? void 0 : err.errno) === -13 ||
109
+ /EACCES|EPERM|permission denied/i.test(msg));
110
+ }
111
+ formatPermsHelp(bin) {
112
+ const isUnix = node_os_1.default.platform() !== "win32";
113
+ return (`Permission error installing globally.\n` +
114
+ `Troubleshooting tips:\n` +
115
+ (isUnix
116
+ ? ` • If you used a system Node, configure a user-level global prefix:\n` +
117
+ ` mkdir -p ~/.npm-global && npm config set prefix ~/.npm-global\n` +
118
+ ` export PATH="$HOME/.npm-global/bin:$PATH"\n` +
119
+ ` (Then rerun: ${bin} …)\n` +
120
+ ` • Prefer using a Node version manager (nvm/fnm/volta) to avoid sudo.\n` +
121
+ ` • Avoid running global installs with sudo unless you know why.\n`
122
+ : ` • Run your shell as Administrator, or use a Node manager (nvs/volta).\n`) +
123
+ ``);
124
+ }
125
+ onArgs() {
126
+ if (this.name === 'update' && !this.args.package) {
127
+ this.registerOpts = {};
128
+ }
129
+ }
130
+ onTrmDepVersionNotSatisfied(trmPackage) {
131
+ return !trmPackage.compareName(this.args.package);
132
+ }
133
+ handler() {
134
+ return __awaiter(this, void 0, void 0, function* () {
135
+ if (this.name === 'update' && !this.args.package) {
136
+ yield this.selfUpdate();
137
+ return;
138
+ }
139
+ var registry;
140
+ if (this.name === 'import') {
141
+ registry = new trm_core_1.FileSystem(this.args.filename);
142
+ }
143
+ else {
144
+ registry = this.getRegistry();
145
+ }
146
+ const packages = yield this.getSystemPackages();
147
+ const result = yield (0, trm_core_1.install)({
148
+ contextData: {
149
+ r3transOptions: {
150
+ tempDirPath: (0, utils_1.getTempFolder)(),
151
+ r3transDirPath: this.args.r3transPath,
152
+ useDocker: utils_1.GlobalContext.getInstance().getSettings().r3transDocker,
153
+ dockerOptions: {
154
+ name: utils_1.GlobalContext.getInstance().getSettings().r3transDockerName
155
+ }
156
+ },
157
+ noInquirer: this.args.noPrompts,
158
+ systemPackages: packages,
159
+ noR3transInfo: false
160
+ },
161
+ packageData: {
162
+ registry,
163
+ name: this.args.package,
164
+ version: this.args.version,
165
+ overwrite: this.name === 'update'
166
+ },
167
+ installData: {
168
+ checks: {
169
+ noDependencies: this.args.noDeps,
170
+ noObjectTypes: this.args.noObjType,
171
+ noSapEntries: this.args.noSapEntries,
172
+ noExistingObjects: this.args.noObjCheck,
173
+ lockfile: this.args.lockFile ? lockfile_1.Lockfile.fromJson(this.parseJsonArg('lockFile')) : undefined
174
+ },
175
+ import: {
176
+ noLang: this.args.noLangTr,
177
+ noCust: this.args.noCustTr,
178
+ timeout: this.parseNumberArg('timeout'),
179
+ replaceExistingTransports: false
180
+ },
181
+ installDevclass: {
182
+ keepOriginal: false,
183
+ transportLayer: this.args.transportLayer,
184
+ replacements: this.parseJsonArg('packageReplacements'),
185
+ skipNamespace: this.args.noNamespace
186
+ },
187
+ installTransport: {
188
+ create: !!this.args.noInstallTransport,
189
+ targetSystem: this.args.installTrTarget
190
+ }
191
+ }
192
+ });
193
+ var sOutput = `${result.manifest.name} v${result.manifest.version} installed`;
194
+ if (result.installTransport) {
195
+ sOutput += `, use ${result.installTransport.trkorr} transport in landscape`;
196
+ }
197
+ trm_commons_1.Logger.success(sOutput);
198
+ });
199
+ }
200
+ }
201
+ exports.Install = Install;
@@ -0,0 +1,5 @@
1
+ import { AbstractCommand } from "../AbstractCommand";
2
+ export declare class List extends AbstractCommand {
3
+ protected init(): void;
4
+ protected handler(): Promise<void>;
5
+ }
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.List = void 0;
16
+ const trm_commons_1 = require("trm-commons");
17
+ const trm_core_1 = require("trm-core");
18
+ const AbstractCommand_1 = require("../AbstractCommand");
19
+ const chalk_1 = __importDefault(require("chalk"));
20
+ class List extends AbstractCommand_1.AbstractCommand {
21
+ init() {
22
+ this.registerOpts.requiresConnection = true;
23
+ this.command.description(`List TRM packages in a system.`);
24
+ this.command.option(`-L, --locals`, `Include local packages (imported and exported)`, false);
25
+ this.command.option(`-o, --output-type`, `Output type (TREE or TABLE)`, 'TREE');
26
+ }
27
+ handler() {
28
+ return __awaiter(this, void 0, void 0, function* () {
29
+ const dest = trm_core_1.SystemConnector.getDest();
30
+ var aPackages = yield this.getSystemPackages();
31
+ var iLocals = aPackages.filter(o => o.registry.getRegistryType() === trm_core_1.RegistryType.LOCAL).length;
32
+ if (!this.args.locals) {
33
+ aPackages = aPackages.filter(o => o.registry.getRegistryType() !== trm_core_1.RegistryType.LOCAL);
34
+ }
35
+ if (aPackages.length > 0) {
36
+ const tableHead = [`Name`, `Version`, `Registry`, `Devclass`, `TRM transport`, `Landscape transport`];
37
+ var tableData = [];
38
+ for (const oPackage of aPackages) {
39
+ try {
40
+ const packageName = oPackage.packageName || '';
41
+ const version = oPackage.manifest.get().version || '';
42
+ const registry = oPackage.registry.getRegistryType() === trm_core_1.RegistryType.LOCAL ? chalk_1.default.bold(oPackage.registry.name) : oPackage.registry.name;
43
+ const devclass = oPackage.getDevclass() || '';
44
+ const linkedTransport = oPackage.manifest.getLinkedTransport();
45
+ const landscapeTransport = yield oPackage.getWbTransport();
46
+ var importTransport = '';
47
+ if (linkedTransport && (yield linkedTransport.isImported())) {
48
+ importTransport = linkedTransport.trkorr;
49
+ }
50
+ tableData.push([
51
+ packageName,
52
+ version,
53
+ registry,
54
+ devclass,
55
+ importTransport,
56
+ landscapeTransport ? landscapeTransport.trkorr : ''
57
+ ]);
58
+ }
59
+ catch (e) {
60
+ trm_commons_1.Logger.error(e, true);
61
+ }
62
+ }
63
+ if (tableData.length < aPackages.length) {
64
+ trm_commons_1.Logger.warning(`${aPackages.length - tableData.length} packages couldn't be printed (check logs).`);
65
+ }
66
+ trm_commons_1.Logger.info(`${dest} has ${aPackages.length} packages.`);
67
+ tableData = tableData.reverse();
68
+ if (this.args.outputType === 'TABLE') {
69
+ trm_commons_1.Logger.table(tableHead, tableData);
70
+ }
71
+ else if (this.args.outputType === 'TREE') {
72
+ const grouped = Object.entries(tableData.reduce((acc, row) => { var _a; var _b; return (((_a = acc[_b = row[2]]) !== null && _a !== void 0 ? _a : (acc[_b] = [])).push(row), acc); }, {})).map(([registry, packages]) => ({ registry, packages }));
73
+ grouped.forEach(o => {
74
+ var tree = {
75
+ text: `Registry "${chalk_1.default.bold(o.registry)}"`,
76
+ children: []
77
+ };
78
+ o.packages.forEach(p => {
79
+ var packageTree = {
80
+ text: chalk_1.default.bold(`${p[0]} v${p[1]}`),
81
+ children: [{
82
+ text: `SAP Package: ${p[3]}`,
83
+ children: []
84
+ }]
85
+ };
86
+ if (p[4]) {
87
+ packageTree.children.push({
88
+ text: `Import transport: ${p[4]}`,
89
+ children: []
90
+ });
91
+ }
92
+ if (p[5]) {
93
+ packageTree.children.push({
94
+ text: `Landscape transport: ${p[5]}`,
95
+ children: []
96
+ });
97
+ }
98
+ tree.children.push(packageTree);
99
+ });
100
+ trm_commons_1.Logger.tree(tree);
101
+ });
102
+ }
103
+ else {
104
+ throw new Error(`Invalid output type "${this.args.outputType}".`);
105
+ }
106
+ if (iLocals > 0 && !this.args.locals) {
107
+ trm_commons_1.Logger.warning(`There ${iLocals === 1 ? 'is' : 'are'} ${iLocals} local package${iLocals === 1 ? '' : 's'}. Run with option -L (--locals) to list ${iLocals === 1 ? 'it' : 'them'}.`);
108
+ }
109
+ }
110
+ else {
111
+ trm_commons_1.Logger.info(`${dest} has 0 packages.`);
112
+ }
113
+ });
114
+ }
115
+ }
116
+ exports.List = List;
@@ -0,0 +1,5 @@
1
+ import { AbstractCommand } from "../AbstractCommand";
2
+ export declare class Lock extends AbstractCommand {
3
+ protected init(): void;
4
+ protected handler(): Promise<void>;
5
+ }
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.Lock = void 0;
13
+ const trm_commons_1 = require("trm-commons");
14
+ const AbstractCommand_1 = require("../AbstractCommand");
15
+ const fs_1 = require("fs");
16
+ class Lock extends AbstractCommand_1.AbstractCommand {
17
+ init() {
18
+ this.registerOpts.requiresConnection = true;
19
+ this.registerOpts.requiresRegistry = true;
20
+ this.registerOpts.ignoreRegistryUnreachable = true;
21
+ this.command.description(`Generate a lockfile for a TRM package.`);
22
+ this.command.argument(`<package>`, `Name of the package to generate lock file.`);
23
+ this.command.argument(`[output path]`, `Output path.`, 'trm-lock.json');
24
+ }
25
+ handler() {
26
+ return __awaiter(this, void 0, void 0, function* () {
27
+ const packages = yield this.getSystemPackages();
28
+ trm_commons_1.Logger.loading(`Generating lock file...`);
29
+ const source = packages.find(o => o.compareName(this.args.package) && o.compareRegistry(this.getRegistry()));
30
+ if (!source) {
31
+ throw new Error(`Package "${this.args.package}" not found`);
32
+ }
33
+ const lock = yield source.getLockfile(packages);
34
+ trm_commons_1.Logger.loading(`Writing lock file...`);
35
+ (0, fs_1.writeFileSync)(this.args.outputPath, lock.toJson());
36
+ trm_commons_1.Logger.info(`Generated lock file "${this.args.outputPath}"`);
37
+ });
38
+ }
39
+ }
40
+ exports.Lock = Lock;
@@ -0,0 +1,5 @@
1
+ import { AbstractCommand } from "../AbstractCommand";
2
+ export declare class Login extends AbstractCommand {
3
+ protected init(): void;
4
+ protected handler(): Promise<void>;
5
+ }