Skip to main content

cargo_airbender/commands/new/
profiles.rs

1use crate::cli::NewProverBackendArg;
2
3const HOST_MAIN_DEV_TEMPLATE: &str =
4    include_str!("../../../templates/host/src/main.dev.rs.template");
5const HOST_MAIN_GPU_TEMPLATE: &str =
6    include_str!("../../../templates/host/src/main.gpu.rs.template");
7const README_BACKEND_DEV_DOC: &str =
8    include_str!("../../../templates/snippets/prover_backend.dev.md.template");
9const README_BACKEND_GPU_DOC: &str =
10    include_str!("../../../templates/snippets/prover_backend.gpu.md.template");
11
12#[derive(Clone, Copy)]
13pub(super) struct ProverBackendProfile {
14    pub(super) host_dependency_features: &'static str,
15    pub(super) host_main_template: &'static str,
16    pub(super) readme_prover_backend_doc: &'static str,
17    pub(super) host_run_command: &'static str,
18}
19
20pub(super) fn prover_backend_profile(backend: NewProverBackendArg) -> ProverBackendProfile {
21    match backend {
22        NewProverBackendArg::Dev => ProverBackendProfile {
23            host_dependency_features: ", default-features = false",
24            host_main_template: HOST_MAIN_DEV_TEMPLATE,
25            readme_prover_backend_doc: README_BACKEND_DEV_DOC,
26            host_run_command: "cd ../host && cargo run --release",
27        },
28        NewProverBackendArg::Gpu => ProverBackendProfile {
29            host_dependency_features: "",
30            host_main_template: HOST_MAIN_GPU_TEMPLATE,
31            readme_prover_backend_doc: README_BACKEND_GPU_DOC,
32            host_run_command: "cd ../host && ZKSYNC_USE_CUDA_STUBS=true cargo run --release",
33        },
34    }
35}