tovuk 0.1.100

Deploy Rust workers, static frontends, and full-stack services to Tovuk.
use super::super::args::CliOptions;

pub(crate) fn progress(cli: &CliOptions, message: &str) {
    if progress_message(cli, message).is_some() {
        println!("{message}");
    }
}

fn progress_message<'a>(cli: &CliOptions, message: &'a str) -> Option<&'a str> {
    if cli.output.json { None } else { Some(message) }
}

#[cfg(test)]
mod tests {
    use super::progress_message;
    use crate::cli::args::CliOptions;

    #[test]
    fn json_output_suppresses_human_progress() {
        let mut cli = CliOptions::default();
        cli.output.json = true;

        assert_eq!(progress_message(&cli, "build job_1 running"), None);
    }

    #[test]
    fn text_output_keeps_human_progress() {
        let cli = CliOptions::default();

        assert_eq!(
            progress_message(&cli, "build job_1 running"),
            Some("build job_1 running")
        );
    }
}