59 lines
1.9 KiB
TypeScript
59 lines
1.9 KiB
TypeScript
/**
|
|
* Internal dsh-sdk command composition used by the package bin.
|
|
*
|
|
* @module @deepseek-ai/dsh-scripts/command
|
|
*/
|
|
|
|
import { parseDshSdkArgs } from './args.ts'
|
|
import { runProjectBuild } from './build.ts'
|
|
import { runConfigCommand, type ConfigCommandContext } from './config.ts'
|
|
import { runSDK } from './runtime.ts'
|
|
import { DSH_SDK_TEMPLATES } from './templates/dsh-sdk-templates.ts'
|
|
|
|
/** Injectable process and command boundaries used by the dsh-sdk bin. */
|
|
export interface DshSdkCommandContext extends ConfigCommandContext {
|
|
cwd: string
|
|
stdin: NodeJS.ReadStream
|
|
stdout: NodeJS.WriteStream
|
|
stderr: NodeJS.WriteStream
|
|
run?: typeof runSDK
|
|
build?: typeof runProjectBuild
|
|
config?: typeof runConfigCommand
|
|
}
|
|
|
|
/** Run one parsed dsh-sdk command and return its process exit code. */
|
|
export async function runDshSdkCommand(
|
|
argv: readonly string[] = process.argv.slice(2),
|
|
context: DshSdkCommandContext = {
|
|
cwd: process.cwd(),
|
|
stdin: process.stdin,
|
|
stdout: process.stdout,
|
|
stderr: process.stderr,
|
|
},
|
|
): Promise<number> {
|
|
try {
|
|
const args = parseDshSdkArgs(argv)
|
|
if (args.help || !args.command) {
|
|
context.stdout.write(DSH_SDK_TEMPLATES.usage.render({}))
|
|
return 0
|
|
}
|
|
const run = context.run ?? runSDK
|
|
const build = context.build ?? runProjectBuild
|
|
const config = context.config ?? runConfigCommand
|
|
switch (args.command) {
|
|
case 'start': await run(args.target, { cwd: context.cwd, argv: args.forwarded }); break
|
|
case 'dev': await run(args.target, { cwd: context.cwd, dev: true, argv: args.forwarded }); break
|
|
case 'build': await build(args.forwarded, context.cwd); break
|
|
case 'config': {
|
|
const result = await config(context)
|
|
if (result.installError) return 1
|
|
break
|
|
}
|
|
}
|
|
return 0
|
|
} catch (error) {
|
|
context.stderr.write(`dsh-sdk: ${error instanceof Error ? error.message : String(error)}\n`)
|
|
return 1
|
|
}
|
|
}
|