@unibridge/cli 0.5.0 → 0.8.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.
@@ -1 +1 @@
1
- {"version":3,"file":"scene.js","sourceRoot":"","sources":["../../src/commands/scene.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scene.js","sourceRoot":"","sources":["../../src/commands/scene.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAQxD,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,UAAmB,EACnB,IAAqB;IAErB,MAAM,aAAa,CACjB,UAAU,EACV,IAAI,EACJ,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE;QACjB,MAAM,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;QAC3C,MAAM,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;QAC3C,MAAM,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;IAC/D,CAAC,CACF,CAAA;AACH,CAAC;AAQD,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,IAAY,EACZ,UAAmB,EACnB,IAAmB;IAEnB,MAAM,aAAa,CACjB,UAAU,EACV,IAAI,EACJ,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EACrB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE;QACjB,MAAM,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;QAC3C,MAAM,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;QAC3C,MAAM,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;IAC/D,CAAC,CACF,CAAA;AACH,CAAC;AAyBD,SAAS,mBAAmB,CAC1B,KAAyB,EACzB,KAAa,EACb,YAAoB,EACpB,OAAe;IAEf,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QAClB,OAAO,YAAY,CAAA;IACrB,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;IACzC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,OAAO,EAAE,CAAC;QACjD,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,kCAAkC,CAAC,CAAA;QAC7D,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,0BAA0B,OAAO,GAAG,CAAC,CAAA;IAC/D,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,IAA6B,EAC7B,UAAmB,EACnB,IAAmB;IAEnB,MAAM,KAAK,GAAmB;QAC5B,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,KAAK,EAAE,mBAAmB,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;QACxD,MAAM,EAAE,mBAAmB,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;KAC3D,CAAA;IAED,MAAM,aAAa,CACjB,UAAU,EACV,IAAI,EACJ,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EACtB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE;QACjB,MAAM,CAAC,GAAG,CAAC,WAAW,MAAM,CAAC,MAAM,CAAC,MAAM,OAAO,MAAM,CAAC,KAAK,WAAW,MAAM,CAAC,KAAK,YAAY,MAAM,CAAC,MAAM,GAAG,CAAC,CAAA;QACjH,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClC,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;QAC7B,CAAC;IACH,CAAC,CACF,CAAA;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,IAAkC,EAClC,UAAmB,EACnB,IAAwB;IAExB,MAAM,KAAK,GAAwB;QACjC,KAAK,EAAE,mBAAmB,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;QACzD,MAAM,EAAE,mBAAmB,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;KAC3D,CAAA;IAED,MAAM,aAAa,CACjB,UAAU,EACV,IAAI,EACJ,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAC3B,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE;QACjB,MAAM,CAAC,GAAG,CAAC,cAAc,MAAM,CAAC,KAAK,CAAC,MAAM,OAAO,MAAM,CAAC,KAAK,WAAW,MAAM,CAAC,KAAK,YAAY,MAAM,CAAC,MAAM,GAAG,CAAC,CAAA;QACnH,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YAChC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACtC,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,SAAS,IAAI,CAAC,UAAU,aAAa,IAAI,CAAC,YAAY,GAAG,CAAC,CAAA;QACtI,CAAC;IACH,CAAC,CACF,CAAA;AACH,CAAC;AAQD,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,IAAY,EACZ,UAAmB,EACnB,IAAqB;IAErB,MAAM,aAAa,CACjB,UAAU,EACV,IAAI,EACJ,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EACvB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE;QACjB,MAAM,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;QAC3C,MAAM,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;QAC3C,MAAM,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;IAC/D,CAAC,CACF,CAAA;AACH,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAAgB;IAC5C,MAAM,KAAK,GAAG,OAAO;SAClB,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,8BAA8B,CAAC,CAAA;IAE9C,KAAK;SACF,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,uBAAuB,CAAC;SACpC,MAAM,CAAC,KAAK,EAAE,KAA4B,EAAE,OAAgB,EAAE,EAAE;QAC/D,MAAM,eAAe,CACnB,OAAO,EACP,EAAE,aAAa,EAAE,IAAI,EAAE,EACvB,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;YACpB,MAAM,iBAAiB,CAAC,GAAG,CAAC,UAAU,EAAE;gBACtC,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE;gBAClC,OAAO;gBACP,IAAI,EAAE,CAAC,QAAQ,EAAE,EAAE;oBACjB,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAA;gBAC7B,CAAC;aACF,CAAC,CAAA;QACJ,CAAC,CACF,CAAA;IACH,CAAC,CAAC,CAAA;IAEJ,KAAK;SACF,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,4CAA4C,CAAC;SACzD,MAAM,CAAC,iBAAiB,EAAE,gCAAgC,CAAC;SAC3D,MAAM,CAAC,kBAAkB,EAAE,0CAA0C,CAAC;SACtE,MAAM,CAAC,mBAAmB,EAAE,0CAA0C,CAAC;SACvE,MAAM,CAAC,KAAK,EAAE,IAA6B,EAAE,OAAgB,EAAE,EAAE;QAChE,MAAM,eAAe,CACnB,OAAO,EACP,EAAE,aAAa,EAAE,IAAI,EAAE,EACvB,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;YACpB,MAAM,eAAe,CAAC,IAAI,EAAE,GAAG,CAAC,UAAU,EAAE;gBAC1C,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC;gBACxC,OAAO;gBACP,IAAI,EAAE,CAAC,QAAQ,EAAE,EAAE;oBACjB,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAA;gBAC7B,CAAC;aACF,CAAC,CAAA;QACJ,CAAC,CACF,CAAA;IACH,CAAC,CAAC,CAAA;IAEJ,KAAK;SACF,OAAO,CAAC,WAAW,CAAC;SACpB,WAAW,CAAC,+DAA+D,CAAC;SAC5E,MAAM,CAAC,kBAAkB,EAAE,oDAAoD,CAAC;SAChF,MAAM,CAAC,mBAAmB,EAAE,0CAA0C,CAAC;SACvE,MAAM,CAAC,KAAK,EAAE,IAAkC,EAAE,OAAgB,EAAE,EAAE;QACrE,MAAM,eAAe,CACnB,OAAO,EACP,EAAE,aAAa,EAAE,IAAI,EAAE,EACvB,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;YACpB,MAAM,oBAAoB,CAAC,IAAI,EAAE,GAAG,CAAC,UAAU,EAAE;gBAC/C,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC;gBAClD,OAAO;gBACP,IAAI,EAAE,CAAC,QAAQ,EAAE,EAAE;oBACjB,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAA;gBAC7B,CAAC;aACF,CAAC,CAAA;QACJ,CAAC,CACF,CAAA;IACH,CAAC,CAAC,CAAA;IAEJ,KAAK;SACF,OAAO,CAAC,eAAe,CAAC;SACxB,WAAW,CAAC,+CAA+C,CAAC;SAC5D,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,KAA4B,EAAE,OAAgB,EAAE,EAAE;QAC7E,MAAM,eAAe,CACnB,OAAO,EACP,EAAE,aAAa,EAAE,IAAI,EAAE,EACvB,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;YACpB,MAAM,iBAAiB,CAAC,IAAI,EAAE,GAAG,CAAC,UAAU,EAAE;gBAC5C,MAAM,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC;gBACpD,OAAO;gBACP,IAAI,EAAE,CAAC,QAAQ,EAAE,EAAE;oBACjB,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAA;gBAC7B,CAAC;aACF,CAAC,CAAA;QACJ,CAAC,CACF,CAAA;IACH,CAAC,CAAC,CAAA;IAEJ,KAAK;SACF,OAAO,CAAC,aAAa,CAAC;SACtB,WAAW,CAAC,uCAAuC,CAAC;SACpD,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,KAA4B,EAAE,OAAgB,EAAE,EAAE;QAC7E,MAAM,eAAe,CACnB,OAAO,EACP,EAAE,aAAa,EAAE,IAAI,EAAE,EACvB,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;YACpB,MAAM,eAAe,CAAC,IAAI,EAAE,GAAG,CAAC,UAAU,EAAE;gBAC1C,IAAI,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC;gBAChD,OAAO;gBACP,IAAI,EAAE,CAAC,QAAQ,EAAE,EAAE;oBACjB,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAA;gBAC7B,CAAC;aACF,CAAC,CAAA;QACJ,CAAC,CACF,CAAA;IACH,CAAC,CAAC,CAAA;AACN,CAAC"}
@@ -0,0 +1,23 @@
1
+ import type { Command } from 'commander';
2
+ import type { TestListQuery, TestListResult, TestRunQuery, TestRunResult } from '@unibridge/sdk';
3
+ interface TestCommandOptions {
4
+ mode?: string;
5
+ filter?: string;
6
+ limit?: string;
7
+ offset?: string;
8
+ }
9
+ interface TestListDeps {
10
+ list: (query?: TestListQuery) => Promise<TestListResult>;
11
+ console: Pick<Console, 'log' | 'error'>;
12
+ exit?: (code: number) => void;
13
+ }
14
+ interface TestRunDeps {
15
+ run: (query?: TestRunQuery) => Promise<TestRunResult>;
16
+ console: Pick<Console, 'log' | 'error'>;
17
+ exit?: (code: number) => void;
18
+ }
19
+ export declare function handleTestList(opts: TestCommandOptions, jsonOutput: boolean, deps: TestListDeps): Promise<void>;
20
+ export declare function handleTestRun(opts: TestCommandOptions, jsonOutput: boolean, deps: TestRunDeps): Promise<void>;
21
+ export declare function registerTest(program: Command): void;
22
+ export {};
23
+ //# sourceMappingURL=test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../src/commands/test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACxC,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EAEd,YAAY,EACZ,aAAa,EACd,MAAM,gBAAgB,CAAA;AAIvB,UAAU,kBAAkB;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,UAAU,YAAY;IACpB,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,aAAa,KAAK,OAAO,CAAC,cAAc,CAAC,CAAA;IACxD,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,GAAG,OAAO,CAAC,CAAA;IACvC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CAC9B;AAED,UAAU,WAAW;IACnB,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,YAAY,KAAK,OAAO,CAAC,aAAa,CAAC,CAAA;IACrD,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,GAAG,OAAO,CAAC,CAAA;IACvC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CAC9B;AA0CD,wBAAsB,cAAc,CAClC,IAAI,EAAE,kBAAkB,EACxB,UAAU,EAAE,OAAO,EACnB,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,IAAI,CAAC,CAcf;AAED,wBAAsB,aAAa,CACjC,IAAI,EAAE,kBAAkB,EACxB,UAAU,EAAE,OAAO,EACnB,IAAI,EAAE,WAAW,GAChB,OAAO,CAAC,IAAI,CAAC,CAmBf;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAqDnD"}
@@ -0,0 +1,94 @@
1
+ import { runWithOutput } from "./output.js";
2
+ import { withUnityClient } from "./with-unity-client.js";
3
+ function parseMode(value) {
4
+ if (value == null) {
5
+ return undefined;
6
+ }
7
+ if (value === 'edit' || value === 'play') {
8
+ return value;
9
+ }
10
+ throw new Error('--mode must be one of: edit, play.');
11
+ }
12
+ function parseIntWithMinimum(value, label, defaultValue, minimum) {
13
+ if (value == null) {
14
+ return defaultValue;
15
+ }
16
+ const parsed = Number.parseInt(value, 10);
17
+ if (!Number.isFinite(parsed) || parsed < minimum) {
18
+ if (minimum <= 0) {
19
+ throw new Error(`${label} must be a non-negative integer.`);
20
+ }
21
+ throw new Error(`${label} must be an integer >= ${minimum}.`);
22
+ }
23
+ return parsed;
24
+ }
25
+ function parseQuery(opts) {
26
+ return {
27
+ mode: parseMode(opts.mode),
28
+ filter: opts.filter,
29
+ limit: parseIntWithMinimum(opts.limit, '--limit', 50, 1),
30
+ offset: parseIntWithMinimum(opts.offset, '--offset', 0, 0),
31
+ };
32
+ }
33
+ export async function handleTestList(opts, jsonOutput, deps) {
34
+ const query = parseQuery(opts);
35
+ await runWithOutput(jsonOutput, deps, () => deps.list(query), (result, output) => {
36
+ output.log(`Tests: ${result.tests.length} of ${result.total} (limit ${result.limit}, offset ${result.offset})`);
37
+ for (const test of result.tests) {
38
+ output.log(`${test.mode.toUpperCase()} ${test.fullName}`);
39
+ }
40
+ });
41
+ }
42
+ export async function handleTestRun(opts, jsonOutput, deps) {
43
+ const query = parseQuery(opts);
44
+ await runWithOutput(jsonOutput, deps, () => deps.run(query), (result, output) => {
45
+ output.log(`Ran ${result.total} tests`);
46
+ output.log(`Passed: ${result.passed} Failed: ${result.failed} Skipped: ${result.skipped} Inconclusive: ${result.inconclusive}`);
47
+ output.log(`Duration: ${result.durationMs}ms`);
48
+ for (const test of result.tests) {
49
+ output.log(`${test.status.toUpperCase()} ${test.fullName} (${test.durationMs}ms)`);
50
+ if (test.message) {
51
+ output.log(test.message);
52
+ }
53
+ }
54
+ });
55
+ }
56
+ export function registerTest(program) {
57
+ const test = program
58
+ .command('test')
59
+ .description('List and run Unity Test Framework tests');
60
+ const applyCommonOptions = (command) => command
61
+ .option('--mode <mode>', 'Test mode (edit|play)')
62
+ .option('--filter <text>', 'Filter by test full name substring')
63
+ .option('--limit <number>', 'Number of items to return (default: 50)')
64
+ .option('--offset <number>', 'Offset into filtered items (default: 0)');
65
+ applyCommonOptions(test
66
+ .command('list')
67
+ .description('List available tests with pagination')
68
+ .action(async (opts, command) => {
69
+ await withUnityClient(command, { requirePlugin: true }, async (client, ctx) => {
70
+ await handleTestList(opts, ctx.jsonOutput, {
71
+ list: (query) => client.testList(query),
72
+ console,
73
+ exit: (exitCode) => {
74
+ process.exitCode = exitCode;
75
+ },
76
+ });
77
+ });
78
+ }));
79
+ applyCommonOptions(test
80
+ .command('run')
81
+ .description('Run tests and return paginated results')
82
+ .action(async (opts, command) => {
83
+ await withUnityClient(command, { requirePlugin: true }, async (client, ctx) => {
84
+ await handleTestRun(opts, ctx.jsonOutput, {
85
+ run: (query) => client.testRun(query),
86
+ console,
87
+ exit: (exitCode) => {
88
+ process.exitCode = exitCode;
89
+ },
90
+ });
91
+ });
92
+ }));
93
+ }
94
+ //# sourceMappingURL=test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test.js","sourceRoot":"","sources":["../../src/commands/test.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -5,8 +5,11 @@ import { program } from 'commander';
5
5
  import { registerDomain } from "./commands/domain.js";
6
6
  import { registerInit } from "./commands/init.js";
7
7
  import { registerExecute } from "./commands/execute.js";
8
+ import { registerGameObject } from "./commands/gameobject.js";
9
+ import { registerLogs } from "./commands/logs.js";
8
10
  import { registerStatus } from "./commands/status.js";
9
11
  import { registerScene } from "./commands/scene.js";
12
+ import { registerTest } from "./commands/test.js";
10
13
  const { version } = JSON.parse(readFileSync(path.join(import.meta.dirname, '..', 'package.json'), 'utf-8'));
11
14
  program
12
15
  .name('unibridge')
@@ -18,7 +21,10 @@ program
18
21
  registerDomain(program);
19
22
  registerInit(program);
20
23
  registerExecute(program);
24
+ registerGameObject(program);
25
+ registerLogs(program);
21
26
  registerStatus(program);
22
27
  registerScene(program);
28
+ registerTest(program);
23
29
  program.parse();
24
30
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAEnD,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAC5B,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CACrD,CAAA;AAExB,OAAO;KACJ,IAAI,CAAC,WAAW,CAAC;KACjB,WAAW,CAAC,oCAAoC,CAAC;KACjD,OAAO,CAAC,OAAO,CAAC;KAChB,MAAM,CAAC,sBAAsB,EAAE,uBAAuB,CAAC;KACvD,MAAM,CAAC,QAAQ,EAAE,uBAAuB,CAAC;KACzC,MAAM,CAAC,cAAc,EAAE,0CAA0C,CAAC,CAAA;AAErE,cAAc,CAAC,OAAO,CAAC,CAAA;AACvB,YAAY,CAAC,OAAO,CAAC,CAAA;AACrB,eAAe,CAAC,OAAO,CAAC,CAAA;AACxB,cAAc,CAAC,OAAO,CAAC,CAAA;AACvB,aAAa,CAAC,OAAO,CAAC,CAAA;AAEtB,OAAO,CAAC,KAAK,EAAE,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEjD,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAC5B,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CACrD,CAAA;AAExB,OAAO;KACJ,IAAI,CAAC,WAAW,CAAC;KACjB,WAAW,CAAC,oCAAoC,CAAC;KACjD,OAAO,CAAC,OAAO,CAAC;KAChB,MAAM,CAAC,sBAAsB,EAAE,uBAAuB,CAAC;KACvD,MAAM,CAAC,QAAQ,EAAE,uBAAuB,CAAC;KACzC,MAAM,CAAC,cAAc,EAAE,0CAA0C,CAAC,CAAA;AAErE,cAAc,CAAC,OAAO,CAAC,CAAA;AACvB,YAAY,CAAC,OAAO,CAAC,CAAA;AACrB,eAAe,CAAC,OAAO,CAAC,CAAA;AACxB,kBAAkB,CAAC,OAAO,CAAC,CAAA;AAC3B,YAAY,CAAC,OAAO,CAAC,CAAA;AACrB,cAAc,CAAC,OAAO,CAAC,CAAA;AACvB,aAAa,CAAC,OAAO,CAAC,CAAA;AACtB,YAAY,CAAC,OAAO,CAAC,CAAA;AAErB,OAAO,CAAC,KAAK,EAAE,CAAA"}
package/dist/preflight.js CHANGED
@@ -11,7 +11,7 @@ export function resolveCommandProject(opts, config) {
11
11
  throw new Error('Execute is disabled for this invocation (--no-execute).');
12
12
  }
13
13
  if (config.requirePlugin && !isPluginInstalled(projectPath)) {
14
- throw new Error('com.msanatan.unibridge is not installed. Run `unibridge init` first.');
14
+ throw new Error('com.msanatan.unibridge is not installed. Run `unibridge init` (or `unibridge update`) first.');
15
15
  }
16
16
  return projectPath;
17
17
  }
@@ -1 +1 @@
1
- {"version":3,"file":"preflight.js","sourceRoot":"","sources":["../src/preflight.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAEpE,MAAM,UAAU,qBAAqB,CACnC,IAA6C,EAC7C,MAA6D;IAE7D,IAAI,WAAmB,CAAA;IACvB,IAAI,CAAC;QACH,WAAW,GAAG,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC9C,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,+EAA+E,CAAC,CAAA;IAClG,CAAC;IAED,IAAI,MAAM,CAAC,eAAe,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;QACrD,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAA;IAC5E,CAAC;IAED,IAAI,MAAM,CAAC,aAAa,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,EAAE,CAAC;QAC5D,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAA;IACzF,CAAC;IAED,OAAO,WAAW,CAAA;AACpB,CAAC"}
1
+ {"version":3,"file":"preflight.js","sourceRoot":"","sources":["../src/preflight.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAEpE,MAAM,UAAU,qBAAqB,CACnC,IAA6C,EAC7C,MAA6D;IAE7D,IAAI,WAAmB,CAAA;IACvB,IAAI,CAAC;QACH,WAAW,GAAG,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC9C,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,+EAA+E,CAAC,CAAA;IAClG,CAAC;IAED,IAAI,MAAM,CAAC,eAAe,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;QACrD,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAA;IAC5E,CAAC;IAED,IAAI,MAAM,CAAC,aAAa,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,EAAE,CAAC;QAC5D,MAAM,IAAI,KAAK,CAAC,8FAA8F,CAAC,CAAA;IACjH,CAAC;IAED,OAAO,WAAW,CAAA;AACpB,CAAC"}
package/package.json CHANGED
@@ -1,22 +1,48 @@
1
1
  {
2
2
  "name": "@unibridge/cli",
3
- "version": "0.5.0",
4
- "description": "",
3
+ "version": "0.8.0",
4
+ "description": "UniBridge is a CLI for interacting with the Unity Editor.",
5
5
  "main": "./dist/index.js",
6
6
  "scripts": {
7
7
  "test": "node --test src/*.test.ts src/**/*.test.ts",
8
8
  "build": "tsc -p tsconfig.json",
9
9
  "prepublishOnly": "npm run build"
10
10
  },
11
- "keywords": [],
12
- "author": "",
13
- "license": "ISC",
11
+ "keywords": [
12
+ "unibridge",
13
+ "unity",
14
+ "cli",
15
+ "automation",
16
+ "tooling"
17
+ ],
18
+ "author": {
19
+ "name": "Marcus Sanatan",
20
+ "url": "https://gameboymarcus.com"
21
+ },
22
+ "license": "MIT",
14
23
  "type": "module",
24
+ "repository": {
25
+ "type": "git",
26
+ "url": "git+https://github.com/msanatan/unibridge.git",
27
+ "directory": "packages/cli"
28
+ },
29
+ "homepage": "https://github.com/msanatan/unibridge/tree/main/packages/cli",
30
+ "bugs": {
31
+ "url": "https://github.com/msanatan/unibridge/issues"
32
+ },
33
+ "files": [
34
+ "dist",
35
+ "README.md",
36
+ "LICENSE"
37
+ ],
38
+ "publishConfig": {
39
+ "access": "public"
40
+ },
15
41
  "bin": {
16
42
  "unibridge": "./dist/index.js"
17
43
  },
18
44
  "dependencies": {
19
- "@unibridge/sdk": "0.5.0",
45
+ "@unibridge/sdk": "0.8.0",
20
46
  "commander": "^14.0.3"
21
47
  }
22
48
  }
@@ -1,49 +0,0 @@
1
- import type { Command } from 'commander'
2
- import type { DomainReloadResult } from '@unibridge/sdk'
3
- import { runWithOutput } from './output.ts'
4
- import { withUnityClient } from './with-unity-client.ts'
5
-
6
- interface DomainReloadDeps {
7
- reload: () => Promise<DomainReloadResult>
8
- console: Pick<Console, 'log' | 'error'>
9
- exit?: (code: number) => void
10
- }
11
-
12
- export async function handleDomainReload(
13
- jsonOutput: boolean,
14
- deps: DomainReloadDeps,
15
- ): Promise<void> {
16
- await runWithOutput(
17
- jsonOutput,
18
- deps,
19
- () => deps.reload(),
20
- (_result, output) => {
21
- output.log('Domain reload triggered.')
22
- },
23
- )
24
- }
25
-
26
- export function registerDomain(program: Command): void {
27
- const domain = program
28
- .command('domain')
29
- .description('Unity domain operations')
30
-
31
- domain
32
- .command('reload')
33
- .description('Trigger an asset refresh and domain reload')
34
- .action(async (_opts: Record<string, never>, command: Command) => {
35
- await withUnityClient(
36
- command,
37
- { requirePlugin: true },
38
- async (client, ctx) => {
39
- await handleDomainReload(ctx.jsonOutput, {
40
- reload: () => client.domainReload(),
41
- console,
42
- exit: (exitCode) => {
43
- process.exitCode = exitCode
44
- },
45
- })
46
- },
47
- )
48
- })
49
- }
@@ -1,48 +0,0 @@
1
- import type { Command } from 'commander'
2
- import { runWithOutput } from './output.ts'
3
- import { withUnityClient } from './with-unity-client.ts'
4
-
5
- interface ExecuteDeps {
6
- execute: (code: string) => Promise<unknown>
7
- console: Pick<Console, 'log' | 'error'>
8
- exit?: (code: number) => void
9
- }
10
-
11
- export async function handleExecute(
12
- code: string,
13
- jsonOutput: boolean,
14
- deps: ExecuteDeps,
15
- ): Promise<void> {
16
- await runWithOutput(
17
- jsonOutput,
18
- deps,
19
- () => deps.execute(code),
20
- (result, output) => {
21
- output.log(String(result))
22
- },
23
- )
24
- }
25
-
26
- export function registerExecute(program: Command): void {
27
- program
28
- .command('execute <code>')
29
- .description('Execute C# code in the Unity Editor')
30
- .action(async (code: string, _opts: Record<string, never>, command: Command) => {
31
- await withUnityClient(
32
- command,
33
- {
34
- requirePlugin: true,
35
- requiresExecute: true,
36
- },
37
- async (client, ctx) => {
38
- await handleExecute(code, ctx.jsonOutput, {
39
- execute: (requestCode) => client.execute(requestCode),
40
- console,
41
- exit: (exitCode) => {
42
- process.exitCode = exitCode
43
- },
44
- })
45
- },
46
- )
47
- })
48
- }
@@ -1,56 +0,0 @@
1
- import type { Command } from 'commander'
2
- import { init as sdkInit, type InitOptions, type InitResult } from '@unibridge/sdk'
3
- import { getGlobalOptions } from '../options.ts'
4
- import { runWithOutput } from './output.ts'
5
-
6
- interface InitCommandOptions {
7
- local?: string
8
- git?: string
9
- }
10
-
11
- interface InitHandlerDeps {
12
- init: (options?: InitOptions) => Promise<InitResult>
13
- console: Pick<Console, 'log' | 'error'>
14
- }
15
-
16
- export async function handleInit(
17
- opts: InitCommandOptions,
18
- jsonOutput: boolean,
19
- deps: InitHandlerDeps = { init: sdkInit, console },
20
- ): Promise<void> {
21
- const source = opts.local
22
- ? { type: 'local' as const, path: opts.local }
23
- : opts.git
24
- ? { type: 'git' as const, url: opts.git }
25
- : undefined
26
-
27
- await runWithOutput(
28
- jsonOutput,
29
- deps,
30
- () => deps.init({ source }),
31
- (result, output) => {
32
- output.log(`Found Unity ${result.unityVersion} at ${result.projectPath}`)
33
- output.log(`Installed com.msanatan.unibridge@${result.pluginVersion}`)
34
- output.log('Open Unity to load the plugin.')
35
- },
36
- )
37
- }
38
-
39
- export function registerInit(program: Command): void {
40
- program
41
- .command('init')
42
- .description('Install the unibridge plugin into a Unity project')
43
- .option('--local <path>', 'Install from a local path')
44
- .option('--git <url>', 'Install from a custom git URL')
45
- .action(async (opts: InitCommandOptions, command: Command) => {
46
- const globalOpts = getGlobalOptions(command)
47
- await handleInit(
48
- opts,
49
- globalOpts.json === true,
50
- {
51
- init: (initOpts) => sdkInit({ ...initOpts, projectPath: globalOpts.project }),
52
- console,
53
- },
54
- )
55
- })
56
- }
@@ -1,29 +0,0 @@
1
- export interface CommandOutputDeps {
2
- console: Pick<Console, 'log' | 'error'>
3
- exit?: (code: number) => void
4
- }
5
-
6
- export async function runWithOutput<TResult>(
7
- jsonOutput: boolean,
8
- deps: CommandOutputDeps,
9
- execute: () => Promise<TResult>,
10
- renderText: (result: TResult, consoleLike: Pick<Console, 'log'>) => void,
11
- ): Promise<void> {
12
- try {
13
- const result = await execute()
14
- if (jsonOutput) {
15
- deps.console.log(JSON.stringify({ success: true, result }))
16
- return
17
- }
18
-
19
- renderText(result, deps.console)
20
- } catch (error) {
21
- const message = error instanceof Error ? error.message : String(error)
22
- if (jsonOutput) {
23
- deps.console.log(JSON.stringify({ success: false, error: message }))
24
- } else {
25
- deps.console.error(`Error: ${message}`)
26
- }
27
- deps.exit?.(1)
28
- }
29
- }
@@ -1,135 +0,0 @@
1
- import type { Command } from 'commander'
2
- import type { SceneActiveResult, SceneCreateResult, SceneOpenResult } from '@unibridge/sdk'
3
- import { runWithOutput } from './output.ts'
4
- import { withUnityClient } from './with-unity-client.ts'
5
-
6
- interface SceneActiveDeps {
7
- active: () => Promise<SceneActiveResult>
8
- console: Pick<Console, 'log' | 'error'>
9
- exit?: (code: number) => void
10
- }
11
-
12
- export async function handleSceneActive(
13
- jsonOutput: boolean,
14
- deps: SceneActiveDeps,
15
- ): Promise<void> {
16
- await runWithOutput(
17
- jsonOutput,
18
- deps,
19
- () => deps.active(),
20
- (result, output) => {
21
- output.log(`Name: ${result.scene.name}`)
22
- output.log(`Path: ${result.scene.path}`)
23
- output.log(`Dirty: ${result.scene.isDirty ? 'yes' : 'no'}`)
24
- },
25
- )
26
- }
27
-
28
- interface SceneOpenDeps {
29
- open: (path: string) => Promise<SceneOpenResult>
30
- console: Pick<Console, 'log' | 'error'>
31
- exit?: (code: number) => void
32
- }
33
-
34
- export async function handleSceneOpen(
35
- path: string,
36
- jsonOutput: boolean,
37
- deps: SceneOpenDeps,
38
- ): Promise<void> {
39
- await runWithOutput(
40
- jsonOutput,
41
- deps,
42
- () => deps.open(path),
43
- (result, output) => {
44
- output.log(`Name: ${result.scene.name}`)
45
- output.log(`Path: ${result.scene.path}`)
46
- output.log(`Dirty: ${result.scene.isDirty ? 'yes' : 'no'}`)
47
- },
48
- )
49
- }
50
-
51
- interface SceneCreateDeps {
52
- create: (path: string) => Promise<SceneCreateResult>
53
- console: Pick<Console, 'log' | 'error'>
54
- exit?: (code: number) => void
55
- }
56
-
57
- export async function handleSceneCreate(
58
- path: string,
59
- jsonOutput: boolean,
60
- deps: SceneCreateDeps,
61
- ): Promise<void> {
62
- await runWithOutput(
63
- jsonOutput,
64
- deps,
65
- () => deps.create(path),
66
- (result, output) => {
67
- output.log(`Name: ${result.scene.name}`)
68
- output.log(`Path: ${result.scene.path}`)
69
- output.log(`Dirty: ${result.scene.isDirty ? 'yes' : 'no'}`)
70
- },
71
- )
72
- }
73
-
74
- export function registerScene(program: Command): void {
75
- const scene = program
76
- .command('scene')
77
- .description('Read and modify Unity scenes')
78
-
79
- scene
80
- .command('active')
81
- .description('Show the active scene')
82
- .action(async (_opts: Record<string, never>, command: Command) => {
83
- await withUnityClient(
84
- command,
85
- { requirePlugin: true },
86
- async (client, ctx) => {
87
- await handleSceneActive(ctx.jsonOutput, {
88
- active: () => client.sceneActive(),
89
- console,
90
- exit: (exitCode) => {
91
- process.exitCode = exitCode
92
- },
93
- })
94
- },
95
- )
96
- })
97
-
98
- scene
99
- .command('create <path>')
100
- .description('Create a new scene at a project-relative path')
101
- .action(async (path: string, _opts: Record<string, never>, command: Command) => {
102
- await withUnityClient(
103
- command,
104
- { requirePlugin: true },
105
- async (client, ctx) => {
106
- await handleSceneCreate(path, ctx.jsonOutput, {
107
- create: (scenePath) => client.sceneCreate(scenePath),
108
- console,
109
- exit: (exitCode) => {
110
- process.exitCode = exitCode
111
- },
112
- })
113
- },
114
- )
115
- })
116
-
117
- scene
118
- .command('open <path>')
119
- .description('Open a scene by project-relative path')
120
- .action(async (path: string, _opts: Record<string, never>, command: Command) => {
121
- await withUnityClient(
122
- command,
123
- { requirePlugin: true },
124
- async (client, ctx) => {
125
- await handleSceneOpen(path, ctx.jsonOutput, {
126
- open: (scenePath) => client.sceneOpen(scenePath),
127
- console,
128
- exit: (exitCode) => {
129
- process.exitCode = exitCode
130
- },
131
- })
132
- },
133
- )
134
- })
135
- }
@@ -1,49 +0,0 @@
1
- import type { Command } from 'commander'
2
- import type { StatusResult } from '@unibridge/sdk'
3
- import { runWithOutput } from './output.ts'
4
- import { withUnityClient } from './with-unity-client.ts'
5
-
6
- interface StatusDeps {
7
- status: () => Promise<StatusResult>
8
- console: Pick<Console, 'log' | 'error'>
9
- exit?: (code: number) => void
10
- }
11
-
12
- export async function handleStatus(
13
- jsonOutput: boolean,
14
- deps: StatusDeps,
15
- ): Promise<void> {
16
- await runWithOutput(
17
- jsonOutput,
18
- deps,
19
- () => deps.status(),
20
- (result, output) => {
21
- output.log(`Project: ${result.projectPath}`)
22
- output.log(`Unity: ${result.unityVersion}`)
23
- output.log(`Plugin: ${result.pluginVersion}`)
24
- output.log(`Scene: ${result.activeScene}`)
25
- output.log(`Mode: ${result.playMode}`)
26
- },
27
- )
28
- }
29
-
30
- export function registerStatus(program: Command): void {
31
- program
32
- .command('status')
33
- .description('Show the current state of the Unity Editor')
34
- .action(async (_opts: Record<string, never>, command: Command) => {
35
- await withUnityClient(
36
- command,
37
- { requirePlugin: true },
38
- async (client, ctx) => {
39
- await handleStatus(ctx.jsonOutput, {
40
- status: () => client.status(),
41
- console,
42
- exit: (exitCode) => {
43
- process.exitCode = exitCode
44
- },
45
- })
46
- },
47
- )
48
- })
49
- }