bdy 1.16.27-dev → 1.16.28-stage

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 +45 -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.27-dev",
4
+ "version": "1.16.28-stage",
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);
@@ -226,7 +231,7 @@ class ApiClient {
226
231
  method: 'GET',
227
232
  path: `/workspaces/${encodeURIComponent(workspace)}/tunnels/token`,
228
233
  query,
229
- parseResponseBody: true
234
+ parseResponseBody: true,
230
235
  });
231
236
  }
232
237
  async getInvokerEmails() {
@@ -423,7 +428,7 @@ class ApiClient {
423
428
  method: 'GET',
424
429
  path: `/workspaces/${encodeURIComponent(workspace)}/sandboxes/snapshots`,
425
430
  query,
426
- parseResponseBody: true
431
+ parseResponseBody: true,
427
432
  });
428
433
  }
429
434
  async createSandboxSnapshot(workspace, sandboxId, body) {
@@ -541,12 +546,14 @@ class ApiClient {
541
546
  }
542
547
  async getResourceByIdentifier(workspace, params) {
543
548
  let query = '';
544
- Object.keys(params).forEach((key) => {
549
+ Object.entries(params).forEach(([key, value]) => {
550
+ if (value === undefined)
551
+ return;
545
552
  if (!query)
546
553
  query += '?';
547
554
  else
548
555
  query += '&';
549
- query += encodeURIComponent(key) + '=' + encodeURIComponent(params[key]);
556
+ query += encodeURIComponent(key) + '=' + encodeURIComponent(value);
550
557
  });
551
558
  return await this.request({
552
559
  method: 'GET',
@@ -560,6 +567,12 @@ class ApiClient {
560
567
  pipeline: identifier,
561
568
  });
562
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
+ }
563
576
  async getPackageVersionByIdentifier(workspace, project, pkg, version) {
564
577
  const opts = {
565
578
  package: pkg,
@@ -570,6 +583,17 @@ class ApiClient {
570
583
  opts.package_version = version;
571
584
  return await this.getResourceByIdentifier(workspace, opts);
572
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
+ }
573
597
  async getPackageVersion(workspace, pkgId, versionId) {
574
598
  return await this.request({
575
599
  method: 'GET',
@@ -577,6 +601,13 @@ class ApiClient {
577
601
  parseResponseBody: true,
578
602
  });
579
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
+ }
580
611
  async getPackageLatest(workspace, pkgId) {
581
612
  const res = await this.request({
582
613
  method: 'GET',
@@ -615,28 +646,20 @@ class ApiClient {
615
646
  parseResponseBody: true,
616
647
  });
617
648
  }
618
- async postPackage(workspace, project, identifier) {
619
- const body = {
620
- name: identifier,
621
- identifier,
622
- type: 'FILE',
623
- scope: 'WORKSPACE',
624
- authorization: {
625
- type: 'BUDDY',
626
- },
627
- };
628
- if (project) {
629
- body.project = {
630
- name: project,
631
- };
632
- body.scope = 'PROJECT';
633
- }
649
+ async postPackage(workspace, data) {
634
650
  return await this.request({
635
651
  method: 'POST',
636
652
  path: `/workspaces/${encodeURIComponent(workspace)}/packages`,
637
- body,
653
+ body: data,
638
654
  parseResponseBody: true,
639
655
  });
640
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
+ }
641
664
  }
642
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);