mirror of
https://github.com/edera-dev/sprout.git
synced 2025-12-20 04:20:17 +00:00
document by hand much more of the sprout code
This commit is contained in:
@@ -4,14 +4,25 @@ use anyhow::{Result, bail};
|
||||
use serde::{Deserialize, Serialize};
|
||||
use std::rc::Rc;
|
||||
|
||||
/// The filesystem device match extractor.
|
||||
pub mod filesystem_device_match;
|
||||
|
||||
/// Declares an extractor configuration.
|
||||
/// Extractors allow calculating values at runtime
|
||||
/// using built-in sprout modules.
|
||||
#[derive(Serialize, Deserialize, Default, Clone)]
|
||||
pub struct ExtractorDeclaration {
|
||||
/// The filesystem device match extractor.
|
||||
/// This extractor finds a filesystem using some search criteria and returns
|
||||
/// the device root path that can concatenated with subpaths to access files
|
||||
/// on a particular filesystem.
|
||||
#[serde(default, rename = "filesystem-device-match")]
|
||||
pub filesystem_device_match: Option<FilesystemDeviceMatchExtractor>,
|
||||
}
|
||||
|
||||
/// Extracts the value using the specified `extractor` under the provided `context`.
|
||||
/// The extractor must return a value, and if a value cannot be determined, an error
|
||||
/// should be returned.
|
||||
pub fn extract(context: Rc<SproutContext>, extractor: &ExtractorDeclaration) -> Result<String> {
|
||||
if let Some(filesystem) = &extractor.filesystem_device_match {
|
||||
filesystem_device_match::extract(context, filesystem)
|
||||
|
||||
Reference in New Issue
Block a user