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