1pub mod cli;
8pub mod cmd;
10pub mod pkg;
12pub use zoi_project as project;
14pub mod utils;
16
17use anyhow::Result;
18pub use pkg::{local, mini_resolve};
19pub use zoi_common::SourceInstallOptions;
20pub use zoi_core::types::{self, Scope};
21pub use zoi_core::{
22 cache, config, hash, lock, offline, pgp, pin, pkgdir, recorder, sysroot,
23 upgrade
24};
25pub use zoi_hooks as hooks;
26pub use zoi_lua as lua;
27pub use zoi_purl as purl;
28pub use zoi_resolver as resolve;
29#[cfg(target_os = "linux")]
30pub use zoi_sandbox as sandbox;
31pub use zoi_telemetry as telemetry;
32
33fn to_install_scope(scope: Scope) -> cli::InstallScope {
35 match scope {
36 Scope::User => cli::InstallScope::User,
37 Scope::System => cli::InstallScope::System,
38 Scope::Project => cli::InstallScope::Project
39 }
40}
41
42pub fn install_sources(
50 sources: &[String],
51 options: &SourceInstallOptions
52) -> Result<()> {
53 let plugin_manager = if crate::pkg::utils::is_mini_mode() {
54 None
55 } else {
56 let pm = pkg::plugin::PluginManager::new()?;
57 let _ = pm.load_all(options.yes);
58 Some(pm)
59 };
60
61 let pm_ptr = plugin_manager.as_ref();
62
63 cmd::install::run(
64 sources,
65 options.repo.clone(),
66 options.force,
67 options.all_optional,
68 options.yes,
69 options.scope_override.map(to_install_scope),
70 false,
71 false,
72 options.save,
73 options.build_type.as_deref(),
74 options.dry_run,
75 pm_ptr,
76 options.build,
77 options.frozen,
78 false,
79 false,
80 3,
81 false,
82 false,
83 None
84 )
85}
86
87pub fn uninstall_package(
93 package_name: &str,
94 scope_override: Option<Scope>
95) -> Result<()> {
96 zoi_uninstall::run(package_name, scope_override, false, false, false)
97 .map(|_| ())
98}