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_store;
8mod build_profile;
9pub mod build_provenance;
10pub mod candid_endpoints;
11pub mod canic_metadata;
12pub mod canister_build;
13pub mod canister_ready;
14mod cargo_metadata;
15pub mod component_topology;
16pub mod cycle_balance;
17pub mod deployment_truth;
18pub mod durable_io;
19mod entropy;
20pub mod evidence_envelope;
21pub mod fleet_catalog;
22pub mod fleet_install_plan;
23pub mod format;
24pub mod icp;
25pub mod icp_config;
26pub mod install_root;
27pub mod installed_fleet;
28pub mod network;
29pub mod policy_gate;
30pub mod registry;
31pub mod release_build;
32pub mod release_set;
33pub mod replica_query;
34pub mod role_contract;
35pub mod state_manifest;
36pub mod subnet_registry;
37pub mod table;
38#[cfg(test)]
39mod test_support;
40mod workspace_discovery;
41
42pub(crate) fn cargo_command() -> Command {
43    let cargo = std::env::var_os("CARGO").unwrap_or_else(|| "cargo".into());
44    let mut command = Command::new(cargo);
45
46    if let Some(toolchain) = std::env::var_os("RUSTUP_TOOLCHAIN") {
47        command.env("RUSTUP_TOOLCHAIN", toolchain);
48    }
49    command
50}
51
52pub(crate) fn should_export_candid_artifacts(build_network: canic_core::ids::BuildNetwork) -> bool {
53    build_network == canic_core::ids::BuildNetwork::Local
54}
55
56pub(crate) fn remove_optional_file(path: &std::path::Path) -> std::io::Result<()> {
57    match std::fs::remove_file(path) {
58        Ok(()) => Ok(()),
59        Err(err) if err.kind() == std::io::ErrorKind::NotFound => Ok(()),
60        Err(err) => Err(err),
61    }
62}
63
64#[cfg(test)]
65mod tests;