Skip to content

Commit 2b227fe

Browse files
authored
Use a spinner to show that wasm is compiling in spacetime generate (#2057)
1 parent 2967e3b commit 2b227fe

File tree

1 file changed

+18
-7
lines changed
  • crates/cli/src/subcommands/generate

1 file changed

+18
-7
lines changed

crates/cli/src/subcommands/generate/mod.rs

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,12 @@ pub async fn exec(config: Config, args: &clap::ArgMatches) -> anyhow::Result<()>
128128
} else {
129129
build::exec_with_argstring(config.clone(), project_path, build_options).await?
130130
};
131-
extract_descriptions(&wasm_path)?
131+
let spinner = indicatif::ProgressBar::new_spinner();
132+
spinner.enable_steady_tick(60);
133+
spinner.set_message("Compiling wasm...");
134+
let module = compile_wasm(&wasm_path)?;
135+
spinner.set_message("Extracting schema from wasm...");
136+
extract_descriptions_from_module(module)?
132137
};
133138

134139
fs::create_dir_all(out_dir)?;
@@ -368,16 +373,22 @@ impl GenItem {
368373
}
369374

370375
pub fn extract_descriptions(wasm_file: &Path) -> anyhow::Result<RawModuleDef> {
371-
let engine = wasmtime::Engine::default();
372-
let t = std::time::Instant::now();
373-
let module = wasmtime::Module::from_file(&engine, wasm_file)?;
374-
println!("compilation took {:?}", t.elapsed());
376+
let module = compile_wasm(wasm_file)?;
377+
extract_descriptions_from_module(module)
378+
}
379+
380+
fn compile_wasm(wasm_file: &Path) -> anyhow::Result<wasmtime::Module> {
381+
wasmtime::Module::from_file(&wasmtime::Engine::default(), wasm_file)
382+
}
383+
384+
fn extract_descriptions_from_module(module: wasmtime::Module) -> anyhow::Result<RawModuleDef> {
385+
let engine = module.engine();
375386
let ctx = WasmCtx {
376387
mem: None,
377388
sink: Vec::new(),
378389
};
379-
let mut store = wasmtime::Store::new(&engine, ctx);
380-
let mut linker = wasmtime::Linker::new(&engine);
390+
let mut store = wasmtime::Store::new(engine, ctx);
391+
let mut linker = wasmtime::Linker::new(engine);
381392
linker.allow_shadowing(true).define_unknown_imports_as_traps(&module)?;
382393
let module_name = &*format!("spacetime_{MODULE_ABI_MAJOR_VERSION}.0");
383394
linker.func_wrap(

0 commit comments

Comments
 (0)