Skip to main content

schemaui_cli/web/
mod.rs

1use color_eyre::eyre::{Report, Result};
2use schemaui::SchemaUI;
3use schemaui::web::session::ServeOptions as WebServeOptions;
4
5use crate::cli::WebCommand;
6use crate::session::{SessionBundle, prepare_session};
7
8pub fn run_cli(cmd: WebCommand) -> Result<()> {
9    let session = prepare_session(&cmd.common)?;
10    execute_web_session(session, cmd)
11}
12
13fn execute_web_session(session: SessionBundle, cmd: WebCommand) -> Result<()> {
14    let SessionBundle {
15        schema,
16        defaults,
17        title,
18        output,
19    } = session;
20
21    let mut ui = SchemaUI::new(schema);
22    if let Some(title) = title {
23        ui = ui.with_title(title);
24    }
25    if let Some(ref defaults) = defaults {
26        ui = ui.with_default_data(defaults);
27    }
28    if let Some(options) = output {
29        ui = ui.with_output(options);
30    }
31
32    let serve = WebServeOptions {
33        host: cmd.host,
34        port: cmd.port,
35    };
36
37    ui.run_web(serve).map_err(Report::msg).map(|_| ())
38}