mirror of
https://github.com/Drop-OSS/drop-app.git
synced 2025-11-15 17:21:19 +10:00
* chore: Major refactoring Still needs a massive go-over because there shouldn't be anything referencing tauri in any of the workspaces except the original one. Process manager has been refactored as an example Signed-off-by: quexeky <git@quexeky.dev> * fix: Remote tauri dependency from process Signed-off-by: quexeky <git@quexeky.dev> * refactor: Improvements to src-tauri Signed-off-by: quexeky <git@quexeky.dev> * refactor: Builds, but some logic still left to move back Signed-off-by: quexeky <git@quexeky.dev> * refactor: Finish refactor Signed-off-by: quexeky <git@quexeky.dev> * chore: Run cargo clippy && cargo fmt Signed-off-by: quexeky <git@quexeky.dev> * refactor: Move everything into src-tauri Signed-off-by: quexeky <git@quexeky.dev> --------- Signed-off-by: quexeky <git@quexeky.dev>
26 lines
843 B
Rust
26 lines
843 B
Rust
use std::{io, path::PathBuf, sync::Arc};
|
|
|
|
use download_manager::error::ApplicationDownloadError;
|
|
use sysinfo::{Disk, DiskRefreshKind, Disks};
|
|
|
|
pub fn get_disk_available(mount_point: PathBuf) -> Result<u64, ApplicationDownloadError> {
|
|
let disks = Disks::new_with_refreshed_list_specifics(DiskRefreshKind::nothing().with_storage());
|
|
|
|
let mut disk_iter = disks.into_iter().collect::<Vec<&Disk>>();
|
|
disk_iter.sort_by(|a, b| {
|
|
b.mount_point()
|
|
.to_string_lossy()
|
|
.len()
|
|
.cmp(&a.mount_point().to_string_lossy().len())
|
|
});
|
|
|
|
for disk in disk_iter {
|
|
if mount_point.starts_with(disk.mount_point()) {
|
|
return Ok(disk.available_space());
|
|
}
|
|
}
|
|
Err(ApplicationDownloadError::IoError(Arc::new(
|
|
io::Error::other("could not find disk of path"),
|
|
)))
|
|
}
|