bdy 1.16.26-dev → 1.16.28-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 (50) hide show
  1. package/distTs/package.json +1 -1
  2. package/distTs/src/agent/system.js +3 -1
  3. package/distTs/src/api/client.js +46 -22
  4. package/distTs/src/command/agent/install.js +1 -1
  5. package/distTs/src/command/agent/uninstall.js +5 -1
  6. package/distTs/src/command/package/create.js +59 -0
  7. package/distTs/src/command/package/delete.js +37 -0
  8. package/distTs/src/command/package/docker/login.js +26 -0
  9. package/distTs/src/command/package/docker.js +11 -0
  10. package/distTs/src/command/package/download.js +1 -2
  11. package/distTs/src/command/package/get.js +39 -0
  12. package/distTs/src/command/package/list.js +4 -3
  13. package/distTs/src/command/package/publish.js +17 -3
  14. package/distTs/src/command/package/version/delete.js +41 -0
  15. package/distTs/src/command/package/version/get.js +47 -0
  16. package/distTs/src/command/package/version/list.js +49 -0
  17. package/distTs/src/command/package/version.js +16 -0
  18. package/distTs/src/command/package.js +10 -0
  19. package/distTs/src/command/pipeline/run.js +1 -2
  20. package/distTs/src/command/project/list.js +2 -8
  21. package/distTs/src/command/project/set.js +1 -2
  22. package/distTs/src/command/sandbox/cp.js +1 -2
  23. package/distTs/src/command/sandbox/create.js +2 -2
  24. package/distTs/src/command/sandbox/destroy.js +7 -3
  25. package/distTs/src/command/sandbox/endpoint/add.js +2 -2
  26. package/distTs/src/command/sandbox/endpoint/delete.js +7 -2
  27. package/distTs/src/command/sandbox/endpoint/get.js +2 -3
  28. package/distTs/src/command/sandbox/endpoint/list.js +2 -2
  29. package/distTs/src/command/sandbox/exec/command.js +1 -2
  30. package/distTs/src/command/sandbox/exec/kill.js +6 -2
  31. package/distTs/src/command/sandbox/exec/list.js +1 -2
  32. package/distTs/src/command/sandbox/exec/logs.js +1 -2
  33. package/distTs/src/command/sandbox/exec/status.js +1 -2
  34. package/distTs/src/command/sandbox/get.js +2 -3
  35. package/distTs/src/command/sandbox/list.js +2 -3
  36. package/distTs/src/command/sandbox/restart.js +1 -2
  37. package/distTs/src/command/sandbox/snapshot/create.js +2 -2
  38. package/distTs/src/command/sandbox/snapshot/delete.js +7 -2
  39. package/distTs/src/command/sandbox/snapshot/get.js +2 -3
  40. package/distTs/src/command/sandbox/snapshot/list.js +1 -2
  41. package/distTs/src/command/sandbox/start.js +1 -2
  42. package/distTs/src/command/sandbox/status.js +1 -2
  43. package/distTs/src/command/sandbox/stop.js +1 -2
  44. package/distTs/src/command/workspace/list.js +2 -3
  45. package/distTs/src/command/workspace/set.js +1 -2
  46. package/distTs/src/input.js +27 -2
  47. package/distTs/src/output.js +13 -4
  48. package/distTs/src/texts.js +150 -90
  49. package/distTs/src/utils.js +95 -16
  50. package/package.json +1 -1
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "bdy",
3
3
  "preferGlobal": false,
4
- "version": "1.16.26-dev",
4
+ "version": "1.16.28-dev",
5
5
  "type": "commonjs",
6
6
  "license": "MIT",
