bdy 1.16.27-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.
- package/distTs/package.json +1 -1
- package/distTs/src/agent/system.js +3 -1
- package/distTs/src/api/client.js +45 -22
- package/distTs/src/command/agent/install.js +1 -1
- package/distTs/src/command/agent/uninstall.js +5 -1
- package/distTs/src/command/package/create.js +59 -0
- package/distTs/src/command/package/delete.js +37 -0
- package/distTs/src/command/package/docker/login.js +26 -0
- package/distTs/src/command/package/docker.js +11 -0
- package/distTs/src/command/package/download.js +1 -2
- package/distTs/src/command/package/get.js +39 -0
- package/distTs/src/command/package/list.js +4 -3
- package/distTs/src/command/package/publish.js +17 -3
- package/distTs/src/command/package/version/delete.js +41 -0
- package/distTs/src/command/package/version/get.js +47 -0
- package/distTs/src/command/package/version/list.js +49 -0
- package/distTs/src/command/package/version.js +16 -0
- package/distTs/src/command/package.js +10 -0
- package/distTs/src/command/pipeline/run.js +1 -2
- package/distTs/src/command/project/list.js +2 -8
- package/distTs/src/command/project/set.js +1 -2
- package/distTs/src/command/sandbox/cp.js +1 -2
- package/distTs/src/command/sandbox/create.js +2 -2
- package/distTs/src/command/sandbox/destroy.js +7 -3
- package/distTs/src/command/sandbox/endpoint/add.js +2 -2
- package/distTs/src/command/sandbox/endpoint/delete.js +7 -2
- package/distTs/src/command/sandbox/endpoint/get.js +2 -3
- package/distTs/src/command/sandbox/endpoint/list.js +2 -2
- package/distTs/src/command/sandbox/exec/command.js +1 -2
- package/distTs/src/command/sandbox/exec/kill.js +6 -2
- package/distTs/src/command/sandbox/exec/list.js +1 -2
- package/distTs/src/command/sandbox/exec/logs.js +1 -2
- package/distTs/src/command/sandbox/exec/status.js +1 -2
- package/distTs/src/command/sandbox/get.js +2 -3
- package/distTs/src/command/sandbox/list.js +2 -3
- package/distTs/src/command/sandbox/restart.js +1 -2
- package/distTs/src/command/sandbox/snapshot/create.js +2 -2
- package/distTs/src/command/sandbox/snapshot/delete.js +7 -2
- package/distTs/src/command/sandbox/snapshot/get.js +2 -3
- package/distTs/src/command/sandbox/snapshot/list.js +1 -2
- package/distTs/src/command/sandbox/start.js +1 -2
- package/distTs/src/command/sandbox/status.js +1 -2
- package/distTs/src/command/sandbox/stop.js +1 -2
- package/distTs/src/command/workspace/list.js +2 -3
- package/distTs/src/command/workspace/set.js +1 -2
- package/distTs/src/input.js +27 -2
- package/distTs/src/output.js +13 -4
- package/distTs/src/texts.js +150 -90
- package/distTs/src/utils.js +95 -16
- package/package.json +1 -1
package/distTs/package.json
CHANGED
|
@@ -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
|
-
|
|
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) => {
|
package/distTs/src/api/client.js
CHANGED
|
@@ -72,7 +72,8 @@ class ApiClient {
|
|
|
72
72
|
else {
|
|
73
73
|
if (httpUrlEncoded) {
|
|
74
74
|
if (!headers['content-type']) {
|
|
75
|
-
headers['content-type'] =
|
|
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.
|
|
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(
|
|
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,
|
|
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;
|
|
@@ -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.
|
|
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
|
|
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(
|
|
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(
|
|
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
|
|
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(
|
|
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);
|