goke 6.8.0 → 6.9.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/dist/__test__/index.test.js +124 -0
- package/dist/__test__/just-bash.test.js +19 -0
- package/dist/__test__/types.test-d.js +37 -0
- package/dist/goke.d.ts +23 -0
- package/dist/goke.d.ts.map +1 -1
- package/dist/goke.js +8 -24
- package/dist/just-bash.d.ts +1 -1
- package/dist/just-bash.d.ts.map +1 -1
- package/dist/just-bash.js +80 -15
- package/package.json +1 -1
- package/src/__test__/index.test.ts +166 -0
- package/src/__test__/just-bash.test.ts +24 -0
- package/src/__test__/types.test-d.ts +41 -0
- package/src/goke.ts +35 -1
- package/src/just-bash.ts +92 -18
- package/README.md +0 -1254
|
@@ -1831,3 +1831,127 @@ describe('middleware', () => {
|
|
|
1831
1831
|
expect(order).toEqual(['sync1', 'async', 'sync2', 'action']);
|
|
1832
1832
|
});
|
|
1833
1833
|
});
|
|
1834
|
+
describe('use() with sub-CLI composition', () => {
|
|
1835
|
+
test('basic composition: sub-CLI command runs via parent', () => {
|
|
1836
|
+
const parent = goke('mycli');
|
|
1837
|
+
const sub = goke();
|
|
1838
|
+
let matched = '';
|
|
1839
|
+
sub
|
|
1840
|
+
.command('deploy', 'Deploy the app')
|
|
1841
|
+
.action(() => { matched = 'deploy'; });
|
|
1842
|
+
parent.use(sub);
|
|
1843
|
+
parent.parse(['node', 'bin', 'deploy'], { run: true });
|
|
1844
|
+
expect(matched).toBe('deploy');
|
|
1845
|
+
});
|
|
1846
|
+
test('multiple sub-CLIs composed together', () => {
|
|
1847
|
+
const parent = goke('mycli');
|
|
1848
|
+
const subA = goke();
|
|
1849
|
+
const subB = goke();
|
|
1850
|
+
let matched = '';
|
|
1851
|
+
subA.command('login', 'Login').action(() => { matched = 'login'; });
|
|
1852
|
+
subB.command('deploy', 'Deploy').action(() => { matched = 'deploy'; });
|
|
1853
|
+
parent.use(subA).use(subB);
|
|
1854
|
+
parent.parse(['node', 'bin', 'login'], { run: true });
|
|
1855
|
+
expect(matched).toBe('login');
|
|
1856
|
+
matched = '';
|
|
1857
|
+
parent.parse(['node', 'bin', 'deploy'], { run: true });
|
|
1858
|
+
expect(matched).toBe('deploy');
|
|
1859
|
+
});
|
|
1860
|
+
test('sub-CLI command with options and schema coercion', () => {
|
|
1861
|
+
const parent = goke('mycli');
|
|
1862
|
+
const sub = goke();
|
|
1863
|
+
let result = {};
|
|
1864
|
+
sub
|
|
1865
|
+
.command('serve', 'Start server')
|
|
1866
|
+
.option('--port <port>', z.number().describe('Port'))
|
|
1867
|
+
.option('--host <host>', z.string().describe('Host'))
|
|
1868
|
+
.action((options) => { result = options; });
|
|
1869
|
+
parent.use(sub);
|
|
1870
|
+
parent.parse('node bin serve --port 3000 --host localhost'.split(' '), { run: true });
|
|
1871
|
+
expect(result.port).toBe(3000);
|
|
1872
|
+
expect(typeof result.port).toBe('number');
|
|
1873
|
+
expect(result.host).toBe('localhost');
|
|
1874
|
+
});
|
|
1875
|
+
test('sub-CLI command with positional args', () => {
|
|
1876
|
+
const parent = goke('mycli');
|
|
1877
|
+
const sub = goke();
|
|
1878
|
+
let receivedId = '';
|
|
1879
|
+
sub
|
|
1880
|
+
.command('get <id>', 'Get a resource')
|
|
1881
|
+
.action((id) => { receivedId = id; });
|
|
1882
|
+
parent.use(sub);
|
|
1883
|
+
parent.parse(['node', 'bin', 'get', 'abc123'], { run: true });
|
|
1884
|
+
expect(receivedId).toBe('abc123');
|
|
1885
|
+
});
|
|
1886
|
+
test('sub-CLI with multi-word commands', () => {
|
|
1887
|
+
const parent = goke('mycli');
|
|
1888
|
+
const sub = goke();
|
|
1889
|
+
let matched = '';
|
|
1890
|
+
sub.command('mcp login', 'Login to MCP').action(() => { matched = 'mcp login'; });
|
|
1891
|
+
sub.command('mcp logout', 'Logout from MCP').action(() => { matched = 'mcp logout'; });
|
|
1892
|
+
parent.use(sub);
|
|
1893
|
+
parent.parse(['node', 'bin', 'mcp', 'login'], { run: true });
|
|
1894
|
+
expect(matched).toBe('mcp login');
|
|
1895
|
+
matched = '';
|
|
1896
|
+
parent.parse(['node', 'bin', 'mcp', 'logout'], { run: true });
|
|
1897
|
+
expect(matched).toBe('mcp logout');
|
|
1898
|
+
});
|
|
1899
|
+
test('help output includes composed commands', () => {
|
|
1900
|
+
const stdout = createTestOutputStream();
|
|
1901
|
+
const parent = goke('mycli', { stdout });
|
|
1902
|
+
const sub = goke();
|
|
1903
|
+
sub.command('selfhost', 'Set up on your own workspace')
|
|
1904
|
+
.option('-t, --token [token]', 'Admin token');
|
|
1905
|
+
parent.command('init', 'Initialize project');
|
|
1906
|
+
parent.use(sub);
|
|
1907
|
+
parent.help();
|
|
1908
|
+
parent.parse(['node', 'bin', '--help'], { run: false });
|
|
1909
|
+
expect(stdout.text).toContain('init');
|
|
1910
|
+
expect(stdout.text).toContain('selfhost');
|
|
1911
|
+
expect(stdout.text).toContain('Set up on your own workspace');
|
|
1912
|
+
});
|
|
1913
|
+
test('sub-CLI middlewares are NOT copied to parent', () => {
|
|
1914
|
+
const parent = goke('mycli');
|
|
1915
|
+
const sub = goke();
|
|
1916
|
+
let subMiddlewareCalled = false;
|
|
1917
|
+
const order = [];
|
|
1918
|
+
sub.use(() => { subMiddlewareCalled = true; });
|
|
1919
|
+
sub.command('deploy', 'Deploy').action(() => { order.push('deploy'); });
|
|
1920
|
+
parent.use(() => { order.push('parent-mw'); });
|
|
1921
|
+
parent.use(sub);
|
|
1922
|
+
parent.parse(['node', 'bin', 'deploy'], { run: true });
|
|
1923
|
+
expect(subMiddlewareCalled).toBe(false);
|
|
1924
|
+
expect(order).toEqual(['parent-mw', 'deploy']);
|
|
1925
|
+
});
|
|
1926
|
+
test('parent global options are available to composed commands', () => {
|
|
1927
|
+
const parent = goke('mycli');
|
|
1928
|
+
const sub = goke();
|
|
1929
|
+
let result = {};
|
|
1930
|
+
parent.option('--verbose', 'Verbose output');
|
|
1931
|
+
sub
|
|
1932
|
+
.command('build', 'Build')
|
|
1933
|
+
.option('--target <target>', 'Build target')
|
|
1934
|
+
.action((options) => { result = options; });
|
|
1935
|
+
parent.use(sub);
|
|
1936
|
+
parent.parse('node bin build --verbose --target production'.split(' '), { run: true });
|
|
1937
|
+
expect(result.verbose).toBe(true);
|
|
1938
|
+
expect(result.target).toBe('production');
|
|
1939
|
+
});
|
|
1940
|
+
test('composed commands coexist with inline commands', () => {
|
|
1941
|
+
const parent = goke('mycli');
|
|
1942
|
+
const sub = goke();
|
|
1943
|
+
let matched = '';
|
|
1944
|
+
parent.command('init', 'Initialize').action(() => { matched = 'init'; });
|
|
1945
|
+
sub.command('deploy', 'Deploy').action(() => { matched = 'deploy'; });
|
|
1946
|
+
sub.command('rollback', 'Rollback').action(() => { matched = 'rollback'; });
|
|
1947
|
+
parent.use(sub);
|
|
1948
|
+
parent.parse(['node', 'bin', 'init'], { run: true });
|
|
1949
|
+
expect(matched).toBe('init');
|
|
1950
|
+
matched = '';
|
|
1951
|
+
parent.parse(['node', 'bin', 'deploy'], { run: true });
|
|
1952
|
+
expect(matched).toBe('deploy');
|
|
1953
|
+
matched = '';
|
|
1954
|
+
parent.parse(['node', 'bin', 'rollback'], { run: true });
|
|
1955
|
+
expect(matched).toBe('rollback');
|
|
1956
|
+
});
|
|
1957
|
+
});
|
|
@@ -312,4 +312,23 @@ describe('createJustBashCommand', () => {
|
|
|
312
312
|
exitCode: 7,
|
|
313
313
|
});
|
|
314
314
|
});
|
|
315
|
+
test('truncates captured output to just-bash maxOutputSize and appends a notice', async () => {
|
|
316
|
+
const { Bash } = await import('just-bash');
|
|
317
|
+
const cli = gokeTestable('parent');
|
|
318
|
+
cli
|
|
319
|
+
.command('spam-stderr', 'Write too much stderr')
|
|
320
|
+
.action((options, { console }) => {
|
|
321
|
+
console.error('x'.repeat(60));
|
|
322
|
+
console.error('y'.repeat(60));
|
|
323
|
+
});
|
|
324
|
+
const bash = new Bash({
|
|
325
|
+
executionLimits: { maxOutputSize: 80 },
|
|
326
|
+
customCommands: [await cli.createJustBashCommand()],
|
|
327
|
+
});
|
|
328
|
+
const result = await bash.exec('parent spam-stderr');
|
|
329
|
+
expect(result.exitCode).toBe(0);
|
|
330
|
+
expect(result.stdout).toBe('');
|
|
331
|
+
expect(result.stderr.length).toBeLessThanOrEqual(80);
|
|
332
|
+
expect(result.stderr).toBe(`${'x'.repeat(60)}\n[output truncated]\n`);
|
|
333
|
+
});
|
|
315
334
|
});
|
|
@@ -397,6 +397,43 @@ describe('type-level: README TypeScript examples', () => {
|
|
|
397
397
|
expectTypeOf(process.cwd).toEqualTypeOf();
|
|
398
398
|
});
|
|
399
399
|
});
|
|
400
|
+
test('use() with sub-CLI preserves parent middleware typing', () => {
|
|
401
|
+
const sub = goke();
|
|
402
|
+
sub
|
|
403
|
+
.command('deploy', 'Deploy the app')
|
|
404
|
+
.option('--force', z.boolean())
|
|
405
|
+
.action((options) => {
|
|
406
|
+
// Sub-CLI command's action sees its own options
|
|
407
|
+
expectTypeOf(options.force).toEqualTypeOf();
|
|
408
|
+
});
|
|
409
|
+
goke('test')
|
|
410
|
+
.option('--verbose', z.boolean().default(false).describe('Verbose'))
|
|
411
|
+
.use(sub)
|
|
412
|
+
.use((options) => {
|
|
413
|
+
// Parent middleware still sees parent's accumulated options after .use(subCli)
|
|
414
|
+
expectTypeOf(options.verbose).toEqualTypeOf();
|
|
415
|
+
})
|
|
416
|
+
.command('build', 'Build')
|
|
417
|
+
.option('--target <target>', z.string())
|
|
418
|
+
.action((options) => {
|
|
419
|
+
// Parent's inline command still sees global options
|
|
420
|
+
expectTypeOf(options.verbose).toEqualTypeOf();
|
|
421
|
+
expectTypeOf(options.target).toEqualTypeOf();
|
|
422
|
+
});
|
|
423
|
+
});
|
|
424
|
+
test('use() with sub-CLI does not leak sub-CLI types to parent', () => {
|
|
425
|
+
const sub = goke()
|
|
426
|
+
.option('--sub-only <val>', z.string());
|
|
427
|
+
sub.command('sub-cmd', 'Sub command').action(() => { });
|
|
428
|
+
goke('test')
|
|
429
|
+
.option('--parent-only <val>', z.number())
|
|
430
|
+
.use(sub)
|
|
431
|
+
.use((options) => {
|
|
432
|
+
expectTypeOf(options.parentOnly).toEqualTypeOf();
|
|
433
|
+
// @ts-expect-error subOnly is not declared on the parent
|
|
434
|
+
options.subOnly;
|
|
435
|
+
});
|
|
436
|
+
});
|
|
400
437
|
test('README global options and middleware example stays typed end-to-end', () => {
|
|
401
438
|
// `z.boolean().default(false)` and `z.string().default(...)` are
|
|
402
439
|
// effectively required at runtime: the default applies when the flag is
|
package/dist/goke.d.ts
CHANGED
|
@@ -553,7 +553,30 @@ declare class Goke<Opts = {}> extends EventEmitter {
|
|
|
553
553
|
* }
|
|
554
554
|
* })
|
|
555
555
|
* ```
|
|
556
|
+
*
|
|
557
|
+
* Alternatively, pass another `Goke` instance to compose commands from
|
|
558
|
+
* separate files. All commands defined on the sub-CLI are merged into
|
|
559
|
+
* this CLI. Middlewares and global options from the sub-CLI are NOT
|
|
560
|
+
* copied; only commands are composed.
|
|
561
|
+
*
|
|
562
|
+
* @example
|
|
563
|
+
* ```ts
|
|
564
|
+
* // selfhost.ts
|
|
565
|
+
* export const selfhostCli = goke()
|
|
566
|
+
* selfhostCli
|
|
567
|
+
* .command('selfhost', 'Set up on your own workspace')
|
|
568
|
+
* .option('-t, --token [token]', 'Admin token')
|
|
569
|
+
* .action((options) => { ... })
|
|
570
|
+
*
|
|
571
|
+
* // main.ts
|
|
572
|
+
* import { selfhostCli } from './selfhost.js'
|
|
573
|
+
* goke('mycli')
|
|
574
|
+
* .use(selfhostCli)
|
|
575
|
+
* .help()
|
|
576
|
+
* .parse(process.argv)
|
|
577
|
+
* ```
|
|
556
578
|
*/
|
|
579
|
+
use(subCli: Goke<any>): this;
|
|
557
580
|
use(callback: (options: Opts & DoubleDashOptions, context: GokeExecutionContext) => void | Promise<void>): this;
|
|
558
581
|
/**
|
|
559
582
|
* Show help message when `-h, --help` flags appear.
|
package/dist/goke.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"goke.d.ts","sourceRoot":"","sources":["../src/goke.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"goke.d.ts","sourceRoot":"","sources":["../src/goke.ts"],"names":[],"mappings":"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"}
|
package/dist/goke.js
CHANGED
|
@@ -822,30 +822,14 @@ class Goke extends EventEmitter {
|
|
|
822
822
|
this.globalCommand.options.push(option);
|
|
823
823
|
return this;
|
|
824
824
|
}
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
* `.option()` calls that precede this `.use()` in the chain, plus an injected
|
|
834
|
-
* execution context with `{ console, process }` for portable output and exits.
|
|
835
|
-
*
|
|
836
|
-
* @example
|
|
837
|
-
* ```ts
|
|
838
|
-
* cli
|
|
839
|
-
* .option('--verbose', z.boolean().default(false).describe('Verbose'))
|
|
840
|
-
* .use((options, { console }) => {
|
|
841
|
-
* if (options.verbose) {
|
|
842
|
-
* console.log('verbose mode enabled')
|
|
843
|
-
* }
|
|
844
|
-
* })
|
|
845
|
-
* ```
|
|
846
|
-
*/
|
|
847
|
-
use(callback) {
|
|
848
|
-
this.middlewares.push({ action: callback });
|
|
825
|
+
use(callbackOrCli) {
|
|
826
|
+
if (callbackOrCli instanceof Goke) {
|
|
827
|
+
for (const command of callbackOrCli.commands) {
|
|
828
|
+
this.commands.push(cloneCommandInto(command, this));
|
|
829
|
+
}
|
|
830
|
+
return this;
|
|
831
|
+
}
|
|
832
|
+
this.middlewares.push({ action: callbackOrCli });
|
|
849
833
|
return this;
|
|
850
834
|
}
|
|
851
835
|
/**
|
package/dist/just-bash.d.ts
CHANGED
|
@@ -17,7 +17,7 @@ interface JustBashCommand {
|
|
|
17
17
|
trusted: true;
|
|
18
18
|
execute(args: string[], context?: JustBashExecutionContext): Promise<JustBashExecResult>;
|
|
19
19
|
}
|
|
20
|
-
type JustBashExecutionContext = Pick<CommandContext, 'cwd' | 'env' | 'fs' | 'stdin'>;
|
|
20
|
+
type JustBashExecutionContext = Pick<CommandContext, 'cwd' | 'env' | 'fs' | 'stdin' | 'limits'>;
|
|
21
21
|
export declare function createJustBashCommand(cli: Goke<any>, options?: {
|
|
22
22
|
name?: string;
|
|
23
23
|
}): JustBashCommand;
|
package/dist/just-bash.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"just-bash.d.ts","sourceRoot":"","sources":["../src/just-bash.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAe,MAAM,WAAW,CAAA;AAC5D,OAAO,IAAyB,MAAM,WAAW,CAAA;AAIjD,UAAU,kBAAkB;IAC1B,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,IAAI,CAAA;IACb,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,wBAAwB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAA;CACzF;AAED,KAAK,wBAAwB,GAAG,IAAI,CAAC,cAAc,EAAE,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,OAAO,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"just-bash.d.ts","sourceRoot":"","sources":["../src/just-bash.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAe,MAAM,WAAW,CAAA;AAC5D,OAAO,IAAyB,MAAM,WAAW,CAAA;AAIjD,UAAU,kBAAkB;IAC1B,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,IAAI,CAAA;IACb,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,wBAAwB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAA;CACzF;AAED,KAAK,wBAAwB,GAAG,IAAI,CAAC,cAAc,EAAE,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,OAAO,GAAG,QAAQ,CAAC,CAAA;AAqQ/F,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,EACd,OAAO,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAC1B,eAAe,CAsDjB;AAED,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,CAAA"}
|
package/dist/just-bash.js
CHANGED
|
@@ -8,14 +8,78 @@
|
|
|
8
8
|
import { Buffer } from 'node:buffer';
|
|
9
9
|
import { fileURLToPath } from 'node:url';
|
|
10
10
|
import { GokeProcessExit } from './goke.js';
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
11
|
+
const TRUNCATION_MESSAGE = '\n[output truncated]\n';
|
|
12
|
+
function createTextCaptureStreams(maxLength) {
|
|
13
|
+
const stdoutChunks = [];
|
|
14
|
+
const stderrChunks = [];
|
|
15
|
+
const limit = maxLength != null && maxLength > 0 ? maxLength : Number.POSITIVE_INFINITY;
|
|
16
|
+
let totalLength = 0;
|
|
17
|
+
let stdoutTruncated = false;
|
|
18
|
+
let stderrTruncated = false;
|
|
19
|
+
const createStream = (stream) => ({
|
|
17
20
|
write(data) {
|
|
18
|
-
|
|
21
|
+
if (totalLength >= limit) {
|
|
22
|
+
if (stream === 'stdout') {
|
|
23
|
+
stdoutTruncated = true;
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
stderrTruncated = true;
|
|
27
|
+
}
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
const remaining = limit - totalLength;
|
|
31
|
+
const text = data.length <= remaining ? data : data.slice(0, remaining);
|
|
32
|
+
if (stream === 'stdout') {
|
|
33
|
+
stdoutChunks.push(text);
|
|
34
|
+
stdoutTruncated ||= text.length !== data.length;
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
stderrChunks.push(text);
|
|
38
|
+
stderrTruncated ||= text.length !== data.length;
|
|
39
|
+
}
|
|
40
|
+
totalLength += text.length;
|
|
41
|
+
},
|
|
42
|
+
});
|
|
43
|
+
const trimEnd = (value, count) => value.slice(0, Math.max(0, value.length - count));
|
|
44
|
+
return {
|
|
45
|
+
stdout: createStream('stdout'),
|
|
46
|
+
stderr: createStream('stderr'),
|
|
47
|
+
getResult() {
|
|
48
|
+
let stdout = stdoutChunks.join('');
|
|
49
|
+
let stderr = stderrChunks.join('');
|
|
50
|
+
if (!stdoutTruncated && !stderrTruncated) {
|
|
51
|
+
return { stdout, stderr };
|
|
52
|
+
}
|
|
53
|
+
const target = stderrTruncated ? 'stderr' : 'stdout';
|
|
54
|
+
const message = limit === Number.POSITIVE_INFINITY
|
|
55
|
+
? TRUNCATION_MESSAGE
|
|
56
|
+
: TRUNCATION_MESSAGE.slice(0, Math.min(TRUNCATION_MESSAGE.length, limit));
|
|
57
|
+
let overflow = stdout.length + stderr.length + message.length - limit;
|
|
58
|
+
if (Number.isFinite(limit) && overflow > 0) {
|
|
59
|
+
if (target === 'stderr') {
|
|
60
|
+
const stderrTrim = Math.min(overflow, stderr.length);
|
|
61
|
+
stderr = trimEnd(stderr, stderrTrim);
|
|
62
|
+
overflow -= stderrTrim;
|
|
63
|
+
if (overflow > 0) {
|
|
64
|
+
stdout = trimEnd(stdout, overflow);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
const stdoutTrim = Math.min(overflow, stdout.length);
|
|
69
|
+
stdout = trimEnd(stdout, stdoutTrim);
|
|
70
|
+
overflow -= stdoutTrim;
|
|
71
|
+
if (overflow > 0) {
|
|
72
|
+
stderr = trimEnd(stderr, overflow);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
if (target === 'stderr') {
|
|
77
|
+
stderr += message;
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
stdout += message;
|
|
81
|
+
}
|
|
82
|
+
return { stdout, stderr };
|
|
19
83
|
},
|
|
20
84
|
};
|
|
21
85
|
}
|
|
@@ -187,16 +251,15 @@ export function createJustBashCommand(cli, options) {
|
|
|
187
251
|
name,
|
|
188
252
|
trusted: true,
|
|
189
253
|
async execute(args, context) {
|
|
190
|
-
const
|
|
191
|
-
const stderr = createTextCaptureStream();
|
|
254
|
+
const output = createTextCaptureStreams(context?.limits?.maxOutputSize);
|
|
192
255
|
const argv = ['node', name, ...args];
|
|
193
256
|
const cloned = cli.clone({
|
|
194
257
|
cwd: context?.cwd,
|
|
195
258
|
env: context ? createJustBashEnvProxy(context.env) : cli.env,
|
|
196
259
|
fs: context ? createJustBashFs(context.fs, context.cwd) : cli.fs,
|
|
197
260
|
stdin: context?.stdin,
|
|
198
|
-
stdout,
|
|
199
|
-
stderr,
|
|
261
|
+
stdout: output.stdout,
|
|
262
|
+
stderr: output.stderr,
|
|
200
263
|
argv,
|
|
201
264
|
exit: (code) => {
|
|
202
265
|
throw new GokeProcessExit(code);
|
|
@@ -206,17 +269,19 @@ export function createJustBashCommand(cli, options) {
|
|
|
206
269
|
try {
|
|
207
270
|
cloned.parse(argv, { run: false });
|
|
208
271
|
await cloned.runMatchedCommand();
|
|
272
|
+
const result = output.getResult();
|
|
209
273
|
return {
|
|
210
|
-
stdout: stdout
|
|
211
|
-
stderr: stderr
|
|
274
|
+
stdout: result.stdout,
|
|
275
|
+
stderr: result.stderr,
|
|
212
276
|
exitCode: 0,
|
|
213
277
|
};
|
|
214
278
|
}
|
|
215
279
|
catch (error) {
|
|
216
280
|
if (error instanceof GokeProcessExit) {
|
|
281
|
+
const result = output.getResult();
|
|
217
282
|
return {
|
|
218
|
-
stdout: stdout
|
|
219
|
-
stderr: stderr
|
|
283
|
+
stdout: result.stdout,
|
|
284
|
+
stderr: result.stderr,
|
|
220
285
|
exitCode: error.code,
|
|
221
286
|
};
|
|
222
287
|
}
|
package/package.json
CHANGED
|
@@ -2336,3 +2336,169 @@ describe('middleware', () => {
|
|
|
2336
2336
|
expect(order).toEqual(['sync1', 'async', 'sync2', 'action'])
|
|
2337
2337
|
})
|
|
2338
2338
|
})
|
|
2339
|
+
|
|
2340
|
+
describe('use() with sub-CLI composition', () => {
|
|
2341
|
+
test('basic composition: sub-CLI command runs via parent', () => {
|
|
2342
|
+
const parent = goke('mycli')
|
|
2343
|
+
const sub = goke()
|
|
2344
|
+
let matched = ''
|
|
2345
|
+
|
|
2346
|
+
sub
|
|
2347
|
+
.command('deploy', 'Deploy the app')
|
|
2348
|
+
.action(() => { matched = 'deploy' })
|
|
2349
|
+
|
|
2350
|
+
parent.use(sub)
|
|
2351
|
+
parent.parse(['node', 'bin', 'deploy'], { run: true })
|
|
2352
|
+
expect(matched).toBe('deploy')
|
|
2353
|
+
})
|
|
2354
|
+
|
|
2355
|
+
test('multiple sub-CLIs composed together', () => {
|
|
2356
|
+
const parent = goke('mycli')
|
|
2357
|
+
const subA = goke()
|
|
2358
|
+
const subB = goke()
|
|
2359
|
+
let matched = ''
|
|
2360
|
+
|
|
2361
|
+
subA.command('login', 'Login').action(() => { matched = 'login' })
|
|
2362
|
+
subB.command('deploy', 'Deploy').action(() => { matched = 'deploy' })
|
|
2363
|
+
|
|
2364
|
+
parent.use(subA).use(subB)
|
|
2365
|
+
|
|
2366
|
+
parent.parse(['node', 'bin', 'login'], { run: true })
|
|
2367
|
+
expect(matched).toBe('login')
|
|
2368
|
+
|
|
2369
|
+
matched = ''
|
|
2370
|
+
parent.parse(['node', 'bin', 'deploy'], { run: true })
|
|
2371
|
+
expect(matched).toBe('deploy')
|
|
2372
|
+
})
|
|
2373
|
+
|
|
2374
|
+
test('sub-CLI command with options and schema coercion', () => {
|
|
2375
|
+
const parent = goke('mycli')
|
|
2376
|
+
const sub = goke()
|
|
2377
|
+
let result: any = {}
|
|
2378
|
+
|
|
2379
|
+
sub
|
|
2380
|
+
.command('serve', 'Start server')
|
|
2381
|
+
.option('--port <port>', z.number().describe('Port'))
|
|
2382
|
+
.option('--host <host>', z.string().describe('Host'))
|
|
2383
|
+
.action((options) => { result = options })
|
|
2384
|
+
|
|
2385
|
+
parent.use(sub)
|
|
2386
|
+
parent.parse('node bin serve --port 3000 --host localhost'.split(' '), { run: true })
|
|
2387
|
+
|
|
2388
|
+
expect(result.port).toBe(3000)
|
|
2389
|
+
expect(typeof result.port).toBe('number')
|
|
2390
|
+
expect(result.host).toBe('localhost')
|
|
2391
|
+
})
|
|
2392
|
+
|
|
2393
|
+
test('sub-CLI command with positional args', () => {
|
|
2394
|
+
const parent = goke('mycli')
|
|
2395
|
+
const sub = goke()
|
|
2396
|
+
let receivedId = ''
|
|
2397
|
+
|
|
2398
|
+
sub
|
|
2399
|
+
.command('get <id>', 'Get a resource')
|
|
2400
|
+
.action((id) => { receivedId = id })
|
|
2401
|
+
|
|
2402
|
+
parent.use(sub)
|
|
2403
|
+
parent.parse(['node', 'bin', 'get', 'abc123'], { run: true })
|
|
2404
|
+
|
|
2405
|
+
expect(receivedId).toBe('abc123')
|
|
2406
|
+
})
|
|
2407
|
+
|
|
2408
|
+
test('sub-CLI with multi-word commands', () => {
|
|
2409
|
+
const parent = goke('mycli')
|
|
2410
|
+
const sub = goke()
|
|
2411
|
+
let matched = ''
|
|
2412
|
+
|
|
2413
|
+
sub.command('mcp login', 'Login to MCP').action(() => { matched = 'mcp login' })
|
|
2414
|
+
sub.command('mcp logout', 'Logout from MCP').action(() => { matched = 'mcp logout' })
|
|
2415
|
+
|
|
2416
|
+
parent.use(sub)
|
|
2417
|
+
|
|
2418
|
+
parent.parse(['node', 'bin', 'mcp', 'login'], { run: true })
|
|
2419
|
+
expect(matched).toBe('mcp login')
|
|
2420
|
+
|
|
2421
|
+
matched = ''
|
|
2422
|
+
parent.parse(['node', 'bin', 'mcp', 'logout'], { run: true })
|
|
2423
|
+
expect(matched).toBe('mcp logout')
|
|
2424
|
+
})
|
|
2425
|
+
|
|
2426
|
+
test('help output includes composed commands', () => {
|
|
2427
|
+
const stdout = createTestOutputStream()
|
|
2428
|
+
const parent = goke('mycli', { stdout })
|
|
2429
|
+
const sub = goke()
|
|
2430
|
+
|
|
2431
|
+
sub.command('selfhost', 'Set up on your own workspace')
|
|
2432
|
+
.option('-t, --token [token]', 'Admin token')
|
|
2433
|
+
|
|
2434
|
+
parent.command('init', 'Initialize project')
|
|
2435
|
+
parent.use(sub)
|
|
2436
|
+
parent.help()
|
|
2437
|
+
parent.parse(['node', 'bin', '--help'], { run: false })
|
|
2438
|
+
|
|
2439
|
+
expect(stdout.text).toContain('init')
|
|
2440
|
+
expect(stdout.text).toContain('selfhost')
|
|
2441
|
+
expect(stdout.text).toContain('Set up on your own workspace')
|
|
2442
|
+
})
|
|
2443
|
+
|
|
2444
|
+
test('sub-CLI middlewares are NOT copied to parent', () => {
|
|
2445
|
+
const parent = goke('mycli')
|
|
2446
|
+
const sub = goke()
|
|
2447
|
+
let subMiddlewareCalled = false
|
|
2448
|
+
const order: string[] = []
|
|
2449
|
+
|
|
2450
|
+
sub.use(() => { subMiddlewareCalled = true })
|
|
2451
|
+
sub.command('deploy', 'Deploy').action(() => { order.push('deploy') })
|
|
2452
|
+
|
|
2453
|
+
parent.use(() => { order.push('parent-mw') })
|
|
2454
|
+
parent.use(sub)
|
|
2455
|
+
|
|
2456
|
+
parent.parse(['node', 'bin', 'deploy'], { run: true })
|
|
2457
|
+
|
|
2458
|
+
expect(subMiddlewareCalled).toBe(false)
|
|
2459
|
+
expect(order).toEqual(['parent-mw', 'deploy'])
|
|
2460
|
+
})
|
|
2461
|
+
|
|
2462
|
+
test('parent global options are available to composed commands', () => {
|
|
2463
|
+
const parent = goke('mycli')
|
|
2464
|
+
const sub = goke()
|
|
2465
|
+
let result: any = {}
|
|
2466
|
+
|
|
2467
|
+
parent.option('--verbose', 'Verbose output')
|
|
2468
|
+
|
|
2469
|
+
sub
|
|
2470
|
+
.command('build', 'Build')
|
|
2471
|
+
.option('--target <target>', 'Build target')
|
|
2472
|
+
.action((options) => { result = options })
|
|
2473
|
+
|
|
2474
|
+
parent.use(sub)
|
|
2475
|
+
parent.parse('node bin build --verbose --target production'.split(' '), { run: true })
|
|
2476
|
+
|
|
2477
|
+
expect(result.verbose).toBe(true)
|
|
2478
|
+
expect(result.target).toBe('production')
|
|
2479
|
+
})
|
|
2480
|
+
|
|
2481
|
+
test('composed commands coexist with inline commands', () => {
|
|
2482
|
+
const parent = goke('mycli')
|
|
2483
|
+
const sub = goke()
|
|
2484
|
+
let matched = ''
|
|
2485
|
+
|
|
2486
|
+
parent.command('init', 'Initialize').action(() => { matched = 'init' })
|
|
2487
|
+
|
|
2488
|
+
sub.command('deploy', 'Deploy').action(() => { matched = 'deploy' })
|
|
2489
|
+
sub.command('rollback', 'Rollback').action(() => { matched = 'rollback' })
|
|
2490
|
+
|
|
2491
|
+
parent.use(sub)
|
|
2492
|
+
|
|
2493
|
+
parent.parse(['node', 'bin', 'init'], { run: true })
|
|
2494
|
+
expect(matched).toBe('init')
|
|
2495
|
+
|
|
2496
|
+
matched = ''
|
|
2497
|
+
parent.parse(['node', 'bin', 'deploy'], { run: true })
|
|
2498
|
+
expect(matched).toBe('deploy')
|
|
2499
|
+
|
|
2500
|
+
matched = ''
|
|
2501
|
+
parent.parse(['node', 'bin', 'rollback'], { run: true })
|
|
2502
|
+
expect(matched).toBe('rollback')
|
|
2503
|
+
})
|
|
2504
|
+
})
|