MCPcopy Create free account
hub / github.com/f0rr0/oliphaunt / run_package_command_with_root

Function run_package_command_with_root

src/pglite/postgres_mod.rs:2372–2416  ·  view source on GitHub ↗
(
    runner: &WasiRunner,
    command_name: &str,
    package: &BinaryPackage,
    runtime: Arc<dyn Runtime + Send + Sync>,
    root_fs: Arc<dyn virtual_fs::FileSystem + Send + Sync>,
)

Source from the content-addressed store, hash-verified

2370}
2371
2372fn run_package_command_with_root(
2373 runner: &WasiRunner,
2374 command_name: &str,
2375 package: &BinaryPackage,
2376 runtime: Arc<dyn Runtime + Send + Sync>,
2377 root_fs: Arc<dyn virtual_fs::FileSystem + Send + Sync>,
2378) -> Result<()> {
2379 let cmd = package.get_command(command_name).with_context(|| {
2380 format!("split initdb package does not contain command {command_name:?}")
2381 })?;
2382 let wasi = cmd
2383 .metadata()
2384 .annotation("wasi")?
2385 .unwrap_or_else(|| Wasi::new(command_name));
2386 let exec_name = wasi.exec_name.as_deref().unwrap_or(command_name);
2387 let mut builder = runner
2388 .prepare_webc_env(
2389 exec_name,
2390 &wasi,
2391 PackageOrHash::Package(package),
2392 RuntimeOrEngine::Runtime(runtime),
2393 Some(WasiFsRoot::from_filesystem(root_fs)),
2394 )
2395 .with_context(|| format!("prepare WASIX command environment for {command_name:?}"))?;
2396 add_pgdata_preopen(&mut builder)?;
2397
2398 let env = builder.build()?;
2399 let runtime = env.runtime.clone();
2400 let tasks = runtime.task_manager().clone();
2401 let package = package.clone();
2402 let command_name = command_name.to_owned();
2403 let exit_code = tasks.spawn_and_block_on(async move {
2404 let mut task_handle = spawn_exec(package, &command_name, env, &runtime)
2405 .await
2406 .with_context(|| format!("spawn WASIX command {command_name:?}"))?;
2407 task_handle
2408 .wait_finished()
2409 .await
2410 .map_err(|err| anyhow::anyhow!("{err}"))
2411 .with_context(|| format!("wait for WASIX command {command_name:?}"))
2412 })??;
2413
2414 ensure!(exit_code.raw() == 0, "WASI exited with code: {exit_code}");
2415 Ok(())
2416}
2417
2418fn split_initdb_diagnostics(paths: &PglitePaths, runtime_layout: &RuntimeLayout) -> String {
2419 let pgdata_parent = paths.pgdata.parent().unwrap_or(&paths.pgdata);

Callers 1

run_split_initdbFunction · 0.85

Calls 3

add_pgdata_preopenFunction · 0.85
buildMethod · 0.80
metadataMethod · 0.45

Tested by

no test coverage detected