#[cfg(unix)]
pub mod unix;
#[cfg(windows)]
pub mod windows;
pub mod prompt;
use crate::error::Result;
use std::path::PathBuf;
pub use prompt::{confirm_complete_uninstall, prompt_uninstall_option, UninstallOption};
pub fn install() -> Result<()> {
#[cfg(unix)]
{
unix::install()
}
#[cfg(windows)]
{
windows::install()
}
#[cfg(not(any(unix, windows)))]
{
Err(crate::error::AppError::platform(
"Self-installation not supported on this platform",
))
}
}
pub fn uninstall() -> Result<()> {
#[cfg(unix)]
{
unix::uninstall()
}
#[cfg(windows)]
{
windows::uninstall()
}
#[cfg(not(any(unix, windows)))]
{
Err(crate::error::AppError::platform(
"Self-uninstallation not supported on this platform",
))
}
}
pub fn install_path() -> Option<PathBuf> {
#[cfg(unix)]
{
Some(unix::install_path())
}
#[cfg(windows)]
{
Some(windows::install_path())
}
#[cfg(not(any(unix, windows)))]
{
None
}
}
pub fn find_binary_location() -> Option<PathBuf> {
#[cfg(unix)]
{
unix::find_binary_location()
}
#[cfg(windows)]
{
windows::find_binary_location()
}
#[cfg(not(any(unix, windows)))]
{
None
}
}
pub fn get_binary_parent_dir(binary_path: &std::path::Path) -> Option<PathBuf> {
#[cfg(unix)]
{
let _ = binary_path;
None }
#[cfg(windows)]
{
windows::get_binary_parent_dir(binary_path)
}
#[cfg(not(any(unix, windows)))]
{
let _ = binary_path;
None
}
}
pub fn uninstall_complete() -> Result<()> {
#[cfg(unix)]
{
unix::uninstall_complete()
}
#[cfg(windows)]
{
windows::uninstall_complete()
}
#[cfg(not(any(unix, windows)))]
{
Err(crate::error::AppError::platform(
"Complete uninstallation not supported on this platform",
))
}
}