Skip to main content

Mountain/IPC/WindServiceHandlers/FileSystem/Managed/
FileStat.rs

1//! Legacy wire method `file:stat`. Not currently wired (native variant
2//! handles `file:stat`). Preserved for provider-routed callers.
3
4use std::{path::PathBuf, sync::Arc};
5
6use CommonLibrary::{Environment::Requires::Requires, FileSystem::FileSystemReader::FileSystemReader};
7use serde_json::{Value, json};
8
9use crate::{RunTime::ApplicationRunTime::ApplicationRunTime, dev_log};
10
11pub async fn Fn(RunTime:Arc<ApplicationRunTime>, Arguments:Vec<Value>) -> Result<Value, String> {
12	let path = Arguments
13		.get(0)
14		.ok_or("Missing file path".to_string())?
15		.as_str()
16		.ok_or("File path must be a string".to_string())?;
17
18	let provider:Arc<dyn FileSystemReader> = RunTime.Environment.Require();
19
20	let stats = provider
21		.StatFile(&PathBuf::from(path))
22		.await
23		.map_err(|Error| format!("Failed to stat file: {}", Error))?;
24
25	dev_log!("vfs-verbose", "legacy_stat: {}", path);
26
27	Ok(json!(stats))
28}