Skip to main content

canic_host/
lib.rs

1//! Host-side App build, Fleet install, deployment, and release-set helpers for Canic workspaces.
2
3use std::process::Command;
4
5pub mod adoption;
6mod artifact_io;
7mod bootstrap_coordinator;
8mod bootstrap_store;
9mod build_profile;
10pub mod build_provenance;
11pub mod candid_endpoints;
12pub mod canic_metadata;
13pub mod canister_build;
14mod canister_protocol;
15pub mod canister_ready;
16mod cargo_metadata;
17pub mod component_topology;
18pub mod cycle_balance;
19pub mod deployment_truth;
20pub mod durable_io;
21mod entropy;
22pub mod evidence_envelope;
23pub mod fleet_catalog;
24pub mod fleet_install_input;
25pub mod fleet_install_plan;
26pub mod fleet_subnet_root_deletion;
27pub mod format;
28pub mod icp;
29pub mod icp_config;
30pub mod install_root;
31pub mod installed_fleet;
32pub mod network;
33pub mod policy_gate;
34pub mod registry;
35pub mod release_build;
36pub mod release_set;
37pub mod replica_query;
38pub mod role_contract;
39pub mod state_manifest;
40pub mod table;
41#[cfg(test)]
42mod test_support;
43mod workspace_discovery;
44
45pub(crate) fn cargo_command() -> Command {
46    let cargo = std::env::var_os("CARGO").unwrap_or_else(|| "cargo".into());
47    let mut command = Command::new(cargo);
48
49    if let Some(toolchain) = std::env::var_os("RUSTUP_TOOLCHAIN") {
50        command.env("RUSTUP_TOOLCHAIN", toolchain);
51    }
52    command
53}
54
55pub(crate) fn should_export_candid_artifacts(build_network: canic_core::ids::BuildNetwork) -> bool {
56    build_network == canic_core::ids::BuildNetwork::Local
57}
58
59pub(crate) fn remove_optional_file(path: &std::path::Path) -> std::io::Result<()> {
60    match std::fs::remove_file(path) {
61        Ok(()) => Ok(()),
62        Err(err) if err.kind() == std::io::ErrorKind::NotFound => Ok(()),
63        Err(err) => Err(err),
64    }
65}
66
67#[cfg(test)]
68mod tests;