pub mod cli;
pub mod cmd;
pub mod pkg;
pub use zoi_project as project;
pub mod utils;
use anyhow::Result;
pub use pkg::{local, mini_resolve};
pub use zoi_common::SourceInstallOptions;
pub use zoi_core::types::{self, Scope};
pub use zoi_core::{
cache, config, hash, lock, offline, pgp, pin, pkgdir, recorder, sysroot,
upgrade
};
pub use zoi_hooks as hooks;
pub use zoi_lua as lua;
pub use zoi_purl as purl;
pub use zoi_resolver as resolve;
#[cfg(target_os = "linux")]
pub use zoi_sandbox as sandbox;
pub use zoi_telemetry as telemetry;
fn to_install_scope(scope: Scope) -> cli::InstallScope {
match scope {
Scope::User => cli::InstallScope::User,
Scope::System => cli::InstallScope::System,
Scope::Project => cli::InstallScope::Project
}
}
pub fn install_sources(
sources: &[String],
options: &SourceInstallOptions
) -> Result<()> {
let plugin_manager = if crate::pkg::utils::is_mini_mode() {
None
} else {
let pm = pkg::plugin::PluginManager::new()?;
let _ = pm.load_all(options.yes);
Some(pm)
};
let pm_ptr = plugin_manager.as_ref();
cmd::install::run(
sources,
options.repo.clone(),
options.force,
options.all_optional,
options.yes,
options.scope_override.map(to_install_scope),
false,
false,
options.save,
options.build_type.as_deref(),
options.dry_run,
pm_ptr,
options.build,
options.frozen,
false,
false,
3,
false,
false,
None
)
}
pub fn uninstall_package(
package_name: &str,
scope_override: Option<Scope>
) -> Result<()> {
zoi_uninstall::run(package_name, scope_override, false, false, false)
.map(|_| ())
}