bdy 1.25.13-stage → 1.25.14-dev

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 (177) hide show
  1. package/distTs/package.json +1 -1
  2. package/distTs/src/agent/manager.js +19 -6
  3. package/distTs/src/agent/system.js +9 -4
  4. package/distTs/src/api/client.js +20 -7
  5. package/distTs/src/cliCommand.js +17 -1
  6. package/distTs/src/cliIndex.js +12 -2
  7. package/distTs/src/command/agent/debug.js +4 -3
  8. package/distTs/src/command/agent/disable.js +4 -3
  9. package/distTs/src/command/agent/enable.js +4 -3
  10. package/distTs/src/command/agent/install.js +28 -12
  11. package/distTs/src/command/agent/proxy/disable.js +4 -3
  12. package/distTs/src/command/agent/proxy/enable.js +4 -3
  13. package/distTs/src/command/agent/proxy/status.js +1 -1
  14. package/distTs/src/command/agent/restart.js +13 -5
  15. package/distTs/src/command/agent/start.js +11 -4
  16. package/distTs/src/command/agent/status.js +1 -1
  17. package/distTs/src/command/agent/stop.js +5 -4
  18. package/distTs/src/command/agent/tags/get.js +1 -1
  19. package/distTs/src/command/agent/tags/set.js +4 -3
  20. package/distTs/src/command/agent/target/disable.js +4 -3
  21. package/distTs/src/command/agent/target/enable.js +4 -3
  22. package/distTs/src/command/agent/target/status.js +1 -1
  23. package/distTs/src/command/agent/tunnel/disable.js +4 -3
  24. package/distTs/src/command/agent/tunnel/enable.js +4 -3
  25. package/distTs/src/command/agent/tunnel/http.js +10 -2
  26. package/distTs/src/command/agent/tunnel/list.js +1 -1
  27. package/distTs/src/command/agent/tunnel/remove.js +4 -3
  28. package/distTs/src/command/agent/tunnel/start.js +9 -5
  29. package/distTs/src/command/agent/tunnel/status.js +1 -1
  30. package/distTs/src/command/agent/tunnel/tcp.js +10 -2
  31. package/distTs/src/command/agent/tunnel/tls.js +10 -2
  32. package/distTs/src/command/agent/uninstall.js +6 -4
  33. package/distTs/src/command/agent/update.js +13 -5
  34. package/distTs/src/command/agent/user.js +4 -3
  35. package/distTs/src/command/agent/version.js +1 -1
  36. package/distTs/src/command/api/info.js +5 -3
  37. package/distTs/src/command/api/list.js +1 -0
  38. package/distTs/src/command/artifact/composer/publish.js +21 -16
  39. package/distTs/src/command/artifact/delete.js +8 -5
  40. package/distTs/src/command/artifact/docker/login.js +22 -5
  41. package/distTs/src/command/artifact/download.js +16 -15
  42. package/distTs/src/command/artifact/get.js +3 -2
  43. package/distTs/src/command/artifact/open.js +3 -2
  44. package/distTs/src/command/artifact/publish.js +3 -2
  45. package/distTs/src/command/artifact/version/create.js +3 -2
  46. package/distTs/src/command/artifact/version/delete.js +9 -6
  47. package/distTs/src/command/artifact/version/get.js +4 -3
  48. package/distTs/src/command/artifact/version/list.js +3 -2
  49. package/distTs/src/command/artifact/version/open.js +7 -6
  50. package/distTs/src/command/config/add/http.js +3 -2
  51. package/distTs/src/command/config/add/tcp.js +3 -2
  52. package/distTs/src/command/config/add/tls.js +3 -2
  53. package/distTs/src/command/config/get/region.js +5 -2
  54. package/distTs/src/command/config/get/timeout.js +5 -2
  55. package/distTs/src/command/config/get/token.js +5 -2
  56. package/distTs/src/command/config/get/tunnel.js +3 -2
  57. package/distTs/src/command/config/get/tunnels.js +1 -1
  58. package/distTs/src/command/config/get/whitelist.js +5 -2
  59. package/distTs/src/command/config/remove/token.js +4 -3
  60. package/distTs/src/command/config/remove/tunnel.js +6 -4
  61. package/distTs/src/command/config/set/region.js +4 -3
  62. package/distTs/src/command/config/set/timeout.js +4 -3
  63. package/distTs/src/command/config/set/token.js +5 -3
  64. package/distTs/src/command/config/set/whitelist.js +4 -3
  65. package/distTs/src/command/crawl/link.js +10 -4
  66. package/distTs/src/command/crawl/run.js +30 -18
  67. package/distTs/src/command/distro/delete.js +8 -5
  68. package/distTs/src/command/distro/get.js +3 -2
  69. package/distTs/src/command/distro/open.js +3 -2
  70. package/distTs/src/command/distro/route/create.js +3 -2
  71. package/distTs/src/command/distro/route/delete.js +8 -5
  72. package/distTs/src/command/distro/route/get.js +3 -2
  73. package/distTs/src/command/distro/route/list.js +3 -2
  74. package/distTs/src/command/distro/route/open.js +3 -2
  75. package/distTs/src/command/distro/route/update.js +3 -2
  76. package/distTs/src/command/distro/update.js +3 -2
  77. package/distTs/src/command/domain/buy.js +36 -17
  78. package/distTs/src/command/domain/get.js +3 -2
  79. package/distTs/src/command/domain/list.js +1 -1
  80. package/distTs/src/command/domain/open.js +4 -2
  81. package/distTs/src/command/domain/search.js +1 -0
  82. package/distTs/src/command/environment/create.js +1 -1
  83. package/distTs/src/command/environment/delete.js +6 -4
  84. package/distTs/src/command/environment/get.js +1 -0
  85. package/distTs/src/command/environment/list.js +1 -1
  86. package/distTs/src/command/environment/open.js +3 -1
  87. package/distTs/src/command/environment/update.js +1 -1
  88. package/distTs/src/command/login.js +29 -17
  89. package/distTs/src/command/logout.js +4 -3
  90. package/distTs/src/command/pipeline/create.js +13 -3
  91. package/distTs/src/command/pipeline/delete.js +9 -6
  92. package/distTs/src/command/pipeline/get.js +4 -3
  93. package/distTs/src/command/pipeline/open.js +2 -1
  94. package/distTs/src/command/pipeline/run/execution.js +3 -3
  95. package/distTs/src/command/pipeline/run/list.js +4 -3
  96. package/distTs/src/command/pipeline/run/open.js +2 -1
  97. package/distTs/src/command/pipeline/update.js +4 -3
  98. package/distTs/src/command/pipeline/yaml.js +4 -3
  99. package/distTs/src/command/project/link.js +74 -36
  100. package/distTs/src/command/project/list.js +1 -0
  101. package/distTs/src/command/project/open.js +3 -1
  102. package/distTs/src/command/register.js +2 -1
  103. package/distTs/src/command/sandbox/app/add.js +1 -0
  104. package/distTs/src/command/sandbox/app/list.js +1 -1
  105. package/distTs/src/command/sandbox/app/logs.js +1 -1
  106. package/distTs/src/command/sandbox/app/remove.js +4 -3
  107. package/distTs/src/command/sandbox/app/start.js +4 -3
  108. package/distTs/src/command/sandbox/app/status.js +3 -2
  109. package/distTs/src/command/sandbox/app/stop.js +4 -3
  110. package/distTs/src/command/sandbox/cp.js +23 -23
  111. package/distTs/src/command/sandbox/create.js +3 -1
  112. package/distTs/src/command/sandbox/destroy.js +6 -4
  113. package/distTs/src/command/sandbox/endpoint/add.js +1 -1
  114. package/distTs/src/command/sandbox/endpoint/delete.js +9 -6
  115. package/distTs/src/command/sandbox/endpoint/get.js +3 -2
  116. package/distTs/src/command/sandbox/endpoint/list.js +1 -1
  117. package/distTs/src/command/sandbox/exec/command.js +1 -0
  118. package/distTs/src/command/sandbox/exec/kill.js +7 -5
  119. package/distTs/src/command/sandbox/exec/list.js +1 -1
  120. package/distTs/src/command/sandbox/exec/logs.js +1 -1
  121. package/distTs/src/command/sandbox/exec/status.js +1 -1
  122. package/distTs/src/command/sandbox/get.js +1 -1
  123. package/distTs/src/command/sandbox/list.js +1 -1
  124. package/distTs/src/command/sandbox/logs.js +1 -1
  125. package/distTs/src/command/sandbox/open.js +3 -1
  126. package/distTs/src/command/sandbox/restart.js +9 -4
  127. package/distTs/src/command/sandbox/snapshot/create.js +1 -1
  128. package/distTs/src/command/sandbox/snapshot/delete.js +8 -5
  129. package/distTs/src/command/sandbox/snapshot/get.js +3 -2
  130. package/distTs/src/command/sandbox/snapshot/list.js +1 -1
  131. package/distTs/src/command/sandbox/snapshot/open.js +4 -2
  132. package/distTs/src/command/sandbox/ssh.js +1 -0
  133. package/distTs/src/command/sandbox/start.js +9 -4
  134. package/distTs/src/command/sandbox/status.js +1 -1
  135. package/distTs/src/command/sandbox/stop.js +9 -4
  136. package/distTs/src/command/sandbox/update.js +12 -6
  137. package/distTs/src/command/sandbox/yaml.js +1 -1
  138. package/distTs/src/command/target/create.js +1 -0
  139. package/distTs/src/command/target/delete.js +6 -3
  140. package/distTs/src/command/target/exec/command.js +1 -1
  141. package/distTs/src/command/target/exec/kill.js +6 -4
  142. package/distTs/src/command/target/exec/list.js +1 -1
  143. package/distTs/src/command/target/exec/logs.js +1 -1
  144. package/distTs/src/command/target/exec/status.js +1 -1
  145. package/distTs/src/command/target/get.js +1 -0
  146. package/distTs/src/command/target/list.js +1 -0
  147. package/distTs/src/command/target/open.js +3 -1
  148. package/distTs/src/command/target/scope.js +4 -4
  149. package/distTs/src/command/target/update.js +1 -0
  150. package/distTs/src/command/tests/capture.js +10 -7
  151. package/distTs/src/command/tests/unit/link.js +10 -4
  152. package/distTs/src/command/tests/visual/link.js +10 -4
  153. package/distTs/src/command/tests/visual/session/close.js +8 -3
  154. package/distTs/src/command/tests/visual/setup.js +6 -3
  155. package/distTs/src/command/tests/visual/upload.js +11 -8
  156. package/distTs/src/command/tunnel/http.js +6 -2
  157. package/distTs/src/command/tunnel/start.js +8 -3
  158. package/distTs/src/command/tunnel/tcp.js +6 -3
  159. package/distTs/src/command/tunnel/tls.js +6 -3
  160. package/distTs/src/command/version.js +24 -2
  161. package/distTs/src/command/whoami.js +1 -1
  162. package/distTs/src/command/workspace/get.js +7 -2
  163. package/distTs/src/command/workspace/list.js +1 -1
  164. package/distTs/src/command/workspace/open.js +4 -2
  165. package/distTs/src/command/workspace/set.js +4 -3
  166. package/distTs/src/command/yaml/actions/info.js +1 -1
  167. package/distTs/src/command/yaml/actions/list.js +1 -1
  168. package/distTs/src/command/yaml/pipeline.js +1 -0
  169. package/distTs/src/command/yaml/validate.js +1 -0
  170. package/distTs/src/discovery.js +169 -50
  171. package/distTs/src/input.js +6 -6
  172. package/distTs/src/output.js +72 -33
  173. package/distTs/src/texts.js +103 -42
  174. package/distTs/src/tunnel/output/noninteractive/tunnelJsonl.js +62 -0
  175. package/distTs/src/utils.js +19 -0
  176. package/distTs/src/visualTest/browser.js +3 -2
  177. package/package.json +1 -1
