pub struct PatternLoader;Expand description
Unified pattern loader for source files and YAML
Implementations§
Source§impl PatternLoader
impl PatternLoader
Sourcepub fn load_from_file<'buf>(
path: &str,
buf: &'buf mut String,
) -> Result<Vec<&'buf str>>
pub fn load_from_file<'buf>( path: &str, buf: &'buf mut String, ) -> Result<Vec<&'buf str>>
Load patterns from a source file (one pattern per line)
Lines starting with # are comments and are skipped.
Empty lines are skipped.
Trailing / is transformed to /**.
Sourcepub fn load_yaml_groups(
yaml: &str,
negation_first: bool,
) -> Result<Vec<PatternGroup>>
pub fn load_yaml_groups( yaml: &str, negation_first: bool, ) -> Result<Vec<PatternGroup>>
Load YAML pattern groups
YAML format:
frontend:
- src/components/**
- src/pages/**
backend:
- src/api/**
- src/models/**Sourcepub fn parse_group_by_template(template: &str) -> Result<GroupByTemplate<'_>>
pub fn parse_group_by_template(template: &str) -> Result<GroupByTemplate<'_>>
Parse a files_group_by template string.
Template must contain exactly one {group} placeholder.
Returns prefix (before {group}), suffix (after {group}), and the
scan directory (prefix without trailing /).
Example: "stacks/{group}/**" → prefix="stacks/", suffix="/**", scan_dir="stacks"
Sourcepub fn discover_groups_from_template(
template: &GroupByTemplate<'_>,
repo_root: &Path,
negation_first: bool,
key_mode: GroupByKey,
) -> Result<Vec<PatternGroup>>
pub fn discover_groups_from_template( template: &GroupByTemplate<'_>, repo_root: &Path, negation_first: bool, key_mode: GroupByKey, ) -> Result<Vec<PatternGroup>>
Discover groups from a template by scanning the filesystem.
When the template suffix contains ** (e.g. stacks/{group}/**), scans
only direct children of scan_dir — each top-level directory becomes a group.
When the suffix does NOT contain ** (e.g. stacks/{group}/Pulumi.yaml),
recursively walks the directory tree to find all paths where the suffix matches
an existing file. This allows {group} to capture multi-segment paths like
cloudsql/bq_to_cloudsql/gcs_to_sql. Each discovered directory becomes a group
with a /** pattern covering its entire subtree.
Sourcepub fn synthesize_groups_for_paths<'p>(
template: &GroupByTemplate<'_>,
key_mode: GroupByKey,
paths: impl Iterator<Item = &'p str>,
negation_first: bool,
groups: &mut Vec<PatternGroup>,
) -> Result<()>
pub fn synthesize_groups_for_paths<'p>( template: &GroupByTemplate<'_>, key_mode: GroupByKey, paths: impl Iterator<Item = &'p str>, negation_first: bool, groups: &mut Vec<PatternGroup>, ) -> Result<()>
Synthesize groups for template-matching paths whose directories no longer exist on disk (vanished or fully-deleted stacks). Filesystem discovery cannot see them, so Destroy deploy entries would otherwise never appear. Appends only groups whose key is not already present; re-sorts for deterministic order.
Auto Trait Implementations§
impl Freeze for PatternLoader
impl RefUnwindSafe for PatternLoader
impl Send for PatternLoader
impl Sync for PatternLoader
impl Unpin for PatternLoader
impl UnsafeUnpin for PatternLoader
impl UnwindSafe for PatternLoader
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more