summaryrefslogtreecommitdiff
path: root/build.rs
blob: d5c14442bb6ed3714539d24e3d38076b30666a3f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
use std::env;
use std::path::PathBuf;

use crate::r#gen::{
    gen_commands_file::generate_commands_file,
    gen_compile_info::generate_compile_info,
    gen_completions_entries::generate_completions_file,
    gen_iscc_script::generate_installer_script,
    gen_mod_files::generate_collect_files,
    gen_override_renderer::{generate_override_renderer, generate_override_renderers_list},
    gen_renderers_file::generate_renderers_file,
    gen_specific_renderer::generate_specific_renderer,
};

pub mod r#gen;

#[tokio::main]
async fn main() {
    println!("cargo:rerun-if-env-changed=FORCE_BUILD");
    println!("cargo:rerun-if-changed=src/cmds/arg");
    println!("cargo:rerun-if-changed=src/cmds/cmd");
    println!("cargo:rerun-if-changed=src/cmds/collect");
    println!("cargo:rerun-if-changed=src/cmds/comp");
    println!("cargo:rerun-if-changed=src/cmds/converter");
    println!("cargo:rerun-if-changed=src/cmds/in");
    println!("cargo:rerun-if-changed=src/cmds/out");
    println!("cargo:rerun-if-changed=src/cmds/renderer");

    let repo_root = std::sync::Arc::new(PathBuf::from(env::var("CARGO_MANIFEST_DIR").unwrap()));

    let _ = tokio::join!(
        tokio::spawn({
            let repo_root = repo_root.clone();
            async move { generate_compile_info(&repo_root).await }
        }),
        tokio::spawn({
            let repo_root = repo_root.clone();
            async move { generate_commands_file(&repo_root).await }
        }),
        tokio::spawn({
            let repo_root = repo_root.clone();
            async move { generate_renderers_file(&repo_root).await }
        }),
        tokio::spawn({
            let repo_root = repo_root.clone();
            async move { generate_completions_file(&repo_root).await }
        }),
        tokio::spawn({
            let repo_root = repo_root.clone();
            async move { generate_collect_files(&repo_root).await }
        }),
        tokio::spawn({
            let repo_root = repo_root.clone();
            async move { generate_override_renderer(&repo_root).await }
        }),
        tokio::spawn({
            let repo_root = repo_root.clone();
            async move { generate_override_renderers_list(&repo_root).await }
        }),
        tokio::spawn({
            let repo_root = repo_root.clone();
            async move { generate_specific_renderer(&repo_root).await }
        }),
        tokio::spawn({
            async move {
                if cfg!(target_os = "windows") {
                    // Only generate installer script on Windows
                    let repo_root = repo_root.clone();
                    generate_installer_script(&repo_root).await
                }
            }
        })
    );
}