@nexical/cli 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/deploy.yml +34 -0
- package/LICENSE +201 -0
- package/README.md +183 -0
- package/dist/chunk-FDJVHO4O.js +41 -0
- package/dist/chunk-FDJVHO4O.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -0
- package/dist/src/commands/admin/create-user.d.ts +15 -0
- package/dist/src/commands/admin/create-user.js +49 -0
- package/dist/src/commands/admin/create-user.js.map +1 -0
- package/dist/src/commands/branch/create.d.ts +19 -0
- package/dist/src/commands/branch/create.js +59 -0
- package/dist/src/commands/branch/create.js.map +1 -0
- package/dist/src/commands/branch/delete.d.ts +15 -0
- package/dist/src/commands/branch/delete.js +50 -0
- package/dist/src/commands/branch/delete.js.map +1 -0
- package/dist/src/commands/branch/get.d.ts +15 -0
- package/dist/src/commands/branch/get.js +53 -0
- package/dist/src/commands/branch/get.js.map +1 -0
- package/dist/src/commands/branch/list.d.ts +15 -0
- package/dist/src/commands/branch/list.js +51 -0
- package/dist/src/commands/branch/list.js.map +1 -0
- package/dist/src/commands/job/get.d.ts +15 -0
- package/dist/src/commands/job/get.js +62 -0
- package/dist/src/commands/job/get.js.map +1 -0
- package/dist/src/commands/job/list.d.ts +15 -0
- package/dist/src/commands/job/list.js +57 -0
- package/dist/src/commands/job/list.js.map +1 -0
- package/dist/src/commands/job/logs.d.ts +15 -0
- package/dist/src/commands/job/logs.js +67 -0
- package/dist/src/commands/job/logs.js.map +1 -0
- package/dist/src/commands/job/trigger.d.ts +19 -0
- package/dist/src/commands/job/trigger.js +74 -0
- package/dist/src/commands/job/trigger.js.map +1 -0
- package/dist/src/commands/login.d.ts +8 -0
- package/dist/src/commands/login.js +31 -0
- package/dist/src/commands/login.js.map +1 -0
- package/dist/src/commands/project/create.d.ts +24 -0
- package/dist/src/commands/project/create.js +63 -0
- package/dist/src/commands/project/create.js.map +1 -0
- package/dist/src/commands/project/delete.d.ts +20 -0
- package/dist/src/commands/project/delete.js +58 -0
- package/dist/src/commands/project/delete.js.map +1 -0
- package/dist/src/commands/project/get.d.ts +15 -0
- package/dist/src/commands/project/get.js +49 -0
- package/dist/src/commands/project/get.js.map +1 -0
- package/dist/src/commands/project/list.d.ts +15 -0
- package/dist/src/commands/project/list.js +45 -0
- package/dist/src/commands/project/list.js.map +1 -0
- package/dist/src/commands/project/update.d.ts +19 -0
- package/dist/src/commands/project/update.js +66 -0
- package/dist/src/commands/project/update.js.map +1 -0
- package/dist/src/commands/team/create.d.ts +19 -0
- package/dist/src/commands/team/create.js +45 -0
- package/dist/src/commands/team/create.js.map +1 -0
- package/dist/src/commands/team/delete.d.ts +20 -0
- package/dist/src/commands/team/delete.js +52 -0
- package/dist/src/commands/team/delete.js.map +1 -0
- package/dist/src/commands/team/get.d.ts +15 -0
- package/dist/src/commands/team/get.js +42 -0
- package/dist/src/commands/team/get.js.map +1 -0
- package/dist/src/commands/team/list.d.ts +8 -0
- package/dist/src/commands/team/list.js +30 -0
- package/dist/src/commands/team/list.js.map +1 -0
- package/dist/src/commands/team/member/invite.d.ts +20 -0
- package/dist/src/commands/team/member/invite.js +54 -0
- package/dist/src/commands/team/member/invite.js.map +1 -0
- package/dist/src/commands/team/member/remove.d.ts +15 -0
- package/dist/src/commands/team/member/remove.js +43 -0
- package/dist/src/commands/team/member/remove.js.map +1 -0
- package/dist/src/commands/team/update.d.ts +19 -0
- package/dist/src/commands/team/update.js +55 -0
- package/dist/src/commands/team/update.js.map +1 -0
- package/dist/src/commands/token/generate.d.ts +19 -0
- package/dist/src/commands/token/generate.js +48 -0
- package/dist/src/commands/token/generate.js.map +1 -0
- package/dist/src/commands/token/list.d.ts +8 -0
- package/dist/src/commands/token/list.js +31 -0
- package/dist/src/commands/token/list.js.map +1 -0
- package/dist/src/commands/token/revoke.d.ts +15 -0
- package/dist/src/commands/token/revoke.js +38 -0
- package/dist/src/commands/token/revoke.js.map +1 -0
- package/dist/src/commands/whoami.d.ts +8 -0
- package/dist/src/commands/whoami.js +26 -0
- package/dist/src/commands/whoami.js.map +1 -0
- package/dist/src/utils/nexical-client.d.ts +10 -0
- package/dist/src/utils/nexical-client.js +12 -0
- package/dist/src/utils/nexical-client.js.map +1 -0
- package/index.ts +14 -0
- package/package.json +32 -0
- package/src/commands/admin/create-user.ts +46 -0
- package/src/commands/branch/create.ts +57 -0
- package/src/commands/branch/delete.ts +47 -0
- package/src/commands/branch/get.ts +50 -0
- package/src/commands/branch/list.ts +50 -0
- package/src/commands/job/get.ts +59 -0
- package/src/commands/job/list.ts +56 -0
- package/src/commands/job/logs.ts +67 -0
- package/src/commands/job/trigger.ts +73 -0
- package/src/commands/login.ts +31 -0
- package/src/commands/project/create.ts +61 -0
- package/src/commands/project/delete.ts +56 -0
- package/src/commands/project/get.ts +46 -0
- package/src/commands/project/list.ts +44 -0
- package/src/commands/project/update.ts +63 -0
- package/src/commands/team/create.ts +43 -0
- package/src/commands/team/delete.ts +50 -0
- package/src/commands/team/get.ts +39 -0
- package/src/commands/team/list.ts +26 -0
- package/src/commands/team/member/invite.ts +56 -0
- package/src/commands/team/member/remove.ts +40 -0
- package/src/commands/team/update.ts +53 -0
- package/src/commands/token/generate.ts +45 -0
- package/src/commands/token/list.ts +27 -0
- package/src/commands/token/revoke.ts +35 -0
- package/src/commands/whoami.ts +21 -0
- package/src/utils/nexical-client.ts +40 -0
- package/test/e2e/.gitkeep +0 -0
- package/test/integration/commands/admin/create-user.test.ts +51 -0
- package/test/integration/commands/branch/create.test.ts +51 -0
- package/test/integration/commands/branch/delete.test.ts +43 -0
- package/test/integration/commands/branch/get.test.ts +49 -0
- package/test/integration/commands/branch/list.test.ts +47 -0
- package/test/integration/commands/job/get.test.ts +54 -0
- package/test/integration/commands/job/list.test.ts +47 -0
- package/test/integration/commands/job/logs.test.ts +47 -0
- package/test/integration/commands/job/trigger.test.ts +57 -0
- package/test/integration/commands/login.test.ts +62 -0
- package/test/integration/commands/project/create.test.ts +53 -0
- package/test/integration/commands/project/delete.test.ts +43 -0
- package/test/integration/commands/project/get.test.ts +51 -0
- package/test/integration/commands/project/list.test.ts +47 -0
- package/test/integration/commands/project/update.test.ts +53 -0
- package/test/integration/commands/team/create.test.ts +53 -0
- package/test/integration/commands/team/delete.test.ts +43 -0
- package/test/integration/commands/team/get.test.ts +50 -0
- package/test/integration/commands/team/list.test.ts +47 -0
- package/test/integration/commands/team/member/invite.test.ts +46 -0
- package/test/integration/commands/team/member/remove.test.ts +43 -0
- package/test/integration/commands/team/update.test.ts +50 -0
- package/test/integration/commands/token/generate.test.ts +51 -0
- package/test/integration/commands/token/list.test.ts +47 -0
- package/test/integration/commands/token/revoke.test.ts +43 -0
- package/test/integration/commands/whoami.test.ts +49 -0
- package/test/unit/commands/admin/create-user.test.ts +51 -0
- package/test/unit/commands/branch/create.test.ts +57 -0
- package/test/unit/commands/branch/delete.test.ts +49 -0
- package/test/unit/commands/branch/get.test.ts +67 -0
- package/test/unit/commands/branch/list.test.ts +62 -0
- package/test/unit/commands/job/get.test.ts +76 -0
- package/test/unit/commands/job/list.test.ts +62 -0
- package/test/unit/commands/job/logs.test.ts +60 -0
- package/test/unit/commands/job/trigger.test.ts +75 -0
- package/test/unit/commands/login.test.ts +64 -0
- package/test/unit/commands/project/create.test.ts +64 -0
- package/test/unit/commands/project/delete.test.ts +72 -0
- package/test/unit/commands/project/get.test.ts +73 -0
- package/test/unit/commands/project/list.test.ts +62 -0
- package/test/unit/commands/project/update.test.ts +58 -0
- package/test/unit/commands/team/create.test.ts +68 -0
- package/test/unit/commands/team/delete.test.ts +71 -0
- package/test/unit/commands/team/get.test.ts +70 -0
- package/test/unit/commands/team/list.test.ts +56 -0
- package/test/unit/commands/team/member/invite.test.ts +52 -0
- package/test/unit/commands/team/member/remove.test.ts +49 -0
- package/test/unit/commands/team/update.test.ts +63 -0
- package/test/unit/commands/token/generate.test.ts +65 -0
- package/test/unit/commands/token/list.test.ts +58 -0
- package/test/unit/commands/token/revoke.test.ts +49 -0
- package/test/unit/commands/whoami.test.ts +49 -0
- package/test/unit/utils/nexical-client.test.ts +98 -0
- package/test/utils/integration-helpers.ts +22 -0
- package/tsconfig.json +26 -0
- package/tsup.config.ts +18 -0
- package/vitest.config.ts +15 -0
- package/vitest.e2e.config.ts +10 -0
- package/vitest.integration.config.ts +22 -0
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { createRequire } from "module"; const require = createRequire(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
getClient
|
|
4
|
+
} from "../../../chunk-FDJVHO4O.js";
|
|
5
|
+
|
|
6
|
+
// src/commands/branch/delete.ts
|
|
7
|
+
import { BaseCommand } from "@nexical/cli-core";
|
|
8
|
+
var BranchesDeleteCommand = class extends BaseCommand {
|
|
9
|
+
static description = "Delete a branch";
|
|
10
|
+
static args = {
|
|
11
|
+
args: [
|
|
12
|
+
{
|
|
13
|
+
name: "teamId",
|
|
14
|
+
required: true,
|
|
15
|
+
description: "Team ID"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
name: "projectId",
|
|
19
|
+
required: true,
|
|
20
|
+
description: "Project ID"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
name: "branchId",
|
|
24
|
+
required: true,
|
|
25
|
+
description: "Branch ID"
|
|
26
|
+
}
|
|
27
|
+
]
|
|
28
|
+
};
|
|
29
|
+
async run(options) {
|
|
30
|
+
const client = getClient();
|
|
31
|
+
const { teamId, projectId, branchId } = options;
|
|
32
|
+
const tid = parseInt(teamId, 10);
|
|
33
|
+
const pid = parseInt(projectId, 10);
|
|
34
|
+
const bid = parseInt(branchId, 10);
|
|
35
|
+
if (isNaN(tid) || isNaN(pid) || isNaN(bid)) {
|
|
36
|
+
this.error("IDs must be numbers.");
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
try {
|
|
40
|
+
await client.branches.delete(tid, pid, bid);
|
|
41
|
+
this.success(`Branch ${bid} deleted.`);
|
|
42
|
+
} catch (error) {
|
|
43
|
+
this.error(`Failed to delete branch: ${error.message}`);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
export {
|
|
48
|
+
BranchesDeleteCommand as default
|
|
49
|
+
};
|
|
50
|
+
//# sourceMappingURL=delete.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/commands/branch/delete.ts"],"sourcesContent":["\nimport { BaseCommand } from '@nexical/cli-core';\nimport { getClient } from '../../utils/nexical-client.js';\n\nexport default class BranchesDeleteCommand extends BaseCommand {\n static description = 'Delete a branch';\n\n static args = {\n args: [\n {\n name: 'teamId',\n required: true,\n description: 'Team ID',\n },\n {\n name: 'projectId',\n required: true,\n description: 'Project ID',\n },\n {\n name: 'branchId',\n required: true,\n description: 'Branch ID',\n },\n ],\n };\n\n async run(options: any) {\n const client = getClient();\n const { teamId, projectId, branchId } = options;\n const tid = parseInt(teamId, 10);\n const pid = parseInt(projectId, 10);\n const bid = parseInt(branchId, 10);\n\n if (isNaN(tid) || isNaN(pid) || isNaN(bid)) {\n this.error('IDs must be numbers.');\n return;\n }\n\n try {\n await client.branches.delete(tid, pid, bid);\n this.success(`Branch ${bid} deleted.`);\n } catch (error: any) {\n this.error(`Failed to delete branch: ${error.message}`);\n }\n }\n}\n"],"mappings":";;;;;;AACA,SAAS,mBAAmB;AAG5B,IAAqB,wBAArB,cAAmD,YAAY;AAAA,EAC3D,OAAO,cAAc;AAAA,EAErB,OAAO,OAAO;AAAA,IACV,MAAM;AAAA,MACF;AAAA,QACI,MAAM;AAAA,QACN,UAAU;AAAA,QACV,aAAa;AAAA,MACjB;AAAA,MACA;AAAA,QACI,MAAM;AAAA,QACN,UAAU;AAAA,QACV,aAAa;AAAA,MACjB;AAAA,MACA;AAAA,QACI,MAAM;AAAA,QACN,UAAU;AAAA,QACV,aAAa;AAAA,MACjB;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,MAAM,IAAI,SAAc;AACpB,UAAM,SAAS,UAAU;AACzB,UAAM,EAAE,QAAQ,WAAW,SAAS,IAAI;AACxC,UAAM,MAAM,SAAS,QAAQ,EAAE;AAC/B,UAAM,MAAM,SAAS,WAAW,EAAE;AAClC,UAAM,MAAM,SAAS,UAAU,EAAE;AAEjC,QAAI,MAAM,GAAG,KAAK,MAAM,GAAG,KAAK,MAAM,GAAG,GAAG;AACxC,WAAK,MAAM,sBAAsB;AACjC;AAAA,IACJ;AAEA,QAAI;AACA,YAAM,OAAO,SAAS,OAAO,KAAK,KAAK,GAAG;AAC1C,WAAK,QAAQ,UAAU,GAAG,WAAW;AAAA,IACzC,SAAS,OAAY;AACjB,WAAK,MAAM,4BAA4B,MAAM,OAAO,EAAE;AAAA,IAC1D;AAAA,EACJ;AACJ;","names":[]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { BaseCommand } from '@nexical/cli-core';
|
|
2
|
+
|
|
3
|
+
declare class BranchesGetCommand extends BaseCommand {
|
|
4
|
+
static description: string;
|
|
5
|
+
static args: {
|
|
6
|
+
args: {
|
|
7
|
+
name: string;
|
|
8
|
+
required: boolean;
|
|
9
|
+
description: string;
|
|
10
|
+
}[];
|
|
11
|
+
};
|
|
12
|
+
run(options: any): Promise<void>;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export { BranchesGetCommand as default };
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { createRequire } from "module"; const require = createRequire(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
getClient
|
|
4
|
+
} from "../../../chunk-FDJVHO4O.js";
|
|
5
|
+
|
|
6
|
+
// src/commands/branch/get.ts
|
|
7
|
+
import { BaseCommand } from "@nexical/cli-core";
|
|
8
|
+
var BranchesGetCommand = class extends BaseCommand {
|
|
9
|
+
static description = "Get branch details";
|
|
10
|
+
static args = {
|
|
11
|
+
args: [
|
|
12
|
+
{
|
|
13
|
+
name: "teamId",
|
|
14
|
+
required: true,
|
|
15
|
+
description: "Team ID"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
name: "projectId",
|
|
19
|
+
required: true,
|
|
20
|
+
description: "Project ID"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
name: "branchId",
|
|
24
|
+
required: true,
|
|
25
|
+
description: "Branch ID"
|
|
26
|
+
}
|
|
27
|
+
]
|
|
28
|
+
};
|
|
29
|
+
async run(options) {
|
|
30
|
+
const client = getClient();
|
|
31
|
+
const { teamId, projectId, branchId } = options;
|
|
32
|
+
const tid = parseInt(teamId, 10);
|
|
33
|
+
const pid = parseInt(projectId, 10);
|
|
34
|
+
const bid = parseInt(branchId, 10);
|
|
35
|
+
if (isNaN(tid) || isNaN(pid) || isNaN(bid)) {
|
|
36
|
+
this.error("IDs must be numbers.");
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
try {
|
|
40
|
+
const branch = await client.branches.get(tid, pid, bid);
|
|
41
|
+
this.info(`Branch Details:`);
|
|
42
|
+
this.info(` ID: ${branch.id}`);
|
|
43
|
+
this.info(` Name: ${branch.name}`);
|
|
44
|
+
this.info(` Preview: ${branch.previewUrl || "N/A"}`);
|
|
45
|
+
} catch (error) {
|
|
46
|
+
this.error(`Failed to get branch: ${error.message}`);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
export {
|
|
51
|
+
BranchesGetCommand as default
|
|
52
|
+
};
|
|
53
|
+
//# sourceMappingURL=get.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/commands/branch/get.ts"],"sourcesContent":["\nimport { BaseCommand } from '@nexical/cli-core';\nimport { getClient } from '../../utils/nexical-client.js';\n\nexport default class BranchesGetCommand extends BaseCommand {\n static description = 'Get branch details';\n\n static args = {\n args: [\n {\n name: 'teamId',\n required: true,\n description: 'Team ID',\n },\n {\n name: 'projectId',\n required: true,\n description: 'Project ID',\n },\n {\n name: 'branchId',\n required: true,\n description: 'Branch ID',\n },\n ],\n };\n\n async run(options: any) {\n const client = getClient();\n const { teamId, projectId, branchId } = options;\n const tid = parseInt(teamId, 10);\n const pid = parseInt(projectId, 10);\n const bid = parseInt(branchId, 10);\n\n if (isNaN(tid) || isNaN(pid) || isNaN(bid)) {\n this.error('IDs must be numbers.');\n return;\n }\n\n try {\n const branch = await client.branches.get(tid, pid, bid);\n this.info(`Branch Details:`);\n this.info(` ID: ${branch.id}`);\n this.info(` Name: ${branch.name}`);\n this.info(` Preview: ${branch.previewUrl || 'N/A'}`);\n } catch (error: any) {\n this.error(`Failed to get branch: ${error.message}`);\n }\n }\n}\n"],"mappings":";;;;;;AACA,SAAS,mBAAmB;AAG5B,IAAqB,qBAArB,cAAgD,YAAY;AAAA,EACxD,OAAO,cAAc;AAAA,EAErB,OAAO,OAAO;AAAA,IACV,MAAM;AAAA,MACF;AAAA,QACI,MAAM;AAAA,QACN,UAAU;AAAA,QACV,aAAa;AAAA,MACjB;AAAA,MACA;AAAA,QACI,MAAM;AAAA,QACN,UAAU;AAAA,QACV,aAAa;AAAA,MACjB;AAAA,MACA;AAAA,QACI,MAAM;AAAA,QACN,UAAU;AAAA,QACV,aAAa;AAAA,MACjB;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,MAAM,IAAI,SAAc;AACpB,UAAM,SAAS,UAAU;AACzB,UAAM,EAAE,QAAQ,WAAW,SAAS,IAAI;AACxC,UAAM,MAAM,SAAS,QAAQ,EAAE;AAC/B,UAAM,MAAM,SAAS,WAAW,EAAE;AAClC,UAAM,MAAM,SAAS,UAAU,EAAE;AAEjC,QAAI,MAAM,GAAG,KAAK,MAAM,GAAG,KAAK,MAAM,GAAG,GAAG;AACxC,WAAK,MAAM,sBAAsB;AACjC;AAAA,IACJ;AAEA,QAAI;AACA,YAAM,SAAS,MAAM,OAAO,SAAS,IAAI,KAAK,KAAK,GAAG;AACtD,WAAK,KAAK,iBAAiB;AAC3B,WAAK,KAAK,WAAW,OAAO,EAAE,EAAE;AAChC,WAAK,KAAK,WAAW,OAAO,IAAI,EAAE;AAClC,WAAK,KAAK,cAAc,OAAO,cAAc,KAAK,EAAE;AAAA,IACxD,SAAS,OAAY;AACjB,WAAK,MAAM,yBAAyB,MAAM,OAAO,EAAE;AAAA,IACvD;AAAA,EACJ;AACJ;","names":[]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { BaseCommand } from '@nexical/cli-core';
|
|
2
|
+
|
|
3
|
+
declare class BranchesListCommand extends BaseCommand {
|
|
4
|
+
static description: string;
|
|
5
|
+
static args: {
|
|
6
|
+
args: {
|
|
7
|
+
name: string;
|
|
8
|
+
required: boolean;
|
|
9
|
+
description: string;
|
|
10
|
+
}[];
|
|
11
|
+
};
|
|
12
|
+
run(options: any): Promise<void>;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export { BranchesListCommand as default };
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { createRequire } from "module"; const require = createRequire(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
getClient
|
|
4
|
+
} from "../../../chunk-FDJVHO4O.js";
|
|
5
|
+
|
|
6
|
+
// src/commands/branch/list.ts
|
|
7
|
+
import { BaseCommand } from "@nexical/cli-core";
|
|
8
|
+
var BranchesListCommand = class extends BaseCommand {
|
|
9
|
+
static description = "List branches in a project";
|
|
10
|
+
static args = {
|
|
11
|
+
args: [
|
|
12
|
+
{
|
|
13
|
+
name: "teamId",
|
|
14
|
+
required: true,
|
|
15
|
+
description: "Team ID"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
name: "projectId",
|
|
19
|
+
required: true,
|
|
20
|
+
description: "Project ID"
|
|
21
|
+
}
|
|
22
|
+
]
|
|
23
|
+
};
|
|
24
|
+
async run(options) {
|
|
25
|
+
const client = getClient();
|
|
26
|
+
const { teamId, projectId } = options;
|
|
27
|
+
const tid = parseInt(teamId, 10);
|
|
28
|
+
const pid = parseInt(projectId, 10);
|
|
29
|
+
if (isNaN(tid) || isNaN(pid)) {
|
|
30
|
+
this.error("IDs must be numbers.");
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
try {
|
|
34
|
+
const branches = await client.branches.list(tid, pid);
|
|
35
|
+
if (branches.length === 0) {
|
|
36
|
+
this.info("No branches found.");
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
this.info(`Branches for Project ${pid}:`);
|
|
40
|
+
for (const branch of branches) {
|
|
41
|
+
this.info(`- ${branch.name} (ID: ${branch.id})`);
|
|
42
|
+
}
|
|
43
|
+
} catch (error) {
|
|
44
|
+
this.error(`Failed to list branches: ${error.message}`);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
export {
|
|
49
|
+
BranchesListCommand as default
|
|
50
|
+
};
|
|
51
|
+
//# sourceMappingURL=list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/commands/branch/list.ts"],"sourcesContent":["\nimport { BaseCommand } from '@nexical/cli-core';\nimport { getClient } from '../../utils/nexical-client.js';\n\nexport default class BranchesListCommand extends BaseCommand {\n static description = 'List branches in a project';\n\n static args = {\n args: [\n {\n name: 'teamId',\n required: true,\n description: 'Team ID',\n },\n {\n name: 'projectId',\n required: true,\n description: 'Project ID',\n },\n ],\n };\n\n async run(options: any) {\n const client = getClient();\n const { teamId, projectId } = options;\n const tid = parseInt(teamId, 10);\n const pid = parseInt(projectId, 10);\n\n if (isNaN(tid) || isNaN(pid)) {\n this.error('IDs must be numbers.');\n return;\n }\n\n try {\n const branches = await client.branches.list(tid, pid);\n\n if (branches.length === 0) {\n this.info('No branches found.');\n return;\n }\n\n this.info(`Branches for Project ${pid}:`);\n for (const branch of branches) {\n this.info(`- ${branch.name} (ID: ${branch.id})`);\n }\n } catch (error: any) {\n this.error(`Failed to list branches: ${error.message}`);\n }\n }\n}\n"],"mappings":";;;;;;AACA,SAAS,mBAAmB;AAG5B,IAAqB,sBAArB,cAAiD,YAAY;AAAA,EACzD,OAAO,cAAc;AAAA,EAErB,OAAO,OAAO;AAAA,IACV,MAAM;AAAA,MACF;AAAA,QACI,MAAM;AAAA,QACN,UAAU;AAAA,QACV,aAAa;AAAA,MACjB;AAAA,MACA;AAAA,QACI,MAAM;AAAA,QACN,UAAU;AAAA,QACV,aAAa;AAAA,MACjB;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,MAAM,IAAI,SAAc;AACpB,UAAM,SAAS,UAAU;AACzB,UAAM,EAAE,QAAQ,UAAU,IAAI;AAC9B,UAAM,MAAM,SAAS,QAAQ,EAAE;AAC/B,UAAM,MAAM,SAAS,WAAW,EAAE;AAElC,QAAI,MAAM,GAAG,KAAK,MAAM,GAAG,GAAG;AAC1B,WAAK,MAAM,sBAAsB;AACjC;AAAA,IACJ;AAEA,QAAI;AACA,YAAM,WAAW,MAAM,OAAO,SAAS,KAAK,KAAK,GAAG;AAEpD,UAAI,SAAS,WAAW,GAAG;AACvB,aAAK,KAAK,oBAAoB;AAC9B;AAAA,MACJ;AAEA,WAAK,KAAK,wBAAwB,GAAG,GAAG;AACxC,iBAAW,UAAU,UAAU;AAC3B,aAAK,KAAK,KAAK,OAAO,IAAI,SAAS,OAAO,EAAE,GAAG;AAAA,MACnD;AAAA,IACJ,SAAS,OAAY;AACjB,WAAK,MAAM,4BAA4B,MAAM,OAAO,EAAE;AAAA,IAC1D;AAAA,EACJ;AACJ;","names":[]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { BaseCommand } from '@nexical/cli-core';
|
|
2
|
+
|
|
3
|
+
declare class JobsGetCommand extends BaseCommand {
|
|
4
|
+
static description: string;
|
|
5
|
+
static args: {
|
|
6
|
+
args: {
|
|
7
|
+
name: string;
|
|
8
|
+
required: boolean;
|
|
9
|
+
description: string;
|
|
10
|
+
}[];
|
|
11
|
+
};
|
|
12
|
+
run(options: any): Promise<void>;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export { JobsGetCommand as default };
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { createRequire } from "module"; const require = createRequire(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
getClient
|
|
4
|
+
} from "../../../chunk-FDJVHO4O.js";
|
|
5
|
+
|
|
6
|
+
// src/commands/job/get.ts
|
|
7
|
+
import { BaseCommand } from "@nexical/cli-core";
|
|
8
|
+
var JobsGetCommand = class extends BaseCommand {
|
|
9
|
+
static description = "Get job details";
|
|
10
|
+
static args = {
|
|
11
|
+
args: [
|
|
12
|
+
{
|
|
13
|
+
name: "teamId",
|
|
14
|
+
required: true,
|
|
15
|
+
description: "Team ID"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
name: "projectId",
|
|
19
|
+
required: true,
|
|
20
|
+
description: "Project ID"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
name: "branchId",
|
|
24
|
+
required: true,
|
|
25
|
+
description: "Branch ID"
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
name: "jobId",
|
|
29
|
+
required: true,
|
|
30
|
+
description: "Job ID"
|
|
31
|
+
}
|
|
32
|
+
]
|
|
33
|
+
};
|
|
34
|
+
async run(options) {
|
|
35
|
+
const client = getClient();
|
|
36
|
+
const { teamId, projectId, branchId, jobId } = options;
|
|
37
|
+
const tid = parseInt(teamId, 10);
|
|
38
|
+
const pid = parseInt(projectId, 10);
|
|
39
|
+
const bid = parseInt(branchId, 10);
|
|
40
|
+
const jid = parseInt(jobId, 10);
|
|
41
|
+
if (isNaN(tid) || isNaN(pid) || isNaN(bid) || isNaN(jid)) {
|
|
42
|
+
this.error("IDs must be numbers.");
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
try {
|
|
46
|
+
const job = await client.jobs.get(tid, pid, bid, jid);
|
|
47
|
+
this.info(`Job Details:`);
|
|
48
|
+
this.info(` ID: ${job.id}`);
|
|
49
|
+
this.info(` Type: ${job.type}`);
|
|
50
|
+
this.info(` Status: ${job.status}`);
|
|
51
|
+
this.info(` Started: ${job.startedAt || "Waiting"}`);
|
|
52
|
+
this.info(` Ended: ${job.completedAt || "Running"}`);
|
|
53
|
+
this.info(` Queue: ${job.queue}`);
|
|
54
|
+
} catch (error) {
|
|
55
|
+
this.error(`Failed to get job: ${error.message}`);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
export {
|
|
60
|
+
JobsGetCommand as default
|
|
61
|
+
};
|
|
62
|
+
//# sourceMappingURL=get.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/commands/job/get.ts"],"sourcesContent":["\nimport { BaseCommand } from '@nexical/cli-core';\nimport { getClient } from '../../utils/nexical-client.js';\n\nexport default class JobsGetCommand extends BaseCommand {\n static description = 'Get job details';\n\n static args = {\n args: [\n {\n name: 'teamId',\n required: true,\n description: 'Team ID',\n },\n {\n name: 'projectId',\n required: true,\n description: 'Project ID',\n },\n {\n name: 'branchId',\n required: true,\n description: 'Branch ID',\n },\n {\n name: 'jobId',\n required: true,\n description: 'Job ID',\n },\n ],\n };\n\n async run(options: any) {\n const client = getClient();\n const { teamId, projectId, branchId, jobId } = options;\n const tid = parseInt(teamId, 10);\n const pid = parseInt(projectId, 10);\n const bid = parseInt(branchId, 10);\n const jid = parseInt(jobId, 10);\n\n if (isNaN(tid) || isNaN(pid) || isNaN(bid) || isNaN(jid)) {\n this.error('IDs must be numbers.');\n return;\n }\n\n try {\n const job = await client.jobs.get(tid, pid, bid, jid);\n this.info(`Job Details:`);\n this.info(` ID: ${job.id}`);\n this.info(` Type: ${job.type}`);\n this.info(` Status: ${job.status}`);\n this.info(` Started: ${job.startedAt || 'Waiting'}`);\n this.info(` Ended: ${job.completedAt || 'Running'}`);\n this.info(` Queue: ${job.queue}`);\n } catch (error: any) {\n this.error(`Failed to get job: ${error.message}`);\n }\n }\n}\n"],"mappings":";;;;;;AACA,SAAS,mBAAmB;AAG5B,IAAqB,iBAArB,cAA4C,YAAY;AAAA,EACpD,OAAO,cAAc;AAAA,EAErB,OAAO,OAAO;AAAA,IACV,MAAM;AAAA,MACF;AAAA,QACI,MAAM;AAAA,QACN,UAAU;AAAA,QACV,aAAa;AAAA,MACjB;AAAA,MACA;AAAA,QACI,MAAM;AAAA,QACN,UAAU;AAAA,QACV,aAAa;AAAA,MACjB;AAAA,MACA;AAAA,QACI,MAAM;AAAA,QACN,UAAU;AAAA,QACV,aAAa;AAAA,MACjB;AAAA,MACA;AAAA,QACI,MAAM;AAAA,QACN,UAAU;AAAA,QACV,aAAa;AAAA,MACjB;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,MAAM,IAAI,SAAc;AACpB,UAAM,SAAS,UAAU;AACzB,UAAM,EAAE,QAAQ,WAAW,UAAU,MAAM,IAAI;AAC/C,UAAM,MAAM,SAAS,QAAQ,EAAE;AAC/B,UAAM,MAAM,SAAS,WAAW,EAAE;AAClC,UAAM,MAAM,SAAS,UAAU,EAAE;AACjC,UAAM,MAAM,SAAS,OAAO,EAAE;AAE9B,QAAI,MAAM,GAAG,KAAK,MAAM,GAAG,KAAK,MAAM,GAAG,KAAK,MAAM,GAAG,GAAG;AACtD,WAAK,MAAM,sBAAsB;AACjC;AAAA,IACJ;AAEA,QAAI;AACA,YAAM,MAAM,MAAM,OAAO,KAAK,IAAI,KAAK,KAAK,KAAK,GAAG;AACpD,WAAK,KAAK,cAAc;AACxB,WAAK,KAAK,cAAc,IAAI,EAAE,EAAE;AAChC,WAAK,KAAK,cAAc,IAAI,IAAI,EAAE;AAClC,WAAK,KAAK,cAAc,IAAI,MAAM,EAAE;AACpC,WAAK,KAAK,cAAc,IAAI,aAAa,SAAS,EAAE;AACpD,WAAK,KAAK,cAAc,IAAI,eAAe,SAAS,EAAE;AACtD,WAAK,KAAK,cAAc,IAAI,KAAK,EAAE;AAAA,IACvC,SAAS,OAAY;AACjB,WAAK,MAAM,sBAAsB,MAAM,OAAO,EAAE;AAAA,IACpD;AAAA,EACJ;AACJ;","names":[]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { BaseCommand } from '@nexical/cli-core';
|
|
2
|
+
|
|
3
|
+
declare class JobsListCommand extends BaseCommand {
|
|
4
|
+
static description: string;
|
|
5
|
+
static args: {
|
|
6
|
+
args: {
|
|
7
|
+
name: string;
|
|
8
|
+
required: boolean;
|
|
9
|
+
description: string;
|
|
10
|
+
}[];
|
|
11
|
+
};
|
|
12
|
+
run(options: any): Promise<void>;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export { JobsListCommand as default };
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { createRequire } from "module"; const require = createRequire(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
getClient
|
|
4
|
+
} from "../../../chunk-FDJVHO4O.js";
|
|
5
|
+
|
|
6
|
+
// src/commands/job/list.ts
|
|
7
|
+
import { BaseCommand } from "@nexical/cli-core";
|
|
8
|
+
var JobsListCommand = class extends BaseCommand {
|
|
9
|
+
static description = "List jobs for a branch";
|
|
10
|
+
static args = {
|
|
11
|
+
args: [
|
|
12
|
+
{
|
|
13
|
+
name: "teamId",
|
|
14
|
+
required: true,
|
|
15
|
+
description: "Team ID"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
name: "projectId",
|
|
19
|
+
required: true,
|
|
20
|
+
description: "Project ID"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
name: "branchId",
|
|
24
|
+
required: true,
|
|
25
|
+
description: "Branch ID"
|
|
26
|
+
}
|
|
27
|
+
]
|
|
28
|
+
};
|
|
29
|
+
async run(options) {
|
|
30
|
+
const client = getClient();
|
|
31
|
+
const { teamId, projectId, branchId } = options;
|
|
32
|
+
const tid = parseInt(teamId, 10);
|
|
33
|
+
const pid = parseInt(projectId, 10);
|
|
34
|
+
const bid = parseInt(branchId, 10);
|
|
35
|
+
if (isNaN(tid) || isNaN(pid) || isNaN(bid)) {
|
|
36
|
+
this.error("IDs must be numbers.");
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
try {
|
|
40
|
+
const jobs = await client.jobs.list(tid, pid, bid);
|
|
41
|
+
if (jobs.length === 0) {
|
|
42
|
+
this.info("No jobs found.");
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
this.info(`Jobs for Branch ${bid}:`);
|
|
46
|
+
for (const job of jobs) {
|
|
47
|
+
this.info(`${job.id} - ${job.type} [${job.status}] (Started: ${job.startedAt || "Waiting"})`);
|
|
48
|
+
}
|
|
49
|
+
} catch (error) {
|
|
50
|
+
this.error(`Failed to list jobs: ${error.message}`);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
export {
|
|
55
|
+
JobsListCommand as default
|
|
56
|
+
};
|
|
57
|
+
//# sourceMappingURL=list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/commands/job/list.ts"],"sourcesContent":["\nimport { BaseCommand } from '@nexical/cli-core';\nimport { getClient } from '../../utils/nexical-client.js';\n\nexport default class JobsListCommand extends BaseCommand {\n static description = 'List jobs for a branch';\n\n static args = {\n args: [\n {\n name: 'teamId',\n required: true,\n description: 'Team ID',\n },\n {\n name: 'projectId',\n required: true,\n description: 'Project ID',\n },\n {\n name: 'branchId',\n required: true,\n description: 'Branch ID',\n },\n ],\n };\n\n async run(options: any) {\n const client = getClient();\n const { teamId, projectId, branchId } = options;\n const tid = parseInt(teamId, 10);\n const pid = parseInt(projectId, 10);\n const bid = parseInt(branchId, 10);\n\n if (isNaN(tid) || isNaN(pid) || isNaN(bid)) {\n this.error('IDs must be numbers.');\n return;\n }\n\n try {\n const jobs = await client.jobs.list(tid, pid, bid);\n\n if (jobs.length === 0) {\n this.info('No jobs found.');\n return;\n }\n\n this.info(`Jobs for Branch ${bid}:`);\n for (const job of jobs) {\n this.info(`${job.id} - ${job.type} [${job.status}] (Started: ${job.startedAt || 'Waiting'})`);\n }\n } catch (error: any) {\n this.error(`Failed to list jobs: ${error.message}`);\n }\n }\n}\n"],"mappings":";;;;;;AACA,SAAS,mBAAmB;AAG5B,IAAqB,kBAArB,cAA6C,YAAY;AAAA,EACrD,OAAO,cAAc;AAAA,EAErB,OAAO,OAAO;AAAA,IACV,MAAM;AAAA,MACF;AAAA,QACI,MAAM;AAAA,QACN,UAAU;AAAA,QACV,aAAa;AAAA,MACjB;AAAA,MACA;AAAA,QACI,MAAM;AAAA,QACN,UAAU;AAAA,QACV,aAAa;AAAA,MACjB;AAAA,MACA;AAAA,QACI,MAAM;AAAA,QACN,UAAU;AAAA,QACV,aAAa;AAAA,MACjB;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,MAAM,IAAI,SAAc;AACpB,UAAM,SAAS,UAAU;AACzB,UAAM,EAAE,QAAQ,WAAW,SAAS,IAAI;AACxC,UAAM,MAAM,SAAS,QAAQ,EAAE;AAC/B,UAAM,MAAM,SAAS,WAAW,EAAE;AAClC,UAAM,MAAM,SAAS,UAAU,EAAE;AAEjC,QAAI,MAAM,GAAG,KAAK,MAAM,GAAG,KAAK,MAAM,GAAG,GAAG;AACxC,WAAK,MAAM,sBAAsB;AACjC;AAAA,IACJ;AAEA,QAAI;AACA,YAAM,OAAO,MAAM,OAAO,KAAK,KAAK,KAAK,KAAK,GAAG;AAEjD,UAAI,KAAK,WAAW,GAAG;AACnB,aAAK,KAAK,gBAAgB;AAC1B;AAAA,MACJ;AAEA,WAAK,KAAK,mBAAmB,GAAG,GAAG;AACnC,iBAAW,OAAO,MAAM;AACpB,aAAK,KAAK,GAAG,IAAI,EAAE,MAAM,IAAI,IAAI,KAAK,IAAI,MAAM,eAAe,IAAI,aAAa,SAAS,GAAG;AAAA,MAChG;AAAA,IACJ,SAAS,OAAY;AACjB,WAAK,MAAM,wBAAwB,MAAM,OAAO,EAAE;AAAA,IACtD;AAAA,EACJ;AACJ;","names":[]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { BaseCommand } from '@nexical/cli-core';
|
|
2
|
+
|
|
3
|
+
declare class JobsLogsCommand extends BaseCommand {
|
|
4
|
+
static description: string;
|
|
5
|
+
static args: {
|
|
6
|
+
args: {
|
|
7
|
+
name: string;
|
|
8
|
+
required: boolean;
|
|
9
|
+
description: string;
|
|
10
|
+
}[];
|
|
11
|
+
};
|
|
12
|
+
run(options: any): Promise<void>;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export { JobsLogsCommand as default };
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { createRequire } from "module"; const require = createRequire(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
getClient
|
|
4
|
+
} from "../../../chunk-FDJVHO4O.js";
|
|
5
|
+
|
|
6
|
+
// src/commands/job/logs.ts
|
|
7
|
+
import { BaseCommand } from "@nexical/cli-core";
|
|
8
|
+
var JobsLogsCommand = class extends BaseCommand {
|
|
9
|
+
static description = "Get logs for a job";
|
|
10
|
+
static args = {
|
|
11
|
+
args: [
|
|
12
|
+
{
|
|
13
|
+
name: "teamId",
|
|
14
|
+
required: true,
|
|
15
|
+
description: "Team ID"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
name: "projectId",
|
|
19
|
+
required: true,
|
|
20
|
+
description: "Project ID"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
name: "branchId",
|
|
24
|
+
required: true,
|
|
25
|
+
description: "Branch ID"
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
name: "jobId",
|
|
29
|
+
required: true,
|
|
30
|
+
description: "Job ID"
|
|
31
|
+
}
|
|
32
|
+
]
|
|
33
|
+
};
|
|
34
|
+
async run(options) {
|
|
35
|
+
const client = getClient();
|
|
36
|
+
const { teamId, projectId, branchId, jobId } = options;
|
|
37
|
+
const tid = parseInt(teamId, 10);
|
|
38
|
+
const pid = parseInt(projectId, 10);
|
|
39
|
+
const bid = parseInt(branchId, 10);
|
|
40
|
+
const jid = parseInt(jobId, 10);
|
|
41
|
+
if (isNaN(tid) || isNaN(pid) || isNaN(bid) || isNaN(jid)) {
|
|
42
|
+
this.error("IDs must be numbers.");
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
try {
|
|
46
|
+
const logs = await client.jobs.getLogs(tid, pid, bid, jid);
|
|
47
|
+
this.info(`Logs for Job ${jid}:`);
|
|
48
|
+
for (const log of logs) {
|
|
49
|
+
const timestamp = new Date(log.timestamp).toLocaleTimeString();
|
|
50
|
+
const color = log.level === "error" ? "red" : log.level === "warn" ? "yellow" : "white";
|
|
51
|
+
if (log.level === "error") {
|
|
52
|
+
this.error(`[${timestamp}] ${log.message}`);
|
|
53
|
+
} else if (log.level === "warn") {
|
|
54
|
+
this.warn(`[${timestamp}] ${log.message}`);
|
|
55
|
+
} else {
|
|
56
|
+
this.info(`[${timestamp}] ${log.message}`);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
} catch (error) {
|
|
60
|
+
this.error(`Failed to get logs: ${error.message}`);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
export {
|
|
65
|
+
JobsLogsCommand as default
|
|
66
|
+
};
|
|
67
|
+
//# sourceMappingURL=logs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/commands/job/logs.ts"],"sourcesContent":["\nimport { BaseCommand } from '@nexical/cli-core';\nimport { getClient } from '../../utils/nexical-client.js';\n\nexport default class JobsLogsCommand extends BaseCommand {\n static description = 'Get logs for a job';\n\n static args = {\n args: [\n {\n name: 'teamId',\n required: true,\n description: 'Team ID',\n },\n {\n name: 'projectId',\n required: true,\n description: 'Project ID',\n },\n {\n name: 'branchId',\n required: true,\n description: 'Branch ID',\n },\n {\n name: 'jobId',\n required: true,\n description: 'Job ID',\n },\n ],\n };\n\n async run(options: any) {\n const client = getClient();\n const { teamId, projectId, branchId, jobId } = options;\n const tid = parseInt(teamId, 10);\n const pid = parseInt(projectId, 10);\n const bid = parseInt(branchId, 10);\n const jid = parseInt(jobId, 10);\n\n if (isNaN(tid) || isNaN(pid) || isNaN(bid) || isNaN(jid)) {\n this.error('IDs must be numbers.');\n return;\n }\n\n try {\n const logs = await client.jobs.getLogs(tid, pid, bid, jid);\n\n this.info(`Logs for Job ${jid}:`);\n // Assuming logs is an array of JobLog objects\n for (const log of (logs as any)) { // Casting because SDK return type might be generic array\n const timestamp = new Date(log.timestamp).toLocaleTimeString();\n const color = log.level === 'error' ? 'red' : log.level === 'warn' ? 'yellow' : 'white';\n\n if (log.level === 'error') {\n this.error(`[${timestamp}] ${log.message}`);\n } else if (log.level === 'warn') {\n this.warn(`[${timestamp}] ${log.message}`);\n } else {\n this.info(`[${timestamp}] ${log.message}`);\n }\n }\n } catch (error: any) {\n this.error(`Failed to get logs: ${error.message}`);\n }\n }\n}\n"],"mappings":";;;;;;AACA,SAAS,mBAAmB;AAG5B,IAAqB,kBAArB,cAA6C,YAAY;AAAA,EACrD,OAAO,cAAc;AAAA,EAErB,OAAO,OAAO;AAAA,IACV,MAAM;AAAA,MACF;AAAA,QACI,MAAM;AAAA,QACN,UAAU;AAAA,QACV,aAAa;AAAA,MACjB;AAAA,MACA;AAAA,QACI,MAAM;AAAA,QACN,UAAU;AAAA,QACV,aAAa;AAAA,MACjB;AAAA,MACA;AAAA,QACI,MAAM;AAAA,QACN,UAAU;AAAA,QACV,aAAa;AAAA,MACjB;AAAA,MACA;AAAA,QACI,MAAM;AAAA,QACN,UAAU;AAAA,QACV,aAAa;AAAA,MACjB;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,MAAM,IAAI,SAAc;AACpB,UAAM,SAAS,UAAU;AACzB,UAAM,EAAE,QAAQ,WAAW,UAAU,MAAM,IAAI;AAC/C,UAAM,MAAM,SAAS,QAAQ,EAAE;AAC/B,UAAM,MAAM,SAAS,WAAW,EAAE;AAClC,UAAM,MAAM,SAAS,UAAU,EAAE;AACjC,UAAM,MAAM,SAAS,OAAO,EAAE;AAE9B,QAAI,MAAM,GAAG,KAAK,MAAM,GAAG,KAAK,MAAM,GAAG,KAAK,MAAM,GAAG,GAAG;AACtD,WAAK,MAAM,sBAAsB;AACjC;AAAA,IACJ;AAEA,QAAI;AACA,YAAM,OAAO,MAAM,OAAO,KAAK,QAAQ,KAAK,KAAK,KAAK,GAAG;AAEzD,WAAK,KAAK,gBAAgB,GAAG,GAAG;AAEhC,iBAAW,OAAQ,MAAc;AAC7B,cAAM,YAAY,IAAI,KAAK,IAAI,SAAS,EAAE,mBAAmB;AAC7D,cAAM,QAAQ,IAAI,UAAU,UAAU,QAAQ,IAAI,UAAU,SAAS,WAAW;AAEhF,YAAI,IAAI,UAAU,SAAS;AACvB,eAAK,MAAM,IAAI,SAAS,KAAK,IAAI,OAAO,EAAE;AAAA,QAC9C,WAAW,IAAI,UAAU,QAAQ;AAC7B,eAAK,KAAK,IAAI,SAAS,KAAK,IAAI,OAAO,EAAE;AAAA,QAC7C,OAAO;AACH,eAAK,KAAK,IAAI,SAAS,KAAK,IAAI,OAAO,EAAE;AAAA,QAC7C;AAAA,MACJ;AAAA,IACJ,SAAS,OAAY;AACjB,WAAK,MAAM,uBAAuB,MAAM,OAAO,EAAE;AAAA,IACrD;AAAA,EACJ;AACJ;","names":[]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { BaseCommand } from '@nexical/cli-core';
|
|
2
|
+
|
|
3
|
+
declare class JobsTriggerCommand extends BaseCommand {
|
|
4
|
+
static description: string;
|
|
5
|
+
static args: {
|
|
6
|
+
args: {
|
|
7
|
+
name: string;
|
|
8
|
+
required: boolean;
|
|
9
|
+
description: string;
|
|
10
|
+
}[];
|
|
11
|
+
options: {
|
|
12
|
+
name: string;
|
|
13
|
+
description: string;
|
|
14
|
+
}[];
|
|
15
|
+
};
|
|
16
|
+
run(options: any): Promise<void>;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export { JobsTriggerCommand as default };
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { createRequire } from "module"; const require = createRequire(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
getClient
|
|
4
|
+
} from "../../../chunk-FDJVHO4O.js";
|
|
5
|
+
|
|
6
|
+
// src/commands/job/trigger.ts
|
|
7
|
+
import { BaseCommand } from "@nexical/cli-core";
|
|
8
|
+
var JobsTriggerCommand = class extends BaseCommand {
|
|
9
|
+
static description = "Trigger a new job";
|
|
10
|
+
static args = {
|
|
11
|
+
args: [
|
|
12
|
+
{
|
|
13
|
+
name: "teamId",
|
|
14
|
+
required: true,
|
|
15
|
+
description: "Team ID"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
name: "projectId",
|
|
19
|
+
required: true,
|
|
20
|
+
description: "Project ID"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
name: "branchId",
|
|
24
|
+
required: true,
|
|
25
|
+
description: "Branch ID"
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
name: "type",
|
|
29
|
+
required: true,
|
|
30
|
+
description: "Job type (e.g., deploy, build)"
|
|
31
|
+
}
|
|
32
|
+
],
|
|
33
|
+
options: [
|
|
34
|
+
{
|
|
35
|
+
name: "--input <json>",
|
|
36
|
+
description: "Input JSON string"
|
|
37
|
+
}
|
|
38
|
+
]
|
|
39
|
+
};
|
|
40
|
+
async run(options) {
|
|
41
|
+
const client = getClient();
|
|
42
|
+
const { teamId, projectId, branchId, type, input } = options;
|
|
43
|
+
const tid = parseInt(teamId, 10);
|
|
44
|
+
const pid = parseInt(projectId, 10);
|
|
45
|
+
const bid = parseInt(branchId, 10);
|
|
46
|
+
if (isNaN(tid) || isNaN(pid) || isNaN(bid)) {
|
|
47
|
+
this.error("IDs must be numbers.");
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
let inputs = {};
|
|
51
|
+
if (input) {
|
|
52
|
+
try {
|
|
53
|
+
inputs = JSON.parse(input);
|
|
54
|
+
} catch (e) {
|
|
55
|
+
this.error("Invalid JSON inputs.");
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
try {
|
|
60
|
+
const job = await client.jobs.create(tid, pid, bid, {
|
|
61
|
+
type,
|
|
62
|
+
inputs
|
|
63
|
+
});
|
|
64
|
+
this.success(`Job ${job.id} triggered successfully!`);
|
|
65
|
+
this.info(`Status: ${job.status}`);
|
|
66
|
+
} catch (error) {
|
|
67
|
+
this.error(`Failed to trigger job: ${error.message}`);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
export {
|
|
72
|
+
JobsTriggerCommand as default
|
|
73
|
+
};
|
|
74
|
+
//# sourceMappingURL=trigger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/commands/job/trigger.ts"],"sourcesContent":["\nimport { BaseCommand } from '@nexical/cli-core';\nimport { getClient } from '../../utils/nexical-client.js';\n\nexport default class JobsTriggerCommand extends BaseCommand {\n static description = 'Trigger a new job';\n\n static args = {\n args: [\n {\n name: 'teamId',\n required: true,\n description: 'Team ID',\n },\n {\n name: 'projectId',\n required: true,\n description: 'Project ID',\n },\n {\n name: 'branchId',\n required: true,\n description: 'Branch ID',\n },\n {\n name: 'type',\n required: true,\n description: 'Job type (e.g., deploy, build)',\n },\n ],\n options: [\n {\n name: '--input <json>',\n description: 'Input JSON string',\n },\n ],\n };\n\n async run(options: any) {\n const client = getClient();\n const { teamId, projectId, branchId, type, input } = options;\n const tid = parseInt(teamId, 10);\n const pid = parseInt(projectId, 10);\n const bid = parseInt(branchId, 10);\n\n if (isNaN(tid) || isNaN(pid) || isNaN(bid)) {\n this.error('IDs must be numbers.');\n return;\n }\n\n let inputs = {};\n if (input) {\n try {\n inputs = JSON.parse(input);\n } catch (e) {\n this.error('Invalid JSON inputs.');\n return;\n }\n }\n\n try {\n const job = await client.jobs.create(tid, pid, bid, {\n type,\n inputs,\n });\n\n this.success(`Job ${job.id} triggered successfully!`);\n this.info(`Status: ${job.status}`);\n } catch (error: any) {\n this.error(`Failed to trigger job: ${error.message}`);\n }\n }\n}\n"],"mappings":";;;;;;AACA,SAAS,mBAAmB;AAG5B,IAAqB,qBAArB,cAAgD,YAAY;AAAA,EACxD,OAAO,cAAc;AAAA,EAErB,OAAO,OAAO;AAAA,IACV,MAAM;AAAA,MACF;AAAA,QACI,MAAM;AAAA,QACN,UAAU;AAAA,QACV,aAAa;AAAA,MACjB;AAAA,MACA;AAAA,QACI,MAAM;AAAA,QACN,UAAU;AAAA,QACV,aAAa;AAAA,MACjB;AAAA,MACA;AAAA,QACI,MAAM;AAAA,QACN,UAAU;AAAA,QACV,aAAa;AAAA,MACjB;AAAA,MACA;AAAA,QACI,MAAM;AAAA,QACN,UAAU;AAAA,QACV,aAAa;AAAA,MACjB;AAAA,IACJ;AAAA,IACA,SAAS;AAAA,MACL;AAAA,QACI,MAAM;AAAA,QACN,aAAa;AAAA,MACjB;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,MAAM,IAAI,SAAc;AACpB,UAAM,SAAS,UAAU;AACzB,UAAM,EAAE,QAAQ,WAAW,UAAU,MAAM,MAAM,IAAI;AACrD,UAAM,MAAM,SAAS,QAAQ,EAAE;AAC/B,UAAM,MAAM,SAAS,WAAW,EAAE;AAClC,UAAM,MAAM,SAAS,UAAU,EAAE;AAEjC,QAAI,MAAM,GAAG,KAAK,MAAM,GAAG,KAAK,MAAM,GAAG,GAAG;AACxC,WAAK,MAAM,sBAAsB;AACjC;AAAA,IACJ;AAEA,QAAI,SAAS,CAAC;AACd,QAAI,OAAO;AACP,UAAI;AACA,iBAAS,KAAK,MAAM,KAAK;AAAA,MAC7B,SAAS,GAAG;AACR,aAAK,MAAM,sBAAsB;AACjC;AAAA,MACJ;AAAA,IACJ;AAEA,QAAI;AACA,YAAM,MAAM,MAAM,OAAO,KAAK,OAAO,KAAK,KAAK,KAAK;AAAA,QAChD;AAAA,QACA;AAAA,MACJ,CAAC;AAED,WAAK,QAAQ,OAAO,IAAI,EAAE,0BAA0B;AACpD,WAAK,KAAK,WAAW,IAAI,MAAM,EAAE;AAAA,IACrC,SAAS,OAAY;AACjB,WAAK,MAAM,0BAA0B,MAAM,OAAO,EAAE;AAAA,IACxD;AAAA,EACJ;AACJ;","names":[]}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { createRequire } from "module"; const require = createRequire(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
getClient,
|
|
4
|
+
saveToken
|
|
5
|
+
} from "../../chunk-FDJVHO4O.js";
|
|
6
|
+
|
|
7
|
+
// src/commands/login.ts
|
|
8
|
+
import { BaseCommand } from "@nexical/cli-core";
|
|
9
|
+
var LoginCommand = class extends BaseCommand {
|
|
10
|
+
static description = "Authenticate with Nexical via Device Flow";
|
|
11
|
+
async run() {
|
|
12
|
+
const client = getClient();
|
|
13
|
+
this.info("Starting device authentication...");
|
|
14
|
+
try {
|
|
15
|
+
const token = await client.auth.authenticateDevice("nexical-cli", (userCode, verificationUri) => {
|
|
16
|
+
this.notice(`Please visit: ${verificationUri}`);
|
|
17
|
+
this.notice(`And enter code: ${userCode}`);
|
|
18
|
+
});
|
|
19
|
+
saveToken(token);
|
|
20
|
+
client.setToken(token);
|
|
21
|
+
const user = await client.users.me();
|
|
22
|
+
this.success(`Successfully logged in as ${user.fullName} (${user.email})`);
|
|
23
|
+
} catch (error) {
|
|
24
|
+
this.error(`Login failed: ${error.message}`);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
export {
|
|
29
|
+
LoginCommand as default
|
|
30
|
+
};
|
|
31
|
+
//# sourceMappingURL=login.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/commands/login.ts"],"sourcesContent":["\nimport { BaseCommand } from '@nexical/cli-core';\nimport { getClient, saveToken } from '../utils/nexical-client.js';\n\nexport default class LoginCommand extends BaseCommand {\n static description = 'Authenticate with Nexical via Device Flow';\n\n async run() {\n const client = getClient();\n\n this.info('Starting device authentication...');\n\n try {\n const token = await client.auth.authenticateDevice('nexical-cli', (userCode, verificationUri) => {\n this.notice(`Please visit: ${verificationUri}`);\n this.notice(`And enter code: ${userCode}`);\n\n // Optionally, we could try to open the browser here\n // import open from 'open'; open(verificationUri);\n });\n\n saveToken(token);\n client.setToken(token);\n\n const user = await client.users.me();\n this.success(`Successfully logged in as ${user.fullName} (${user.email})`);\n } catch (error: any) {\n this.error(`Login failed: ${error.message}`);\n }\n }\n}\n"],"mappings":";;;;;;;AACA,SAAS,mBAAmB;AAG5B,IAAqB,eAArB,cAA0C,YAAY;AAAA,EAClD,OAAO,cAAc;AAAA,EAErB,MAAM,MAAM;AACR,UAAM,SAAS,UAAU;AAEzB,SAAK,KAAK,mCAAmC;AAE7C,QAAI;AACA,YAAM,QAAQ,MAAM,OAAO,KAAK,mBAAmB,eAAe,CAAC,UAAU,oBAAoB;AAC7F,aAAK,OAAO,iBAAiB,eAAe,EAAE;AAC9C,aAAK,OAAO,mBAAmB,QAAQ,EAAE;AAAA,MAI7C,CAAC;AAED,gBAAU,KAAK;AACf,aAAO,SAAS,KAAK;AAErB,YAAM,OAAO,MAAM,OAAO,MAAM,GAAG;AACnC,WAAK,QAAQ,6BAA6B,KAAK,QAAQ,KAAK,KAAK,KAAK,GAAG;AAAA,IAC7E,SAAS,OAAY;AACjB,WAAK,MAAM,iBAAiB,MAAM,OAAO,EAAE;AAAA,IAC/C;AAAA,EACJ;AACJ;","names":[]}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { BaseCommand } from '@nexical/cli-core';
|
|
2
|
+
|
|
3
|
+
declare class ProjectsCreateCommand extends BaseCommand {
|
|
4
|
+
static description: string;
|
|
5
|
+
static args: {
|
|
6
|
+
args: {
|
|
7
|
+
name: string;
|
|
8
|
+
required: boolean;
|
|
9
|
+
description: string;
|
|
10
|
+
}[];
|
|
11
|
+
options: ({
|
|
12
|
+
name: string;
|
|
13
|
+
description: string;
|
|
14
|
+
default?: undefined;
|
|
15
|
+
} | {
|
|
16
|
+
name: string;
|
|
17
|
+
description: string;
|
|
18
|
+
default: string;
|
|
19
|
+
})[];
|
|
20
|
+
};
|
|
21
|
+
run(options: any): Promise<void>;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export { ProjectsCreateCommand as default };
|