From b6c0cb6abc1c29846b4b7e696812476bea24bbc7 Mon Sep 17 00:00:00 2001 From: KernelDeimos Date: Mon, 30 Sep 2024 16:50:18 -0400 Subject: [PATCH] feat: add -c flag for phoenix --- src/phoenix/src/main_puter.js | 19 +++++++++++++++++++ src/phoenix/src/puter-shell/main.js | 5 +++++ 2 files changed, 24 insertions(+) diff --git a/src/phoenix/src/main_puter.js b/src/phoenix/src/main_puter.js index d61ef04f..3062b025 100644 --- a/src/phoenix/src/main_puter.js +++ b/src/phoenix/src/main_puter.js @@ -23,6 +23,7 @@ import { CreateDriversProvider } from './platform/puter/drivers.js'; import { XDocumentPTT } from './pty/XDocumentPTT.js'; import { CreateEnvProvider } from './platform/puter/env.js'; import { CreateSystemProvider } from './platform/puter/system.js'; +import { parseArgs } from '@pkgjs/parseargs'; window.main_shell = async () => { const config = Object.fromEntries( @@ -71,9 +72,27 @@ window.main_shell = async () => { // await puterSDK.setAuthToken(config['puter.auth.token']); // } + // TODO: move this into Puter's SDK instead + if ( ! puter.args?.command_line?.args ) { + puter.args.command_line = {}; + puter.args.command_line.args = []; + } + + // Argument parsing happens here + // puter.args < -- command_line.args + const { values } = parseArgs({ + options: { + c: { + type: 'string' + } + }, + args: puter.args.command_line.args + }); + await launchPuterShell(new Context({ ptt, config, puterSDK, + init_arguments: values, externs: new Context({ puterSDK }), platform: new Context({ name: 'puter', diff --git a/src/phoenix/src/puter-shell/main.js b/src/phoenix/src/puter-shell/main.js index e79252da..cf95326d 100644 --- a/src/phoenix/src/puter-shell/main.js +++ b/src/phoenix/src/puter-shell/main.js @@ -193,6 +193,11 @@ export const launchPuterShell = async (ctx) => { ctx.externs.out.write('\n'); + if ( ctx.init_arguments.c ) { + await ansiShell.runPipeline(ctx.init_arguments.c); + return; + } + for ( ;; ) { await ansiShell.doPromptIteration(); }