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 _lock = lock::acquire_lock()?;
54 let plugin_manager = if crate::pkg::utils::is_mini_mode() {
55 None
56 } else {
57 let pm = pkg::plugin::PluginManager::new()?;
58 let _ = pm.load_all(options.yes);
59 Some(pm)
60 };
61
62 let pm_ptr = plugin_manager.as_ref();
63
64 cmd::install::run(
65 sources,
66 options.repo.clone(),
67 options.force,
68 options.all_optional,
69 options.yes,
70 options.scope_override.map(to_install_scope),
71 false,
72 false,
73 options.save,
74 options.build_type.as_deref(),
75 options.dry_run,
76 pm_ptr,
77 options.build,
78 options.frozen,
79 false,
80 false,
81 3,
82 false,
83 false,
84 None
85 )
86}
87
88pub fn uninstall_package(
94 package_name: &str,
95 scope_override: Option<Scope>
96) -> Result<()> {
97 let _lock = lock::acquire_lock()?;
98 zoi_uninstall::run(package_name, scope_override, false, false, false)
99 .map(|_| ())
100}