7
7
  "scripts": {
@@ -183,7 +183,9 @@ class AgentSystem {
183
183
  const env = (0, utils_1.getVersionEnv)();
184
184
  const version = (0, utils_1.getCurrentVersionWithoutEnv)();
185
185
  const archive = this.getBinaryArchive();
186
- return this.downloadFile(`https://es.buddy.works/bdy/${env}/${version}/${archive}`, archivePath);
186
+ const url = `https://es.buddy.works/bdy/${env}/${version}/${archive}`;
187
+ logger_1.default.info(url);
188
+ return this.downloadFile(url, archivePath);
187
189
  }
188
190
  killStandaloneProc() {
189
191
  return new Promise((resolve) => {
@@ -72,7 +72,8 @@ class ApiClient {
72
72
  else {
73
73
  if (httpUrlEncoded) {
74
74
  if (!headers['content-type']) {
75
- headers['content-type'] = 'application/x-www-form-urlencoded; charset=utf-8';
75
+ headers['content-type'] =
76
+ 'application/x-www-form-urlencoded; charset=utf-8';
76
77
  }
77
78
  bodyParsed = new URLSearchParams(body).toString();
78
79
  }
@@ -94,7 +95,11 @@ class ApiClient {
94
95
  let status;
95
96
  let responseBody;
96
97
  logger_1.default.debug(`API CLIENT: ${method} ${this.baseUrl.protocol}//${this.baseUrl.host}${path}`);
98
+ logger_1.default.debug('QUERY');
99
+ logger_1.default.debug(query);
100
+ logger_1.default.debug('HEADERS');
97
101
  logger_1.default.debug(headers);
102
+ logger_1.default.debug('BODY');
98
103
  logger_1.default.debug(bodyParsed);
99
104
  try {
100
105
  const r = await this.client.request(opts);
@@ -118,6 +123,7 @@ class ApiClient {
118
123
  tryRefreshingToken) {
119
124
  const success = await this.tryRefreshToken();
120
125
  if (success) {
126
+ delete headers.authorization;
121
127
  return await this.request({
122
128
  method,
123
129
  path,
@@ -225,7 +231,7 @@ class ApiClient {
225
231
  method: 'GET',
226
232
  path: `/workspaces/${encodeURIComponent(workspace)}/tunnels/token`,
227
233
  query,
228
- parseResponseBody: true
234
+ parseResponseBody: true,
229
235
  });
230
236
  }
231
237
  async getInvokerEmails() {
@@ -422,7 +428,7 @@ class ApiClient {
422
428
  method: 'GET',
423
429
  path: `/workspaces/${encodeURIComponent(workspace)}/sandboxes/snapshots`,
424
430
  query,
425
- parseResponseBody: true
431
+ parseResponseBody: true,
426
432
  });
427
433
  }
428
434
  async createSandboxSnapshot(workspace, sandboxId, body) {
@@ -540,12 +546,14 @@ class ApiClient {
540
546
  }
541
547
  async getResourceByIdentifier(workspace, params) {
542
548
  let query = '';
543
- Object.keys(params).forEach((key) => {
549
+ Object.entries(params).forEach(([key, value]) => {
550
+ if (value === undefined)
551
+ return;
544
552
  if (!query)
545
553
  query += '?';
546
554
  else
547
555
  query += '&';
548
- query += encodeURIComponent(key) + '=' + encodeURIComponent(params[key]);
556
+ query += encodeURIComponent(key) + '=' + encodeURIComponent(value);
549
557
  });
550
558
  return await this.request({
551
559
  method: 'GET',
@@ -559,6 +567,12 @@ class ApiClient {
559
567
  pipeline: identifier,
560
568
  });
561
569
  }
570
+ async deletePackageVersion(workspace, packageId, versionId) {
571
+ return await this.request({
572
+ method: 'DELETE',
573
+ path: `/workspaces/${encodeURIComponent(workspace)}/packages/${encodeURIComponent(packageId)}/versions/${encodeURIComponent(versionId)}`
574
+ });
575
+ }
562
576
  async getPackageVersionByIdentifier(workspace, project, pkg, version) {
563
577
  const opts = {
564
578
  package: pkg,
@@ -569,6 +583,17 @@ class ApiClient {
569
583
  opts.package_version = version;
570
584
  return await this.getResourceByIdentifier(workspace, opts);
571
585
  }
586
+ async getPackageVersions(workspace, pkgId, page = 1, perPage = 10) {
587
+ return await this.request({
588
+ method: 'GET',
589
+ path: `/workspaces/${encodeURIComponent(workspace)}/packages/${pkgId}/versions`,
590
+ query: {
591
+ page: page.toString(),
592
+ per_page: perPage.toString()
593
+ },
594
+ parseResponseBody: true
595
+ });
596
+ }
572
597
  async getPackageVersion(workspace, pkgId, versionId) {
573
598
  return await this.request({
574
599
  method: 'GET',
@@ -576,6 +601,13 @@ class ApiClient {
576
601
  parseResponseBody: true,
577
602
  });
578
603
  }
604
+ async getPackage(workspace, pkgId) {
605
+ return await this.request({
606
+ method: 'GET',
607
+ path: `/workspaces/${encodeURIComponent(workspace)}/packages/${pkgId}`,
608
+ parseResponseBody: true,
609
+ });
610
+ }
579
611
  async getPackageLatest(workspace, pkgId) {
580
612
  const res = await this.request({
581
613
  method: 'GET',
@@ -614,28 +646,20 @@ class ApiClient {
614
646
  parseResponseBody: true,
615
647
  });
616
648
  }
617
- async postPackage(workspace, project, identifier) {
618
- const body = {
619
- name: identifier,
620
- identifier,
621
- type: 'FILE',
622
- scope: 'WORKSPACE',
623
- authorization: {
624
- type: 'BUDDY',
625
- },
626
- };
627
- if (project) {
628
- body.project = {
629
- name: project,
630
- };
631
- body.scope = 'PROJECT';
632
- }
649
+ async postPackage(workspace, data) {
633
650
  return await this.request({
634
651
  method: 'POST',
635
652
  path: `/workspaces/${encodeURIComponent(workspace)}/packages`,
636
- body,
653
+ body: data,
637
654
  parseResponseBody: true,
638
655
  });
639
656
  }
657
+ ;
658
+ async deletePackage(workspace, packageId) {
659
+ return await this.request({
660
+ method: 'DELETE',
661
+ path: `/workspaces/${encodeURIComponent(workspace)}/packages/${encodeURIComponent(packageId)}`
662
+ });
663
+ }
640
664
  }
641
665
  exports.default = ApiClient;
@@ -67,7 +67,7 @@ const installService = async (options) => {
67
67
  output_1.default.exitError(texts_1.ERR_AGENT_NOT_FOUND);
68
68
  }
69
69
  }
70
- else if (options.token) {
70
+ else {
71
71
  // set global token if passed
72
72
  await input_1.default.tunnelToken(options.token);
73
73
  }
@@ -10,11 +10,15 @@ const buddy_1 = __importDefault(require("../../tunnel/api/buddy"));
10
10
  const utils_1 = require("../../utils");
11
11
  const agent_1 = __importDefault(require("../../tunnel/api/agent"));
12
12
  const commandAgentUninstall = (0, utils_1.newCommand)('uninstall', texts_1.DESC_COMMAND_AGENT_UNINSTALL);
13
- commandAgentUninstall.action(async () => {
13
+ commandAgentUninstall.option('-f, --force', texts_1.OPTION_CONFIRM_FORCE);
14
+ commandAgentUninstall.action(async (options) => {
14
15
  const hasAdminRights = await manager_1.default.system.hasAdminRights();
15
16
  if (!hasAdminRights) {
16
17
  output_1.default.exitError(texts_1.ERR_AGENT_ADMIN_RIGHTS);
17
18
  }
19
+ const confirmed = options.force || (await output_1.default.confirm(texts_1.TXY_AGENT_CONFIRM_DELETE));
20
+ if (!confirmed)
21
+ output_1.default.exitNormal();
18
22
  try {
19
23
  const api = new agent_1.default(commandAgentUninstall.agentPort || 0);
20
24
  await api.markInactive();
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const utils_1 = require("../../utils");
7
+ const texts_1 = require("../../texts");
8
+ const input_1 = __importDefault(require("../../input"));
9
+ const output_1 = __importDefault(require("../../output"));
10
+ const commandPackageCreate = (0, utils_1.newCommand)('create', texts_1.DESC_COMMAND_PACKAGE_CREATE);
11
+ commandPackageCreate.alias('add');
12
+ commandPackageCreate.option('--token <token>', texts_1.OPTION_REST_API_TOKEN);
13
+ commandPackageCreate.option('--api <url>', texts_1.OPTION_REST_API_ENDPOINT);
14
+ commandPackageCreate.option('--region <region>', texts_1.OPTION_REST_API_REGION);
15
+ commandPackageCreate.option('-i, --identifier <identifier>', texts_1.OPT_COMMAND_PACKAGE_CREATE_IDENTIFIER);
16
+ commandPackageCreate.option('-w, --workspace <domain>', texts_1.OPTION_REST_API_WORKSPACE);
17
+ commandPackageCreate.option('-p, --project <name>', texts_1.OPTION_REST_API_PROJECT);
18
+ commandPackageCreate.option('-t, --type <type>', texts_1.OPT_COMMAND_PACKAGE_TYPE, utils_1.PACKAGE_TYPE.FILE);
19
+ commandPackageCreate.option('-b, --buddy', texts_1.OPTION_HTTP_AUTH_BUDDY);
20
+ commandPackageCreate.option('-a, --auth <user:pass>', texts_1.OPTION_HTTP_AUTH);
21
+ commandPackageCreate.argument('<name>', texts_1.OPT_COMMAND_PACKAGE_NAME);
22
+ commandPackageCreate.action(async (name, options) => {
23
+ const workspace = input_1.default.restApiWorkspace(options.workspace);
24
+ const project = input_1.default.restApiProject(options.project, true);
25
+ const client = input_1.default.restApiTokenClient(options.api, options.region, options.token);
26
+ const type = input_1.default.packageType(options.type);
27
+ const scope = input_1.default.packageScope(project);
28
+ const data = {
29
+ name,
30
+ type,
31
+ scope,
32
+ authorization: {
33
+ type: utils_1.PACKAGE_AUTH_TYPE.NONE,
34
+ },
35
+ };
36
+ if (project) {
37
+ data.project = {
38
+ name: project,
39
+ };
40
+ }
41
+ if (options.identifier)
42
+ data.identifier = options.identifier;
43
+ if (options.auth) {
44
+ const { password, login } = input_1.default.auth(options.auth);
45
+ data.authorization = {
46
+ type: utils_1.PACKAGE_AUTH_TYPE.BASIC,
47
+ user: login,
48
+ password,
49
+ };
50
+ }
51
+ else if (options.buddy) {
52
+ data.authorization = {
53
+ type: utils_1.PACKAGE_AUTH_TYPE.BUDDY,
54
+ };
55
+ }
56
+ const result = await client.postPackage(workspace, data);
57
+ output_1.default.exitSuccess((0, texts_1.TXT_PACKAGE_CREATED)(workspace, result));
58
+ });
59
+ exports.default = commandPackageCreate;
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const utils_1 = require("../../utils");
7
+ const texts_1 = require("../../texts");
8
+ const input_1 = __importDefault(require("../../input"));
9
+ const output_1 = __importDefault(require("../../output"));
10
+ const commandPackageDelete = (0, utils_1.newCommand)('delete', texts_1.DESC_COMMAND_PACKAGE_DELETE);
11
+ commandPackageDelete.alias('rm');
12
+ commandPackageDelete.option('--token <token>', texts_1.OPTION_REST_API_TOKEN);
13
+ commandPackageDelete.option('--api <url>', texts_1.OPTION_REST_API_ENDPOINT);
14
+ commandPackageDelete.option('--region <region>', texts_1.OPTION_REST_API_REGION);
15
+ commandPackageDelete.option('-w, --workspace <domain>', texts_1.OPTION_REST_API_WORKSPACE);
16
+ commandPackageDelete.option('-f, --force', texts_1.OPTION_CONFIRM_FORCE);
17
+ commandPackageDelete.argument('<identifier>', texts_1.OPT_COMMAND_PACKAGE_IDENTIFIER);
18
+ commandPackageDelete.action(async (identifier, options) => {
19
+ const workspace = input_1.default.restApiWorkspace(options.workspace);
20
+ const client = input_1.default.restApiTokenClient(options.api, options.region, options.token);
21
+ const data = await client.getPackageVersionByIdentifier(workspace, null, identifier);
22
+ if (!data || !data.domain) {
23
+ output_1.default.exitError(texts_1.ERR_WORKSPACE_NOT_FOUND);
24
+ }
25
+ if (!data.pkg_id) {
26
+ output_1.default.exitError(texts_1.ERR_PACKAGE_NOT_FOUND);
27
+ }
28
+ const confirmed = options.force || await output_1.default.confirm((0, texts_1.TXT_PACKAGE_DELETE_CONFIRM)(identifier));
29
+ if (confirmed) {
30
+ await client.deletePackage(workspace, data.pkg_id);
31
+ output_1.default.exitSuccess(texts_1.TXT_PACKAGE_DELETED);
32
+ }
33
+ else {
34
+ output_1.default.exitNormal();
35
+ }
36
+ });
37
+ exports.default = commandPackageDelete;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const utils_1 = require("../../../utils");
7
+ const texts_1 = require("../../../texts");
8
+ const output_1 = __importDefault(require("../../../output"));
9
+ const input_1 = __importDefault(require("../../../input"));
10
+ const commandPackageDockerLogin = (0, utils_1.newCommand)('login', texts_1.DESC_COMMAND_PACKAGE_DOCKER_LOGIN);
11
+ commandPackageDockerLogin.option('--token <token>', texts_1.OPTION_REST_API_TOKEN);
12
+ commandPackageDockerLogin.option('--api <url>', texts_1.OPTION_REST_API_ENDPOINT);
13
+ commandPackageDockerLogin.option('--region <region>', texts_1.OPTION_REST_API_REGION);
14
+ commandPackageDockerLogin.action(async (options) => {
15
+ const client = input_1.default.restApiTokenClient(options.api, options.region, options.token);
16
+ await client.getInvoker();
17
+ const host = (0, utils_1.getDockerRegistryHostByApiBaseUrl)(client.baseUrl);
18
+ const output = await (0, utils_1.execLocally)(`docker login ${host} -u buddy -p "${client.token}"`);
19
+ if (/Login\sSucceeded/ig.test(output)) {
20
+ output_1.default.exitSuccess(texts_1.TXT_PACKAGE_DOCKER_LOGIN_SUCCESS);
21
+ }
22
+ else {
23
+ output_1.default.exitError(texts_1.TXT_PACKAGE_DOCKER_LOGIN_FAILED);
24
+ }
25
+ });
26
+ exports.default = commandPackageDockerLogin;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const utils_1 = require("../../utils");
7
+ const texts_1 = require("../../texts");
8
+ const login_1 = __importDefault(require("./docker/login"));
9
+ const commandPackageDocker = (0, utils_1.newCommand)('docker', texts_1.DESC_COMMAND_PACKAGE_DOCKER_LOGIN);
10
+ commandPackageDocker.addCommand(login_1.default);
11
+ exports.default = commandPackageDocker;
@@ -25,8 +25,7 @@ commandPackageDownload.option('-r, --replace', texts_1.OPTION_PACKAGE_DOWNLOAD_R
25
25
  commandPackageDownload.argument('<identifier>', texts_1.OPTION_PACKAGE_ID);
26
26
  commandPackageDownload.argument('<directory>', texts_1.OPTION_PACKAGE_DOWNLOAD_PATH);
27
27
  commandPackageDownload.action(async (id, path, options) => {
28
- const baseUrl = input_1.default.restApiBaseUrl(options.api, options.region);
29
- const client = input_1.default.restApiTokenClient(baseUrl, options.token);
28
+ const client = input_1.default.restApiTokenClient(options.api, options.region, options.token);
30
29
  const workspace = input_1.default.restApiWorkspace(options.workspace);
31
30
  const project = input_1.default.restApiProject(options.project, true);
32
31
  // eslint-disable-next-line prefer-const
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const utils_1 = require("../../utils");
7
+ const texts_1 = require("../../texts");
8
+ const input_1 = __importDefault(require("../../input"));
9
+ const output_1 = __importDefault(require("../../output"));
10
+ const commandSandboxGet = (0, utils_1.newCommand)('get', texts_1.DESC_COMMAND_PACKAGE_GET);
11
+ commandSandboxGet.option('--token <token>', texts_1.OPTION_REST_API_TOKEN);
12
+ commandSandboxGet.option('--api <url>', texts_1.OPTION_REST_API_ENDPOINT);
13
+ commandSandboxGet.option('--region <region>', texts_1.OPTION_REST_API_REGION);
14
+ commandSandboxGet.option('-w, --workspace <domain>', texts_1.OPTION_REST_API_WORKSPACE);
15
+ commandSandboxGet.option('-p, --project <name>', texts_1.OPTION_REST_API_PROJECT);
16
+ commandSandboxGet.argument('<identifier>', texts_1.OPTION_SANDBOX_IDENTIFIER);
17
+ commandSandboxGet.action(async (identifier, options) => {
18
+ const workspace = input_1.default.restApiWorkspace(options.workspace);
19
+ const project = input_1.default.restApiProject(options.project, true);
20
+ const client = input_1.default.restApiTokenClient(options.api, options.region, options.token);
21
+ const data = await client.getPackageVersionByIdentifier(workspace, project, identifier);
22
+ if (!data || !data.domain) {
23
+ output_1.default.exitError(texts_1.ERR_WORKSPACE_NOT_FOUND);
24
+ }
25
+ if (!data || !data.pkg_id) {
26
+ output_1.default.exitError(texts_1.ERR_PACKAGE_NOT_FOUND);
27
+ }
28
+ const pkg = await client.getPackage(workspace, data.pkg_id);
29
+ output_1.default.object({
30
+ 'Name': pkg.name,
31
+ 'Identifier': pkg.identifier,
32
+ 'Type': pkg.type,
33
+ 'Scope': pkg.scope,
34
+ 'Size': (0, utils_1.formatBytes)(pkg.size || 0),
35
+ 'Created': pkg.created_date,
36
+ });
37
+ output_1.default.exitNormal();
38
+ });
39
+ exports.default = commandSandboxGet;
@@ -15,16 +15,17 @@ commandPackageList.option('-w, --workspace <domain>', texts_1.OPTION_REST_API_WO
15
15
  commandPackageList.option('-p, --project <name>', texts_1.OPTION_REST_API_PROJECT);
16
16
  commandPackageList.alias('ls');
17
17
  commandPackageList.action(async (options) => {
18
- const baseUrl = input_1.default.restApiBaseUrl(options.api, options.region);
19
18
  const workspace = input_1.default.restApiWorkspace(options.workspace);
20
19
  const project = input_1.default.restApiProject(options.project, true);
21
- const client = input_1.default.restApiTokenClient(baseUrl, options.token);
20
+ const client = input_1.default.restApiTokenClient(options.api, options.region, options.token);
22
21
  const response = await client.getPackages(workspace, project);
23
22
  if (!response.packages || response.packages.length === 0) {
24
23
  output_1.default.exitError(texts_1.ERR_COMMAND_PACKAGE_NO_PROJECTS);
25
24
  }
26
- const data = [['NAME', 'IDENTIFIER', 'TYPE', 'URL']];
25
+ const data = [['NAME', 'IDENTIFIER', 'TYPE', 'SCOPE', 'URL']];
27
26
  for (const pkg of response.packages) {
27
+ if (project && pkg.scope === utils_1.PACKAGE_SCOPE.WORKSPACE)
28
+ continue;
28
29
  data.push([pkg.name, pkg.identifier, pkg.type, pkg.html_url]);
29
30
  }
30
31
  output_1.default.table(data);
@@ -25,14 +25,13 @@ commandPackagePublish.argument('<identifier>', texts_1.OPTION_PACKAGE_ID);
25
25
  commandPackagePublish.argument('<directory>', texts_1.OPTION_PACKAGE_PUBLISH_PATH);
26
26
  commandPackagePublish.action(async (id, path, options) => {
27
27
  let dirPath = input_1.default.resolvePath(path);
28
- const baseUrl = input_1.default.restApiBaseUrl(options.api, options.region);
29
28
  const workspace = input_1.default.restApiWorkspace(options.workspace);
30
29
  const project = input_1.default.restApiProject(options.project, true);
31
30
  // eslint-disable-next-line prefer-const
32
31
  let { identifier, version } = input_1.default.packageSplitIdentifier(id);
33
32
  if (!version)
34
33
  version = (0, uuid_1.v4)();
35
- const client = input_1.default.restApiTokenClient(baseUrl, options.token);
34
+ const client = input_1.default.restApiTokenClient(options.api, options.region, options.token);
36
35
  const data = await client.getPackageVersionByIdentifier(workspace, project, identifier, version);
37
36
  if (!data || !data.domain) {
38
37
  output_1.default.exitError(texts_1.ERR_WORKSPACE_NOT_FOUND);
@@ -43,7 +42,22 @@ commandPackagePublish.action(async (id, path, options) => {
43
42
  let packageId = data.pkg_id;
44
43
  if (!packageId) {
45
44
  if (options.create) {
46
- const d = await client.postPackage(workspace, project, identifier);
45
+ const data = {
46
+ name: identifier,
47
+ identifier,
48
+ type: utils_1.PACKAGE_TYPE.FILE,
49
+ scope: utils_1.PACKAGE_SCOPE.WORKSPACE,
50
+ authorization: {
51
+ type: utils_1.PACKAGE_AUTH_TYPE.BUDDY
52
+ }
53
+ };
54
+ if (project) {
55
+ data.scope = utils_1.PACKAGE_SCOPE.PROJECT;
56
+ data.project = {
57
+ name: project
58
+ };
59
+ }
60
+ const d = await client.postPackage(workspace, data);
47
61
  packageId = d.id;
48
62
  }
49
63
  else {
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const utils_1 = require("../../../utils");
7
+ const texts_1 = require("../../../texts");
8
+ const input_1 = __importDefault(require("../../../input"));
9
+ const output_1 = __importDefault(require("../../../output"));
10
+ const commandPackageVersionDelete = (0, utils_1.newCommand)('delete', texts_1.DESC_COMMAND_PACKAGE_VERSION_DELETE);
11
+ commandPackageVersionDelete.alias('rm');
12
+ commandPackageVersionDelete.option('--token <token>', texts_1.OPTION_REST_API_TOKEN);
13
+ commandPackageVersionDelete.option('--api <url>', texts_1.OPTION_REST_API_ENDPOINT);
14
+ commandPackageVersionDelete.option('--region <region>', texts_1.OPTION_REST_API_REGION);
15
+ commandPackageVersionDelete.option('-w, --workspace <domain>', texts_1.OPTION_REST_API_WORKSPACE);
16
+ commandPackageVersionDelete.option('-p, --project <name>', texts_1.OPTION_REST_API_PROJECT);
17
+ commandPackageVersionDelete.argument('<identifier>', texts_1.OPT_COMMAND_PACKAGE_IDENTIFIER);
18
+ commandPackageVersionDelete.option('-f, --force', texts_1.OPTION_CONFIRM_FORCE);
19
+ commandPackageVersionDelete.argument('<version>', texts_1.OPT_COMMAND_PACKAGE_VERSION);
20
+ commandPackageVersionDelete.action(async (identifier, version, options) => {
21
+ const workspace = input_1.default.restApiWorkspace(options.workspace);
22
+ const project = input_1.default.restApiProject(options.project, true);
23
+ const client = input_1.default.restApiTokenClient(options.api, options.region, options.token);
24
+ const data = await client.getPackageVersionByIdentifier(workspace, project, identifier, version);
25
+ if (!data || !data.domain) {
26
+ output_1.default.exitError(texts_1.ERR_WORKSPACE_NOT_FOUND);
27
+ }
28
+ if (!data || !data.pkg_id) {
29
+ output_1.default.exitError(texts_1.ERR_PACKAGE_NOT_FOUND);
30
+ }
31
+ if (!data || !data.pkg_version_id) {
32
+ output_1.default.exitError(texts_1.ERR_PACKAGE_VERSION_NOT_FOUND);
33
+ }
34
+ const confirmed = options.force ||
35
+ (await output_1.default.confirm((0, texts_1.TXT_PACKAGE_VERSION_DELETE_CONFIRM)(identifier, version)));
36
+ if (!confirmed)
37
+ output_1.default.exitNormal();
38
+ await client.deletePackageVersion(workspace, data.pkg_id, data.pkg_version_id);
39
+ output_1.default.exitSuccess(texts_1.TXT_PACKAGE_VERSION_DELETED);
40
+ });
41
+ exports.default = commandPackageVersionDelete;
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const utils_1 = require("../../../utils");
7
+ const texts_1 = require("../../../texts");
8
+ const input_1 = __importDefault(require("../../../input"));
9
+ const output_1 = __importDefault(require("../../../output"));
10
+ const commandPackageVersionGet = (0, utils_1.newCommand)('get', texts_1.DESC_COMMAND_PACKAGE_VERSION_GET);
11
+ commandPackageVersionGet.option('--token <token>', texts_1.OPTION_REST_API_TOKEN);
12
+ commandPackageVersionGet.option('--api <url>', texts_1.OPTION_REST_API_ENDPOINT);
13
+ commandPackageVersionGet.option('--region <region>', texts_1.OPTION_REST_API_REGION);
14
+ commandPackageVersionGet.option('-w, --workspace <domain>', texts_1.OPTION_REST_API_WORKSPACE);
15
+ commandPackageVersionGet.option('-p, --project <name>', texts_1.OPTION_REST_API_PROJECT);
16
+ commandPackageVersionGet.argument('<identifier>', texts_1.OPT_COMMAND_PACKAGE_IDENTIFIER);
17
+ commandPackageVersionGet.argument('<version>', texts_1.OPT_COMMAND_PACKAGE_VERSION);
18
+ commandPackageVersionGet.action(async (identifier, version, options) => {
19
+ const workspace = input_1.default.restApiWorkspace(options.workspace);
20
+ const project = input_1.default.restApiProject(options.project, true);
21
+ const client = input_1.default.restApiTokenClient(options.api, options.region, options.token);
22
+ const data = await client.getPackageVersionByIdentifier(workspace, project, identifier, version);
23
+ if (!data || !data.domain) {
24
+ output_1.default.exitError(texts_1.ERR_WORKSPACE_NOT_FOUND);
25
+ }
26
+ if (!data || !data.pkg_id) {
27
+ output_1.default.exitError(texts_1.ERR_PACKAGE_NOT_FOUND);
28
+ }
29
+ if (!data || !data.pkg_version_id) {
30
+ output_1.default.exitError(texts_1.ERR_PACKAGE_VERSION_NOT_FOUND);
31
+ }
32
+ const result = await client.getPackageVersion(workspace, data.pkg_id, data.pkg_version_id);
33
+ const obj = {
34
+ Version: result.version,
35
+ Size: (0, utils_1.formatBytes)(result.size),
36
+ Created: result.created_date,
37
+ 'App url': result.html_url,
38
+ Url: result.version_url,
39
+ };
40
+ output_1.default.object(obj);
41
+ output_1.default.normal('');
42
+ const type = result.version_url.startsWith('https://')
43
+ ? utils_1.PACKAGE_TYPE.FILE
44
+ : utils_1.PACKAGE_TYPE.CONTAINER;
45
+ output_1.default.exitNormal((0, texts_1.TXT_PACKAGE_VERSION_DOWNLOAD)(type, identifier, version, result.version_url));
46
+ });
47
+ exports.default = commandPackageVersionGet;
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const utils_1 = require("../../../utils");
7
+ const texts_1 = require("../../../texts");
8
+ const input_1 = __importDefault(require("../../../input"));
9
+ const output_1 = __importDefault(require("../../../output"));
10
+ const commandPackageVersionList = (0, utils_1.newCommand)('list', texts_1.DESC_COMMAND_PACKAGE_VERSION_LIST);
11
+ commandPackageVersionList.option('--token <token>', texts_1.OPTION_REST_API_TOKEN);
12
+ commandPackageVersionList.option('--api <url>', texts_1.OPTION_REST_API_ENDPOINT);
13
+ commandPackageVersionList.option('--region <region>', texts_1.OPTION_REST_API_REGION);
14
+ commandPackageVersionList.option('-w, --workspace <domain>', texts_1.OPTION_REST_API_WORKSPACE);
15
+ commandPackageVersionList.option('-p, --project <name>', texts_1.OPTION_REST_API_PROJECT);
16
+ commandPackageVersionList.option('--page <number>', texts_1.OPTION_REST_API_PAGE, '1');
17
+ commandPackageVersionList.option('--per-page <number>', texts_1.OPTION_REST_API_PER_PAGE, '10');
18
+ commandPackageVersionList.alias('ls');
19
+ commandPackageVersionList.argument('<identifier>', texts_1.OPT_COMMAND_PACKAGE_IDENTIFIER);
20
+ commandPackageVersionList.action(async (identifier, options) => {
21
+ const page = input_1.default.restApiPage(options.page);
22
+ const perPage = input_1.default.restApiPerPage(options.perPage);
23
+ const workspace = input_1.default.restApiWorkspace(options.workspace);
24
+ const project = input_1.default.restApiProject(options.project, true);
25
+ const client = input_1.default.restApiTokenClient(options.api, options.region, options.token);
26
+ const data = await client.getPackageVersionByIdentifier(workspace, project, identifier);
27
+ if (!data || !data.domain) {
28
+ output_1.default.exitError(texts_1.ERR_WORKSPACE_NOT_FOUND);
29
+ }
30
+ if (!data || !data.pkg_id) {
31
+ output_1.default.exitError(texts_1.ERR_PACKAGE_NOT_FOUND);
32
+ }
33
+ const result = await client.getPackageVersions(workspace, data.pkg_id, page, perPage);
34
+ const table = [['VERSION', 'SIZE', 'CREATED', 'URL']];
35
+ if (!result.versions.length) {
36
+ output_1.default.exitError(texts_1.ERR_PACKAGE_VERSIONS_NOT_FOUND);
37
+ }
38
+ result.versions.forEach((ver) => {
39
+ table.push([
40
+ ver.version,
41
+ (0, utils_1.formatBytes)(ver.size),
42
+ ver.created_date,
43
+ ver.version_url,
44
+ ]);
45
+ });
46
+ output_1.default.table(table);
47
+ output_1.default.exitNormal();
48
+ });
49
+ exports.default = commandPackageVersionList;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const utils_1 = require("../../utils");
7
+ const list_1 = __importDefault(require("./version/list"));
8
+ const texts_1 = require("../../texts");
9
+ const get_1 = __importDefault(require("./version/get"));
10
+ const delete_1 = __importDefault(require("./version/delete"));
11
+ const commandPackageVersion = (0, utils_1.newCommand)('version', texts_1.DESC_COMMAND_PACKAGE_VERSION);
12
+ commandPackageVersion.alias('ver');
13
+ commandPackageVersion.addCommand(list_1.default);
14
+ commandPackageVersion.addCommand(get_1.default);
15
+ commandPackageVersion.addCommand(delete_1.default);
16
+ exports.default = commandPackageVersion;
@@ -8,9 +8,19 @@ const texts_1 = require("../texts");
8
8
  const publish_1 = __importDefault(require("./package/publish"));
9
9
  const download_1 = __importDefault(require("./package/download"));
10
10
  const list_1 = __importDefault(require("./package/list"));
11
+ const create_1 = __importDefault(require("./package/create"));
12
+ const delete_1 = __importDefault(require("./package/delete"));
13
+ const get_1 = __importDefault(require("./package/get"));
14
+ const version_1 = __importDefault(require("./package/version"));
15
+ const docker_1 = __importDefault(require("./package/docker"));
11
16
  const commandPackage = (0, utils_1.newCommand)('package', texts_1.DESC_COMMAND_PACKAGE);
12
17
  commandPackage.alias('pkg');
13
18
  commandPackage.addCommand(list_1.default);
19
+ commandPackage.addCommand(create_1.default);
20
+ commandPackage.addCommand(get_1.default);
21
+ commandPackage.addCommand(delete_1.default);
14
22
  commandPackage.addCommand(publish_1.default);
15
23
  commandPackage.addCommand(download_1.default);
24
+ commandPackage.addCommand(version_1.default);
25
+ commandPackage.addCommand(docker_1.default);
16
26
  exports.default = commandPackage;
@@ -30,10 +30,9 @@ commandPipelineRun.option('--wait [minutes]', texts_1.OPTION_PIPELINE_RUN_WAIT);
30
30
  commandPipelineRun.argument('<identifier>', texts_1.OPTION_PIPELINE_RUN_ARGUMENT);
31
31
  commandPipelineRun.usage('<identifier> [options]');
32
32
  commandPipelineRun.action(async (identifier, options) => {
33
- const baseUrl = input_1.default.restApiBaseUrl(options.api, options.region);
34
33
  const workspace = input_1.default.restApiWorkspace(options.workspace);
35
34
  const project = input_1.default.restApiProject(options.project);
36
- const client = input_1.default.restApiTokenClient(baseUrl, options.token);
35
+ const client = input_1.default.restApiTokenClient(options.api, options.region, options.token);
37
36
  const data = await client.getPipelineByIdentifier(workspace, project, identifier);
38
37
  if (!data || !data.domain) {
39
38
  output_1.default.exitError(texts_1.ERR_WORKSPACE_NOT_FOUND);