cargo_openvm/commands/
run.rs
1use std::path::PathBuf;
2
3use clap::Parser;
4use eyre::Result;
5use openvm_sdk::{fs::read_exe_from_file, Sdk};
6
7use crate::{
8 default::{DEFAULT_APP_CONFIG_PATH, DEFAULT_APP_EXE_PATH},
9 input::{read_to_stdin, Input},
10 util::read_config_toml_or_default,
11};
12
13#[derive(Parser)]
14#[command(name = "run", about = "Run an OpenVM program")]
15pub struct RunCmd {
16 #[arg(long, action, help = "Path to OpenVM executable", default_value = DEFAULT_APP_EXE_PATH)]
17 exe: PathBuf,
18
19 #[arg(long, action, help = "Path to app config TOML file", default_value = DEFAULT_APP_CONFIG_PATH)]
20 config: PathBuf,
21
22 #[arg(long, value_parser, help = "Input to OpenVM program")]
23 input: Option<Input>,
24}
25
26impl RunCmd {
27 pub fn run(&self) -> Result<()> {
28 let exe = read_exe_from_file(&self.exe)?;
29 let app_config = read_config_toml_or_default(&self.config)?;
30 let sdk = Sdk::new();
31 let output = sdk.execute(exe, app_config.app_vm_config, read_to_stdin(&self.input)?)?;
32 println!("Execution output: {:?}", output);
33 Ok(())
34 }
35}