tovuk 0.1.70

Deploy Rust workers, static frontends, and worker-static apps to Tovuk.
use super::{
    super::{
        config::TovukConfig, frontend_checks::static_frontend_checks, project_kind::ProjectKind,
    },
    report::DoctorCheck,
};
use std::path::Path;

mod files;
mod rust;
mod source;

pub(super) use files::required_file_checks;
pub(crate) use rust::first_output_line;

use files::required_files_at;
use rust::rust_backend_checks;
use source::backend_javascript_source_check;

pub(super) fn fullstack_checks(
    project_dir: &Path,
    config: &TovukConfig,
    config_valid: bool,
) -> Vec<DoctorCheck> {
    let backend_root = config.backend.root.clone().unwrap_or_default();
    let frontend_root = config.frontend.root.clone().unwrap_or_default();
    let backend_dir = project_dir.join(&backend_root);
    let frontend_dir = project_dir.join(&frontend_root);
    let mut checks = Vec::new();
    checks.extend(required_files_at(
        &backend_dir,
        &backend_root,
        super::super::project_layout::fullstack_backend_required_files(),
    ));
    checks.push(backend_javascript_source_check(&backend_dir, &backend_root));
    checks.extend(rust_backend_checks(&backend_dir, config_valid));
    checks.extend(required_files_at(
        &frontend_dir,
        &frontend_root,
        super::super::project_layout::fullstack_frontend_required_files(&frontend_dir),
    ));
    checks.extend(static_frontend_checks(&frontend_dir, config_valid));
    checks
}

pub(super) fn rust_doctor_checks(
    project_dir: &Path,
    kind: ProjectKind,
    config_valid: bool,
) -> Vec<DoctorCheck> {
    if kind.is_static_frontend() {
        let mut checks = static_frontend_checks(project_dir, config_valid);
        checks.push(rust::unsafe_check(project_dir));
        return checks;
    }

    let mut checks = vec![backend_javascript_source_check(project_dir, "")];
    checks.extend(rust_backend_checks(project_dir, config_valid));
    checks
}