es_fluent_cli/commands/
watch.rs

1//! Watch command implementation.
2
3use crate::commands::{WorkspaceArgs, WorkspaceCrates};
4use crate::core::{CliError, FluentParseMode};
5use crate::tui::watch_all;
6use crate::utils::ui;
7use clap::Parser;
8
9/// Arguments for the watch command.
10#[derive(Parser)]
11pub struct WatchArgs {
12    #[command(flatten)]
13    pub workspace: WorkspaceArgs,
14
15    /// Parse mode for FTL generation
16    #[arg(short, long, value_enum, default_value_t = FluentParseMode::default())]
17    pub mode: FluentParseMode,
18}
19
20/// Run the watch command.
21pub fn run_watch(args: WatchArgs) -> Result<(), CliError> {
22    let workspace = WorkspaceCrates::discover(args.workspace)?;
23
24    if !workspace.print_discovery(ui::print_header) {
25        return Ok(());
26    }
27
28    watch_all(&workspace.crates, &workspace.workspace_info, &args.mode).map_err(CliError::from)
29}