diff --git a/cli/plug_run.ts b/cli/plug_run.ts deleted file mode 100644 index 40a44180..00000000 --- a/cli/plug_run.ts +++ /dev/null @@ -1,69 +0,0 @@ -import { DiskSpacePrimitives } from "$common/spaces/disk_space_primitives.ts"; -import { AssetBundle } from "../lib/asset_bundle/bundle.ts"; - -import { ServerSystem } from "../server/server_system.ts"; -import { AssetBundlePlugSpacePrimitives } from "$common/spaces/asset_bundle_space_primitives.ts"; -import { EndpointHook } from "../server/hooks/endpoint.ts"; -import { LocalShell } from "../server/shell_backend.ts"; -import { Hono } from "../server/deps.ts"; -import { KvPrimitives } from "$lib/data/kv_primitives.ts"; -import { DataStore } from "$lib/data/datastore.ts"; -import { DataStoreMQ } from "$lib/data/mq.datastore.ts"; -import { EventHook } from "$lib/plugos/hooks/event.ts"; -import { sleep } from "$lib/async.ts"; - -export async function runPlug( - spacePath: string, - functionName: string | undefined, - args: string[] = [], - builtinAssetBundle: AssetBundle, - kvPrimitives: KvPrimitives, - httpServerPort?: number, - httpHostname?: string, -) { - const serverController = new AbortController(); - const app = new Hono(); - - const endpointHook = new EndpointHook("/_/"); - - const ds = new DataStore(kvPrimitives); - const mq = new DataStoreMQ(ds); - const eventHook = new EventHook(); - - const serverSystem = new ServerSystem( - new AssetBundlePlugSpacePrimitives( - new DiskSpacePrimitives(spacePath), - builtinAssetBundle, - ), - kvPrimitives, - new LocalShell(spacePath), - mq, - ds, - eventHook, - false, - true, - ); - await serverSystem.init(true); - app.use((context, next) => { - return endpointHook.handleRequest(serverSystem.system!, context, next); - }); - if (httpHostname && httpServerPort) { - Deno.serve({ - hostname: httpHostname, - port: httpServerPort, - signal: serverController.signal, - }, app.fetch); - } - - if (functionName) { - const result = await serverSystem.system.invokeFunction(functionName, args); - await serverSystem.close(); - serverController.abort(); - return result; - } else { - console.log("Running in server mode, use Ctrl-c to stop"); - while (true) { - await sleep(1000); - } - } -} diff --git a/cli/plug_run.test.ts b/cmd/plug_run.test.ts similarity index 100% rename from cli/plug_run.test.ts rename to cmd/plug_run.test.ts index 651cbe15..aa67cda1 100644 --- a/cli/plug_run.test.ts +++ b/cmd/plug_run.test.ts @@ -1,11 +1,11 @@ import { AssetBundle } from "$lib/asset_bundle/bundle.ts"; import { compileManifest } from "$lib/plugos/compile.ts"; import { esbuild } from "$lib/plugos/deps.ts"; -import { runPlug } from "./plug_run.ts"; import assets from "../dist/plug_asset_bundle.json" assert { type: "json" }; import { assertEquals } from "$lib/test_deps.ts"; import { path } from "$common/deps.ts"; import { MemoryKvPrimitives } from "$lib/data/memory_kv_primitives.ts"; +import { runPlug } from "./plug_run.ts"; Deno.test("Test plug run", { sanitizeResources: false, diff --git a/cmd/plug_run.ts b/cmd/plug_run.ts index 4507f4cf..44529986 100644 --- a/cmd/plug_run.ts +++ b/cmd/plug_run.ts @@ -1,10 +1,21 @@ -import { runPlug } from "../cli/plug_run.ts"; import { path } from "$common/deps.ts"; import assets from "../dist/plug_asset_bundle.json" assert { type: "json", }; -import { AssetBundle } from "$lib/asset_bundle/bundle.ts"; import { determineDatabaseBackend } from "../server/db_backend.ts"; +import { KvPrimitives } from "$lib/data/kv_primitives.ts"; +import { DiskSpacePrimitives } from "$common/spaces/disk_space_primitives.ts"; + +import { ServerSystem } from "../server/server_system.ts"; +import { AssetBundlePlugSpacePrimitives } from "$common/spaces/asset_bundle_space_primitives.ts"; +import { EndpointHook } from "../server/hooks/endpoint.ts"; +import { LocalShell } from "../server/shell_backend.ts"; +import { Hono } from "../server/deps.ts"; +import { DataStore } from "$lib/data/datastore.ts"; +import { DataStoreMQ } from "$lib/data/mq.datastore.ts"; +import { EventHook } from "$lib/plugos/hooks/event.ts"; +import { sleep } from "$lib/async.ts"; +import { AssetBundle } from "$lib/asset_bundle/bundle.ts"; export async function plugRunCommand( { @@ -49,3 +60,59 @@ export async function plugRunCommand( Deno.exit(1); } } + +export async function runPlug( + spacePath: string, + functionName: string | undefined, + args: string[] = [], + builtinAssetBundle: AssetBundle, + kvPrimitives: KvPrimitives, + httpServerPort?: number, + httpHostname?: string, +) { + const serverController = new AbortController(); + const app = new Hono(); + + const endpointHook = new EndpointHook("/_/"); + + const ds = new DataStore(kvPrimitives); + const mq = new DataStoreMQ(ds); + const eventHook = new EventHook(); + + const serverSystem = new ServerSystem( + new AssetBundlePlugSpacePrimitives( + new DiskSpacePrimitives(spacePath), + builtinAssetBundle, + ), + kvPrimitives, + new LocalShell(spacePath), + mq, + ds, + eventHook, + false, + true, + ); + await serverSystem.init(true); + app.use((context, next) => { + return endpointHook.handleRequest(serverSystem.system!, context, next); + }); + if (httpHostname && httpServerPort) { + Deno.serve({ + hostname: httpHostname, + port: httpServerPort, + signal: serverController.signal, + }, app.fetch); + } + + if (functionName) { + const result = await serverSystem.system.invokeFunction(functionName, args); + await serverSystem.close(); + serverController.abort(); + return result; + } else { + console.log("Running in server mode, use Ctrl-c to stop"); + while (true) { + await sleep(1000); + } + } +} diff --git a/cli/plug_test.ts b/cmd/plug_test.ts similarity index 100% rename from cli/plug_test.ts rename to cmd/plug_test.ts diff --git a/cmd/server.ts b/cmd/server.ts index 0dc95feb..3178c08e 100644 --- a/cmd/server.ts +++ b/cmd/server.ts @@ -9,7 +9,7 @@ import { AssetBundle, AssetJson } from "../lib/asset_bundle/bundle.ts"; import { determineDatabaseBackend } from "../server/db_backend.ts"; import { SpaceServerConfig } from "../server/instance.ts"; -import { runPlug } from "../cli/plug_run.ts"; +import { runPlug } from "../cmd/plug_run.ts"; import { PrefixedKvPrimitives } from "$lib/data/prefixed_kv_primitives.ts"; import { sleep } from "$lib/async.ts"; diff --git a/cli/test.plug.yaml b/cmd/test.plug.yaml similarity index 100% rename from cli/test.plug.yaml rename to cmd/test.plug.yaml