mirror of
https://github.com/mii443/wasmer.git
synced 2025-12-07 21:28:21 +00:00
35 lines
1.0 KiB
Rust
35 lines
1.0 KiB
Rust
use crate::store::StoreOptions;
|
|
use anyhow::{bail, Context, Result};
|
|
use clap::Parser;
|
|
use std::path::PathBuf;
|
|
use wasmer::*;
|
|
|
|
#[derive(Debug, Parser)]
|
|
/// The options for the `wasmer validate` subcommand
|
|
pub struct Validate {
|
|
/// File to validate as WebAssembly
|
|
#[clap(name = "FILE", parse(from_os_str))]
|
|
path: PathBuf,
|
|
|
|
#[clap(flatten)]
|
|
store: StoreOptions,
|
|
}
|
|
|
|
impl Validate {
|
|
/// Runs logic for the `validate` subcommand
|
|
pub fn execute(&self) -> Result<()> {
|
|
self.inner_execute()
|
|
.context(format!("failed to validate `{}`", self.path.display()))
|
|
}
|
|
fn inner_execute(&self) -> Result<()> {
|
|
let (store, _compiler_type) = self.store.get_store()?;
|
|
let module_contents = std::fs::read(&self.path)?;
|
|
if !is_wasm(&module_contents) {
|
|
bail!("`wasmer validate` only validates WebAssembly files");
|
|
}
|
|
Module::validate(&store, &module_contents)?;
|
|
eprintln!("Validation passed for `{}`.", self.path.display());
|
|
Ok(())
|
|
}
|
|
}
|