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