@@ -6,8 +6,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const utils_1 = require("../../../utils");
7
7
  const texts_1 = require("../../../texts");
8
8
  const output_1 = __importDefault(require("../../../output"));
9
- const commandAgentTargetEnable = (0, utils_1.newCommand)('enable', texts_1.DESC_COMMAND_AGENT_TARGET_ENABLE);
10
- commandAgentTargetEnable.action(async () => {
9
+ const commandAgentTargetEnable = (0, utils_1.newCommand)('enable', texts_1.DESC_COMMAND_AGENT_TARGET_ENABLE, { requiredScopes: [] });
10
+ commandAgentTargetEnable.option('--format <text|json>', texts_1.OPTION_FORMAT);
11
+ commandAgentTargetEnable.action(async (options) => {
11
12
  const ApiAgent = require('../../../tunnel/api/agent').default;
12
13
  if (!commandAgentTargetEnable.agentInstalled) {
13
14
  output_1.default.exitError(texts_1.ERR_AGENT_NOT_INSTALLED);
@@ -18,7 +19,7 @@ commandAgentTargetEnable.action(async () => {
18
19
  try {
19
20
  const api = new ApiAgent(commandAgentTargetEnable.agentPort || 0);
20
21
  await api.enableAgentTarget();
21
- output_1.default.exitSuccess(texts_1.TXT_AGENT_TARGET_ENABLED);
22
+ output_1.default.exitResult(options.format === 'json', { target: true }, texts_1.TXT_AGENT_TARGET_ENABLED);
22
23
  }
23
24
  catch (err) {
24
25
  output_1.default.exitError(err);
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const utils_1 = require("../../../utils");
7
7
  const texts_1 = require("../../../texts");
8
8
  const output_1 = __importDefault(require("../../../output"));
9
- const commandAgentTargetStatus = (0, utils_1.newCommand)('status', texts_1.DESC_COMMAND_AGENT_TARGET_STATUS, { examples: texts_1.EXAMPLE_AGENT_TARGET_STATUS });
9
+ const commandAgentTargetStatus = (0, utils_1.newCommand)('status', texts_1.DESC_COMMAND_AGENT_TARGET_STATUS, { requiredScopes: [], examples: texts_1.EXAMPLE_AGENT_TARGET_STATUS });
10
10
  commandAgentTargetStatus.option('--format <text|json>', texts_1.OPTION_FORMAT);
11
11
  commandAgentTargetStatus.action(async (options) => {
12
12
  const ApiAgent = require('../../../tunnel/api/agent').default;
@@ -6,8 +6,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const utils_1 = require("../../../utils");
7
7
  const texts_1 = require("../../../texts");
8
8
  const output_1 = __importDefault(require("../../../output"));
9
- const commandAgentTunnelDisable = (0, utils_1.newCommand)('disable', texts_1.DESC_COMMAND_AGENT_TUNNELING_DISABLE);
10
- commandAgentTunnelDisable.action(async () => {
9
+ const commandAgentTunnelDisable = (0, utils_1.newCommand)('disable', texts_1.DESC_COMMAND_AGENT_TUNNELING_DISABLE, { requiredScopes: [] });
10
+ commandAgentTunnelDisable.option('--format <text|json>', texts_1.OPTION_FORMAT);
11
+ commandAgentTunnelDisable.action(async (options) => {
11
12
  const ApiAgent = require('../../../tunnel/api/agent').default;
12
13
  if (!commandAgentTunnelDisable.agentInstalled) {
13
14
  output_1.default.exitError(texts_1.ERR_AGENT_NOT_INSTALLED);
@@ -18,7 +19,7 @@ commandAgentTunnelDisable.action(async () => {
18
19
  try {
19
20
  const api = new ApiAgent(commandAgentTunnelDisable.agentPort || 0);
20
21
  await api.disableAgentTunneling();
21
- output_1.default.exitSuccess(texts_1.TXT_AGENT_TUNNELING_DISABLED);
22
+ output_1.default.exitResult(options.format === 'json', { tunneling: false }, texts_1.TXT_AGENT_TUNNELING_DISABLED);
22
23
  }
23
24
  catch (err) {
24
25
  output_1.default.exitError(err);
@@ -6,8 +6,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const utils_1 = require("../../../utils");
7
7
  const texts_1 = require("../../../texts");
8
8
  const output_1 = __importDefault(require("../../../output"));
9
- const commandAgentTunnelEnable = (0, utils_1.newCommand)('enable', texts_1.DESC_COMMAND_AGENT_TUNNELING_ENABLE);
10
- commandAgentTunnelEnable.action(async () => {
9
+ const commandAgentTunnelEnable = (0, utils_1.newCommand)('enable', texts_1.DESC_COMMAND_AGENT_TUNNELING_ENABLE, { requiredScopes: [] });
10
+ commandAgentTunnelEnable.option('--format <text|json>', texts_1.OPTION_FORMAT);
11
+ commandAgentTunnelEnable.action(async (options) => {
11
12
  const ApiAgent = require('../../../tunnel/api/agent').default;
12
13
  if (!commandAgentTunnelEnable.agentInstalled) {
13
14
  output_1.default.exitError(texts_1.ERR_AGENT_NOT_INSTALLED);
@@ -18,7 +19,7 @@ commandAgentTunnelEnable.action(async () => {
18
19
  try {
19
20
  const api = new ApiAgent(commandAgentTunnelEnable.agentPort || 0);
20
21
  await api.enableAgentTunneling();
21
- output_1.default.exitSuccess(texts_1.TXT_AGENT_TUNNELING_ENABLED);
22
+ output_1.default.exitResult(options.format === 'json', { tunneling: true }, texts_1.TXT_AGENT_TUNNELING_ENABLED);
22
23
  }
23
24
  catch (err) {
24
25
  output_1.default.exitError(err);
@@ -5,18 +5,25 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const utils_1 = require("../../../utils");
7
7
  const output_1 = __importDefault(require("../../../output"));
8
+ const cliError_1 = __importDefault(require("../../../cliError"));
8
9
  const texts_1 = require("../../../texts");
9
10
  const tunnel_1 = require("../../../types/tunnel");
10
11
  const commandAgentTunnelHttp = (0, utils_1.getBasicCommandHttp)({
12
+ requiredScopes: [],
11
13
  examples: (0, texts_1.EXAMPLE_TUNNEL_HTTP)(true),
12
14
  });
13
15
  commandAgentTunnelHttp.description(texts_1.DESC_COMMAND_AGENT_TUNNEL_HTTP);
14
16
  commandAgentTunnelHttp.option('-f, --follow', texts_1.OPTION_FOLLOW);
17
+ commandAgentTunnelHttp.option('--format <text|json>', texts_1.OPTION_FORMAT);
15
18
  commandAgentTunnelHttp.argument('[protocol://host:port]', texts_1.OPTION_TARGET);
16
19
  commandAgentTunnelHttp.action(async (target, options) => {
17
20
  const ApiAgent = require('../../../tunnel/api/agent').default;
18
21
  const AgentSocketTunnel = require('../../../agent/socket/tunnel').default;
19
22
  const Cfg = require('../../../tunnel/cfg').default;
23
+ const json = options.format === 'json';
24
+ if (json && options.follow) {
25
+ throw new cliError_1.default('usage_error', texts_1.ERR_FOLLOW_WITH_JSON);
26
+ }
20
27
  if (!commandAgentTunnelHttp.agentInstalled) {
21
28
  output_1.default.exitError(texts_1.ERR_AGENT_NOT_INSTALLED);
22
29
  }
@@ -25,7 +32,8 @@ commandAgentTunnelHttp.action(async (target, options) => {
25
32
  }
26
33
  const prepared = await Cfg.prepareTunnel(tunnel_1.TUNNEL_TYPE.HTTP, target, options, true);
27
34
  try {
28
- await output_1.default.spinner(texts_1.TXT_OPENING_TUNNEL);
35
+ if (!json)
36
+ await output_1.default.spinner(texts_1.TXT_OPENING_TUNNEL);
29
37
  const api = new ApiAgent(commandAgentTunnelHttp.agentPort || 0);
30
38
  const data = await api.addTunnel(prepared);
31
39
  if (options.follow) {
@@ -35,7 +43,7 @@ commandAgentTunnelHttp.action(async (target, options) => {
35
43
  output_1.default.tunnel(tunnel);
36
44
  }
37
45
  else {
38
- output_1.default.exitSuccess((0, texts_1.TXT_TUNNEL_STARTED)(data.type));
46
+ output_1.default.exitResult(json, data, (0, texts_1.TXT_TUNNEL_STARTED)(data.type));
39
47
  }
40
48
  }
41
49
  catch (err) {
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const output_1 = __importDefault(require("../../../output"));
7
7
  const texts_1 = require("../../../texts");
8
8
  const utils_1 = require("../../../utils");
9
- const commandAgentTunnelList = (0, utils_1.newCommand)('list', texts_1.DESC_COMMAND_AGENT_TUNNEL_LIST, { examples: texts_1.EXAMPLE_AGENT_TUNNEL_LIST });
9
+ const commandAgentTunnelList = (0, utils_1.newCommand)('list', texts_1.DESC_COMMAND_AGENT_TUNNEL_LIST, { requiredScopes: [], examples: texts_1.EXAMPLE_AGENT_TUNNEL_LIST });
10
10
  commandAgentTunnelList.alias('ls');
11
11
  commandAgentTunnelList.option('--format <text|json>', texts_1.OPTION_FORMAT);
12
12
  commandAgentTunnelList.action(async (options) => {
@@ -6,9 +6,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const output_1 = __importDefault(require("../../../output"));
7
7
  const texts_1 = require("../../../texts");
8
8
  const utils_1 = require("../../../utils");
9
- const commandAgentTunnelRemove = (0, utils_1.newCommand)('rm', texts_1.DESC_COMMAND_AGENT_TUNNEL_REMOVE, { examples: texts_1.EXAMPLE_AGENT_TUNNEL_REMOVE });
9
+ const commandAgentTunnelRemove = (0, utils_1.newCommand)('rm', texts_1.DESC_COMMAND_AGENT_TUNNEL_REMOVE, { requiredScopes: [], examples: texts_1.EXAMPLE_AGENT_TUNNEL_REMOVE });
10
10
  commandAgentTunnelRemove.argument('<id>', texts_1.OPTION_ID);
11
- commandAgentTunnelRemove.action(async (id) => {
11
+ commandAgentTunnelRemove.option('--format <text|json>', texts_1.OPTION_FORMAT);
12
+ commandAgentTunnelRemove.action(async (id, options) => {
12
13
  const ApiAgent = require('../../../tunnel/api/agent').default;
13
14
  if (!commandAgentTunnelRemove.agentInstalled) {
14
15
  output_1.default.exitError(texts_1.ERR_AGENT_NOT_INSTALLED);
@@ -19,7 +20,7 @@ commandAgentTunnelRemove.action(async (id) => {
19
20
  try {
20
21
  const api = new ApiAgent(commandAgentTunnelRemove.agentPort || 0);
21
22
  await api.stopTunnel(id);
22
- output_1.default.exitSuccess(texts_1.TXT_TUNNEL_STOPPED);
23
+ output_1.default.exitResult(options.format === 'json', { removed: id }, texts_1.TXT_TUNNEL_STOPPED);
23
24
  }
24
25
  catch (err) {
25
26
  output_1.default.exitError(err);
@@ -3,12 +3,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ const cliError_1 = __importDefault(require("../../../cliError"));
6
7
  const output_1 = __importDefault(require("../../../output"));
7
8
  const texts_1 = require("../../../texts");
8
9
  const utils_1 = require("../../../utils");
9
- const commandAgentTunnelStart = (0, utils_1.newCommand)('start', texts_1.DESC_COMMAND_AGENT_TUNNEL_START, { examples: texts_1.EXAMPLE_AGENT_TUNNEL_START });
10
+ const commandAgentTunnelStart = (0, utils_1.newCommand)('start', texts_1.DESC_COMMAND_AGENT_TUNNEL_START, { requiredScopes: [], examples: texts_1.EXAMPLE_AGENT_TUNNEL_START });
10
11
  commandAgentTunnelStart.argument('<name>', texts_1.OPTION_NAME);
11
- commandAgentTunnelStart.action(async (name) => {
12
+ commandAgentTunnelStart.option('--format <text|json>', texts_1.OPTION_FORMAT);
13
+ commandAgentTunnelStart.action(async (name, options) => {
14
+ const json = options.format === 'json';
12
15
  const ApiAgent = require('../../../tunnel/api/agent').default;
13
16
  const Cfg = require('../../../tunnel/cfg').default;
14
17
  if (!commandAgentTunnelStart.agentInstalled) {
@@ -18,14 +21,15 @@ commandAgentTunnelStart.action(async (name) => {
18
21
  output_1.default.exitError(texts_1.ERR_AGENT_NOT_RUNNING);
19
22
  }
20
23
  if (!Cfg.hasTunnel(name)) {
21
- output_1.default.exitError((0, texts_1.ERR_TUNNEL_NOT_FOUND)(name));
24
+ output_1.default.exitError(new cliError_1.default('not_found', (0, texts_1.ERR_TUNNEL_NOT_FOUND)(name), texts_1.HINT_TUNNEL_CONFIG_LIST));
22
25
  }
23
26
  const prepared = Cfg.getTunnel(name);
24
27
  try {
25
- await output_1.default.spinner(texts_1.TXT_OPENING_TUNNEL);
28
+ if (!json)
29
+ await output_1.default.spinner(texts_1.TXT_OPENING_TUNNEL);
26
30
  const api = new ApiAgent(commandAgentTunnelStart.agentPort || 0);
27
31
  const data = await api.addTunnel(prepared);
28
- output_1.default.exitSuccess((0, texts_1.TXT_TUNNEL_STARTED)(data.type));
32
+ output_1.default.exitResult(json, data, (0, texts_1.TXT_TUNNEL_STARTED)(data.type));
29
33
  }
30
34
  catch (err) {
31
35
  output_1.default.exitError(err);
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const texts_1 = require("../../../texts");
7
7
  const output_1 = __importDefault(require("../../../output"));
8
8
  const utils_1 = require("../../../utils");
9
- const commandAgentTunnelStatus = (0, utils_1.newCommand)('status', texts_1.DESC_COMMAND_AGENT_TUNNEL_STATUS, { examples: texts_1.EXAMPLE_AGENT_TUNNEL_STATUS });
9
+ const commandAgentTunnelStatus = (0, utils_1.newCommand)('status', texts_1.DESC_COMMAND_AGENT_TUNNEL_STATUS, { requiredScopes: [], examples: texts_1.EXAMPLE_AGENT_TUNNEL_STATUS });
10
10
  commandAgentTunnelStatus.argument('[id]', texts_1.OPTION_ID);
11
11
  commandAgentTunnelStatus.option('--format <text|json>', texts_1.OPTION_FORMAT);
12
12
  commandAgentTunnelStatus.action(async (id, options) => {
@@ -5,18 +5,25 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const utils_1 = require("../../../utils");
7
7
  const output_1 = __importDefault(require("../../../output"));
8
+ const cliError_1 = __importDefault(require("../../../cliError"));
8
9
  const texts_1 = require("../../../texts");
9
10
  const tunnel_1 = require("../../../types/tunnel");
10
11
  const commandAgentTunnelTcp = (0, utils_1.getBasicCommandTcp)({
12
+ requiredScopes: [],
11
13
  examples: (0, texts_1.EXAMPLE_TUNNEL_TCP)(true),
12
14
  });
13
15
  commandAgentTunnelTcp.description(texts_1.DESC_COMMAND_AGENT_TUNNEL_TCP);
14
16
  commandAgentTunnelTcp.option('-f, --follow', texts_1.OPTION_FOLLOW);
17
+ commandAgentTunnelTcp.option('--format <text|json>', texts_1.OPTION_FORMAT);
15
18
  commandAgentTunnelTcp.argument('[host:port]', texts_1.OPTION_TARGET);
16
19
  commandAgentTunnelTcp.action(async (target, options) => {
17
20
  const ApiAgent = require('../../../tunnel/api/agent').default;
18
21
  const AgentSocketTunnel = require('../../../agent/socket/tunnel').default;
19
22
  const Cfg = require('../../../tunnel/cfg').default;
23
+ const json = options.format === 'json';
24
+ if (json && options.follow) {
25
+ throw new cliError_1.default('usage_error', texts_1.ERR_FOLLOW_WITH_JSON);
26
+ }
20
27
  if (!commandAgentTunnelTcp.agentInstalled) {
21
28
  output_1.default.exitError(texts_1.ERR_AGENT_NOT_INSTALLED);
22
29
  }
@@ -25,7 +32,8 @@ commandAgentTunnelTcp.action(async (target, options) => {
25
32
  }
26
33
  const prepared = await Cfg.prepareTunnel(tunnel_1.TUNNEL_TYPE.TCP, target, options, true);
27
34
  try {
28
- await output_1.default.spinner(texts_1.TXT_OPENING_TUNNEL);
35
+ if (!json)
36
+ await output_1.default.spinner(texts_1.TXT_OPENING_TUNNEL);
29
37
  const api = new ApiAgent(commandAgentTunnelTcp.agentPort || 0);
30
38
  const data = await api.addTunnel(prepared);
31
39
  if (options.follow) {
@@ -35,7 +43,7 @@ commandAgentTunnelTcp.action(async (target, options) => {
35
43
  output_1.default.tunnel(tunnel);
36
44
  }
37
45
  else {
38
- output_1.default.exitSuccess((0, texts_1.TXT_TUNNEL_STARTED)(data.type));
46
+ output_1.default.exitResult(json, data, (0, texts_1.TXT_TUNNEL_STARTED)(data.type));
39
47
  }
40
48
  }
41
49
  catch (err) {
@@ -5,18 +5,25 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const utils_1 = require("../../../utils");
7
7
  const output_1 = __importDefault(require("../../../output"));
8
+ const cliError_1 = __importDefault(require("../../../cliError"));
8
9
  const texts_1 = require("../../../texts");
9
10
  const tunnel_1 = require("../../../types/tunnel");
10
11
  const commandAgentTunnelTls = (0, utils_1.getBasicCommandTls)({
12
+ requiredScopes: [],
11
13
  examples: (0, texts_1.EXAMPLE_TUNNEL_TLS)(true),
12
14
  });
13
15
  commandAgentTunnelTls.description(texts_1.DESC_COMMAND_AGENT_TUNNEL_TLS);
14
16
  commandAgentTunnelTls.option('-f, --follow', texts_1.OPTION_FOLLOW);
17
+ commandAgentTunnelTls.option('--format <text|json>', texts_1.OPTION_FORMAT);
15
18
  commandAgentTunnelTls.argument('[host:port]', texts_1.OPTION_TARGET);
16
19
  commandAgentTunnelTls.action(async (target, options) => {
17
20
  const ApiAgent = require('../../../tunnel/api/agent').default;
18
21
  const AgentSocketTunnel = require('../../../agent/socket/tunnel').default;
19
22
  const Cfg = require('../../../tunnel/cfg').default;
23
+ const json = options.format === 'json';
24
+ if (json && options.follow) {
25
+ throw new cliError_1.default('usage_error', texts_1.ERR_FOLLOW_WITH_JSON);
26
+ }
20
27
  if (!commandAgentTunnelTls.agentInstalled) {
21
28
  output_1.default.exitError(texts_1.ERR_AGENT_NOT_INSTALLED);
22
29
  }
@@ -25,7 +32,8 @@ commandAgentTunnelTls.action(async (target, options) => {
25
32
  }
26
33
  const prepared = await Cfg.prepareTunnel(tunnel_1.TUNNEL_TYPE.TLS, target, options, true);
27
34
  try {
28
- await output_1.default.spinner(texts_1.TXT_OPENING_TUNNEL);
35
+ if (!json)
36
+ await output_1.default.spinner(texts_1.TXT_OPENING_TUNNEL);
29
37
  const api = new ApiAgent(commandAgentTunnelTls.agentPort || 0);
30
38
  const data = await api.addTunnel(prepared);
31
39
  if (options.follow) {
@@ -35,7 +43,7 @@ commandAgentTunnelTls.action(async (target, options) => {
35
43
  output_1.default.tunnel(tunnel);
36
44
  }
37
45
  else {
38
- output_1.default.exitSuccess((0, texts_1.TXT_TUNNEL_STARTED)(data.type));
46
+ output_1.default.exitResult(json, data, (0, texts_1.TXT_TUNNEL_STARTED)(data.type));
39
47
  }
40
48
  }
41
49
  catch (err) {
@@ -6,8 +6,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const output_1 = __importDefault(require("../../output"));
7
7
  const texts_1 = require("../../texts");
8
8
  const utils_1 = require("../../utils");
9
- const commandAgentUninstall = (0, utils_1.newCommand)('uninstall', texts_1.DESC_COMMAND_AGENT_UNINSTALL);
9
+ const commandAgentUninstall = (0, utils_1.newCommand)('uninstall', texts_1.DESC_COMMAND_AGENT_UNINSTALL, { requiredScopes: [] });
10
10
  commandAgentUninstall.option('-f, --force', texts_1.OPTION_CONFIRM_FORCE);
11
+ commandAgentUninstall.option('--format <text|json>', texts_1.OPTION_FORMAT);
11
12
  commandAgentUninstall.action(async (options) => {
12
13
  const AgentManager = require('../../agent/manager').default;
13
14
  const ApiBuddy = require('../../tunnel/api/buddy').default;
@@ -16,9 +17,10 @@ commandAgentUninstall.action(async (options) => {
16
17
  if (!hasRights) {
17
18
  output_1.default.exitError(texts_1.ERR_AGENT_ADMIN_RIGHTS);
18
19
  }
19
- const confirmed = await output_1.default.confirmDestructive(options.force, texts_1.TXY_AGENT_CONFIRM_DELETE);
20
+ const json = options.format === 'json';
21
+ const confirmed = await output_1.default.confirmDestructive(options.force, texts_1.TXY_AGENT_CONFIRM_DELETE, json);
20
22
  if (!confirmed)
21
- output_1.default.exitNormal();
23
+ output_1.default.exitResult(json, { uninstalled: false });
22
24
  try {
23
25
  const api = new ApiAgent(commandAgentUninstall.agentPort || 0);
24
26
  await api.markInactive();
@@ -60,6 +62,6 @@ commandAgentUninstall.action(async (options) => {
60
62
  catch {
61
63
  // do nothing
62
64
  }
63
- output_1.default.exitSuccess(texts_1.TXT_AGENT_DISABLED);
65
+ output_1.default.exitResult(json, { uninstalled: true }, texts_1.TXT_AGENT_DISABLED);
64
66
  });
65
67
  exports.default = commandAgentUninstall;
@@ -6,9 +6,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const texts_1 = require("../../texts");
7
7
  const output_1 = __importDefault(require("../../output"));
8
8
  const utils_1 = require("../../utils");
9
- const commandAgentUpdate = (0, utils_1.newCommand)('update', texts_1.DESC_COMMAND_AGENT_UPDATE);
9
+ const commandAgentUpdate = (0, utils_1.newCommand)('update', texts_1.DESC_COMMAND_AGENT_UPDATE, { requiredScopes: [] });
10
10
  commandAgentUpdate.hideVersionUpdate = true;
11
- commandAgentUpdate.action(async () => {
11
+ commandAgentUpdate.option('--format <text|json>', texts_1.OPTION_FORMAT);
12
+ commandAgentUpdate.action(async (options) => {
13
+ const json = options.format === 'json';
12
14
  const AgentManager = require('../../agent/manager').default;
13
15
  const ApiAgent = require('../../tunnel/api/agent').default;
14
16
  const waitUntilAgentEnabled = require('../../agent/wait').default;
@@ -24,11 +26,17 @@ commandAgentUpdate.action(async () => {
24
26
  if (commandAgentUpdate.agentStatus?.updating) {
25
27
  output_1.default.exitError(texts_1.ERR_AGENT_UPDATE_IN_PROGRESS);
26
28
  }
27
- output_1.default.normal(texts_1.TXT_UPDATING_AGENT);
29
+ if (!json)
30
+ output_1.default.normal(texts_1.TXT_UPDATING_AGENT);
28
31
  if (commandAgentUpdate.agentStandalone) {
29
32
  // app
30
33
  await AgentManager.system.killStandaloneProc();
31
- AgentManager.system.startStandaloneProc();
34
+ // the standalone agent keeps running in this process: the result is
35
+ // printed once it is fetched and started, so a failure is the only output
36
+ AgentManager.system.startStandaloneProc(json, () => {
37
+ if (json)
38
+ output_1.default.json({ updated: true });
39
+ });
32
40
  }
33
41
  else {
34
42
  try {
@@ -37,7 +45,7 @@ commandAgentUpdate.action(async () => {
37
45
  await waitUntilAgentEnabled(api, 15000, () => {
38
46
  output_1.default.exitError(texts_1.ERR_SWW_AGENT_UPDATING);
39
47
  }, () => {
40
- output_1.default.exitSuccess(texts_1.TXT_AGENT_UPDATED);
48
+ output_1.default.exitResult(json, { updated: true }, texts_1.TXT_AGENT_UPDATED);
41
49
  });
42
50
  }
43
51
  catch {
@@ -6,10 +6,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const utils_1 = require("../../utils");
7
7
  const texts_1 = require("../../texts");
8
8
  const output_1 = __importDefault(require("../../output"));
9
- const commandAgentUser = (0, utils_1.newCommand)('user', texts_1.DESC_COMMAND_AGENT_USER);
9
+ const commandAgentUser = (0, utils_1.newCommand)('user', texts_1.DESC_COMMAND_AGENT_USER, { requiredScopes: [] });
10
10
  commandAgentUser.argument('[user]', texts_1.OPTION_USER);
11
11
  commandAgentUser.argument('[password]', texts_1.OPTION_PASS);
12
- commandAgentUser.action(async (user, password) => {
12
+ commandAgentUser.option('--format <text|json>', texts_1.OPTION_FORMAT);
13
+ commandAgentUser.action(async (user, password, options) => {
13
14
  const AgentManager = require('../../agent/manager').default;
14
15
  const hasAdminRights = await AgentManager.system.hasAdminRights();
15
16
  if (!hasAdminRights) {
@@ -29,6 +30,6 @@ commandAgentUser.action(async (user, password) => {
29
30
  else {
30
31
  u = user;
31
32
  }
32
- output_1.default.exitSuccess((0, texts_1.TXT_AGENT_USER_CHANGED)(u));
33
+ output_1.default.exitResult(options.format === 'json', { user: u }, (0, texts_1.TXT_AGENT_USER_CHANGED)(u));
33
34
  });
34
35
  exports.default = commandAgentUser;
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const output_1 = __importDefault(require("../../output"));
7
7
  const texts_1 = require("../../texts");
8
8
  const utils_1 = require("../../utils");
9
- const commandAgentVersion = (0, utils_1.newCommand)('version', texts_1.DESC_COMMAND_AGENT_VERSION, { examples: texts_1.EXAMPLE_AGENT_VERSION });
9
+ const commandAgentVersion = (0, utils_1.newCommand)('version', texts_1.DESC_COMMAND_AGENT_VERSION, { requiredScopes: [], examples: texts_1.EXAMPLE_AGENT_VERSION });
10
10
  commandAgentVersion.option('--format <text|json>', texts_1.OPTION_FORMAT);
11
11
  commandAgentVersion.action(async (options) => {
12
12
  if (!commandAgentVersion.agentInstalled) {
@@ -3,6 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ const cliError_1 = __importDefault(require("../../cliError"));
6
7
  const utils_1 = require("../../utils");
7
8
  const texts_1 = require("../../texts");
8
9
  const input_1 = __importDefault(require("../../input"));
@@ -220,6 +221,7 @@ const chosen = (asked, names) => {
220
221
  return Number.isInteger(position) && position >= 1 ? names[position - 1] : undefined;
221
222
  };
222
223
  const commandApiInfo = (0, utils_1.newCommand)('info', texts_1.DESC_COMMAND_API_INFO, {
224
+ requiredScopes: [],
223
225
  helpText: texts_1.HELP_API_INFO_JSON,
224
226
  examples: texts_1.EXAMPLE_API_INFO,
225
227
  });
@@ -241,12 +243,12 @@ commandApiInfo.action(async (fm, filterUrl, options) => {
241
243
  (operation.path === filterUrl ||
242
244
  (0, utils_1.openApiPrepareUrl)(operation.path, workspace, project) === filterUrl));
243
245
  if (!wanted) {
244
- output_1.default.exitError(texts_1.ERR_API_ENDPOINT_NOT_FOUND);
246
+ output_1.default.exitError(new cliError_1.default('not_found', texts_1.ERR_API_ENDPOINT_NOT_FOUND, texts_1.HINT_API_LIST));
245
247
  return;
246
248
  }
247
249
  const listed = await api.endpoint(wanted.method, wanted.path);
248
250
  if (!listed) {
249
- output_1.default.exitError(texts_1.ERR_API_ENDPOINT_NOT_FOUND);
251
+ output_1.default.exitError(new cliError_1.default('not_found', texts_1.ERR_API_ENDPOINT_NOT_FOUND, texts_1.HINT_API_LIST));
250
252
  return;
251
253
  }
252
254
  const namesOf = (bodies) => bodies.flatMap((body) => [...orderedMembers(body)]);
@@ -299,7 +301,7 @@ commandApiInfo.action(async (fm, filterUrl, options) => {
299
301
  : undefined;
300
302
  const doc = member ? await api.endpoint(wanted.method, wanted.path, member) : listed;
301
303
  if (!doc) {
302
- output_1.default.exitError(texts_1.ERR_API_ENDPOINT_NOT_FOUND);
304
+ output_1.default.exitError(new cliError_1.default('not_found', texts_1.ERR_API_ENDPOINT_NOT_FOUND, texts_1.HINT_API_LIST));
303
305
  return;
304
306
  }
305
307
  const members = await memberMeta(api, doc);
@@ -26,6 +26,7 @@ const outputUrl = (operation, workspace, project) => {
26
26
  output_1.default.gray(operation.summary);
27
27
  };
28
28
  const commandApiList = (0, utils_1.newCommand)('list', texts_1.DESC_COMMAND_API_LIST, {
29
+ requiredScopes: [],
29
30
  examples: texts_1.EXAMPLE_API_LIST,
30
31
  });
31
32
  commandApiList.alias('ls');
@@ -3,6 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ const cliError_1 = __importDefault(require("../../../cliError"));
6
7
  const utils_1 = require("../../../utils");
7
8
  const texts_1 = require("../../../texts");
8
9
  const input_1 = __importDefault(require("../../../input"));
@@ -24,9 +25,12 @@ commandArtifactComposerPublish.option('-c, --create', texts_1.OPTION_ARTIFACT_PU
24
25
  commandArtifactComposerPublish.option('--note <note>', texts_1.OPTION_ARTIFACT_VERSION_NOTE);
25
26
  commandArtifactComposerPublish.option('--agent-note <note>', texts_1.OPTION_ARTIFACT_VERSION_AGENT_NOTE);
26
27
  commandArtifactComposerPublish.option('--ignore <patterns>', texts_1.OPTION_ARTIFACT_IGNORE);
28
+ commandArtifactComposerPublish.option('--format <text|json>', texts_1.OPTION_FORMAT);
27
29
  commandArtifactComposerPublish.argument('<identifier>', texts_1.OPTION_ARTIFACT_ID);
28
30
  commandArtifactComposerPublish.argument('<directory>', texts_1.OPTION_ARTIFACT_COMPOSE_PUBLISH_PATH);
29
31
  commandArtifactComposerPublish.action(async (id, path, options) => {
32
+ const json = options.format === 'json';
33
+ const say = output_1.default.progress(json);
30
34
  const dirPath = input_1.default.resolvePath(path);
31
35
  if (!fs_1.default.statSync(dirPath).isDirectory()) {
32
36
  output_1.default.exitError((0, texts_1.ERR_PATH_IS_NOT_DIRECTORY)(dirPath));
@@ -69,10 +73,10 @@ commandArtifactComposerPublish.action(async (id, path, options) => {
69
73
  const client = input_1.default.restApiTokenClient();
70
74
  const data = await client.getArtifactVersionByIdentifier(workspace, scope === distro_1.SCOPE.PROJECT ? project : null, identifier, publishVersion);
71
75
  if (!data || !data.domain) {
72
- output_1.default.exitError(texts_1.ERR_WORKSPACE_NOT_FOUND);
76
+ output_1.default.exitError(new cliError_1.default('not_found', texts_1.ERR_WORKSPACE_NOT_FOUND, texts_1.HINT_WORKSPACE_LIST));
73
77
  }
74
78
  if (scope === distro_1.SCOPE.PROJECT && !data.project_identifier) {
75
- output_1.default.exitError(texts_1.ERR_PROJECT_NOT_FOUND);
79
+ output_1.default.exitError(new cliError_1.default('not_found', texts_1.ERR_PROJECT_NOT_FOUND, texts_1.HINT_PROJECT_LIST));
76
80
  }
77
81
  let artifactId = data.artifact_id;
78
82
  if (!artifactId && !options.create) {
@@ -108,7 +112,7 @@ commandArtifactComposerPublish.action(async (id, path, options) => {
108
112
  // No --force here: a published composer version is not replaced, only a new one is added
109
113
  output_1.default.exitError(texts_1.ERR_ARTIFACT_VERSION_EXISTS_NO_FORCE);
110
114
  }
111
- output_1.default.normal(texts_1.TXT_ARTIFACT_SCANNING_DIR, false);
115
+ say(texts_1.TXT_ARTIFACT_SCANNING_DIR, false);
112
116
  // At least composer.json is in there, so an empty listing is not a case to handle
113
117
  const scanned = fs_1.default.readdirSync(dirPath, {
114
118
  withFileTypes: true,
@@ -116,9 +120,9 @@ commandArtifactComposerPublish.action(async (id, path, options) => {
116
120
  });
117
121
  // composer.json is kept whatever --ignore says - the package is not publishable without it
118
122
  const entries = (0, utils_1.filterIgnoredEntries)(dirPath, scanned, [...utils_1.ARTIFACT_IGNORE_DEFAULT, ...(0, utils_1.parseIgnorePatterns)(options.ignore)], ['composer.json']);
119
- output_1.default.normal((0, texts_1.TXT_ARTIFACT_ENTRIES_FOUND)(entries.length));
123
+ say((0, texts_1.TXT_ARTIFACT_ENTRIES_FOUND)(entries.length));
120
124
  if (scanned.length !== entries.length) {
121
- output_1.default.normal((0, texts_1.TXT_ARTIFACT_IGNORED_ENTRIES)(scanned.length - entries.length));
125
+ say((0, texts_1.TXT_ARTIFACT_IGNORED_ENTRIES)(scanned.length - entries.length));
122
126
  }
123
127
  // The path declared in composer.json wins, otherwise the readme lying next to it
124
128
  const declaredReadme = (0, utils_1.getComposerReadmePath)(composerJson);
@@ -128,16 +132,16 @@ commandArtifactComposerPublish.action(async (id, path, options) => {
128
132
  const readmeFile = (0, utils_1.findArtifactReadme)(dirPath, declaredReadme);
129
133
  let readme;
130
134
  if (!readmeFile) {
131
- output_1.default.normal(texts_1.TXT_ARTIFACT_README_NOT_FOUND);
135
+ say(texts_1.TXT_ARTIFACT_README_NOT_FOUND);
132
136
  }
133
137
  else if (readmeFile.content === undefined) {
134
- output_1.default.normal((0, texts_1.TXT_ARTIFACT_README_TOO_LARGE)((0, path_1.relative)(dirPath, readmeFile.path), utils_1.ARTIFACT_README_SIZE_LIMIT));
138
+ say((0, texts_1.TXT_ARTIFACT_README_TOO_LARGE)((0, path_1.relative)(dirPath, readmeFile.path), utils_1.ARTIFACT_README_SIZE_LIMIT));
135
139
  }
136
140
  else {
137
141
  readme = readmeFile.content;
138
- output_1.default.normal((0, texts_1.TXT_ARTIFACT_README_FOUND)((0, path_1.relative)(dirPath, readmeFile.path)));
142
+ say((0, texts_1.TXT_ARTIFACT_README_FOUND)((0, path_1.relative)(dirPath, readmeFile.path)));
139
143
  }
140
- output_1.default.normal((0, texts_1.TXT_ARTIFACT_ZIP_ENTRIES)(0));
144
+ say((0, texts_1.TXT_ARTIFACT_ZIP_ENTRIES)(0));
141
145
  let root;
142
146
  const zipPath = (0, path_1.join)((0, utils_1.getHomeDirectory)(), `${(0, uuid_1.v4)()}.zip`);
143
147
  const clearZip = () => {
@@ -152,11 +156,9 @@ commandArtifactComposerPublish.action(async (id, path, options) => {
152
156
  let proc = 0;
153
157
  await (0, utils_1.createZip)(dirPath, zipPath, entries, () => {
154
158
  proc += 1;
155
- output_1.default.clearPreviousLine();
156
- output_1.default.normal((0, texts_1.TXT_ARTIFACT_ZIP_ENTRIES)(proc));
159
+ say((0, texts_1.TXT_ARTIFACT_ZIP_ENTRIES)(proc), true, true);
157
160
  });
158
- output_1.default.clearPreviousLine();
159
- output_1.default.normal(texts_1.TXT_ARTIFACT_ZIPPED);
161
+ say(texts_1.TXT_ARTIFACT_ZIPPED, true, true);
160
162
  root = await fs_1.default.openAsBlob(zipPath);
161
163
  }
162
164
  catch (err) {
@@ -165,11 +167,14 @@ commandArtifactComposerPublish.action(async (id, path, options) => {
165
167
  output_1.default.exitError(texts_1.ERR_SWW);
166
168
  }
167
169
  try {
168
- output_1.default.normal(texts_1.TXT_ARTIFACT_UPLOADING);
170
+ say(texts_1.TXT_ARTIFACT_UPLOADING);
169
171
  const d = await client.createArtifactComposerVersion(workspace, artifactId, root, composer, readme, options.note, options.agentNote);
170
172
  clearZip();
171
- output_1.default.clearPreviousLine();
172
- output_1.default.normal(texts_1.TXT_ARTIFACT_UPLOADED);
173
+ if (json) {
174
+ output_1.default.json(d);
175
+ output_1.default.exitNormal();
176
+ }
177
+ say(texts_1.TXT_ARTIFACT_UPLOADED, true, true);
173
178
  output_1.default.object({
174
179
  Version: `${identifier}:${d?.version || publishVersion}`,
175
180
  // A composer version has no public preview endpoint the way a bucket artifact does, so the
@@ -3,6 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ const cliError_1 = __importDefault(require("../../cliError"));
6
7
  const utils_1 = require("../../utils");
7
8
  const texts_1 = require("../../texts");
8
9
  const input_1 = __importDefault(require("../../input"));
@@ -17,6 +18,7 @@ commandArtifactDelete.option('-w, --workspace <domain>', texts_1.OPTION_REST_API
17
18
  commandArtifactDelete.option('--scope <scope>', texts_1.OPT_COMMAND_SCOPE);
18
19
  commandArtifactDelete.option('-p, --project <name>', texts_1.OPTION_REST_API_PROJECT);
19
20
  commandArtifactDelete.option('-f, --force', texts_1.OPTION_CONFIRM_FORCE);
21
+ commandArtifactDelete.option('--format <text|json>', texts_1.OPTION_FORMAT);
20
22
  commandArtifactDelete.argument('<identifier>', texts_1.OPT_COMMAND_ARTIFACT_IDENTIFIER);
21
23
  commandArtifactDelete.action(async (identifier, options) => {
22
24
  const workspace = input_1.default.restApiWorkspace(options.workspace);
@@ -25,18 +27,19 @@ commandArtifactDelete.action(async (identifier, options) => {
25
27
  const client = input_1.default.restApiTokenClient();
26
28
  const data = await client.getArtifactVersionByIdentifier(workspace, scope === distro_1.SCOPE.PROJECT ? project : null, identifier);
27
29
  if (!data || !data.domain) {
28
- output_1.default.exitError(texts_1.ERR_WORKSPACE_NOT_FOUND);
30
+ output_1.default.exitError(new cliError_1.default('not_found', texts_1.ERR_WORKSPACE_NOT_FOUND, texts_1.HINT_WORKSPACE_LIST));
29
31
  }
30
32
  if (!data.artifact_id) {
31
- output_1.default.exitError(texts_1.ERR_ARTIFACT_NOT_FOUND);
33
+ output_1.default.exitError(new cliError_1.default('not_found', texts_1.ERR_ARTIFACT_NOT_FOUND, texts_1.HINT_ARTIFACT_LIST));
32
34
  }
33
- const confirmed = await output_1.default.confirmDestructive(options.force, (0, texts_1.TXT_ARTIFACT_DELETE_CONFIRM)(identifier));
35
+ const json = options.format === 'json';
36
+ const confirmed = await output_1.default.confirmDestructive(options.force, (0, texts_1.TXT_ARTIFACT_DELETE_CONFIRM)(identifier), json);
34
37
  if (confirmed) {
35
38
  await client.deleteArtifact(workspace, data.artifact_id);
36
- output_1.default.exitSuccess(texts_1.TXT_ARTIFACT_DELETED);
39
+ output_1.default.exitResult(json, { deleted: identifier }, texts_1.TXT_ARTIFACT_DELETED);
37
40
  }
38
41
  else {
39
- output_1.default.exitNormal();
42
+ output_1.default.exitResult(json, { deleted: null });
40
43
  }
41
44
  });
42
45
  exports.default = commandArtifactDelete;