mirror of
https://github.com/edera-dev/sprout.git
synced 2026-11-04 15:42:20 +00:00
fix(boot): stamp generated entry actions with the final entry context
This commit is contained in:
1 parent
5f81a99d21
commit
ab9f3cd2d3
2 files changed
+4
-9
No files matched your search
@@ -196,15 +196,12 @@ impl BootableEntry {
|
||||
}
|
||||
|
||||
/// Create a variant of this entry, with the name suffixed by `suffix` and using `context`.
|
||||
/// The actions of the entry are stamped with `context`, the same as the list generator.
|
||||
/// The actions of the entry are stamped with `context` when the entry is booted.
|
||||
/// Variants of the same entry keep the sort key of this entry, so they stay grouped
|
||||
/// together in the order they were created in.
|
||||
pub fn variant(&self, suffix: &str, context: Rc<SproutContext>) -> Self {
|
||||
let mut entry = self.clone();
|
||||
entry.name.push_str(suffix);
|
||||
entry.declaration.actions = context
|
||||
.stamp_iter(entry.declaration.actions.iter())
|
||||
.collect();
|
||||
// Without any sort key, the name is used to sort, which differs between variants.
|
||||
// Pin the sort key to the name of this entry to keep the variants together.
|
||||
if entry.sort_key.is_none() && entry.declaration.sort_key.is_none() {
|
||||
|
||||
@@ -20,11 +20,9 @@ pub fn generate(
|
||||
context.insert(combination);
|
||||
let context = context.freeze();
|
||||
|
||||
// Stamp the entry title and actions from the template.
|
||||
let mut entry = list.entry.clone();
|
||||
|
||||
// Stamp all the actions this entry references.
|
||||
entry.actions = context.stamp_iter(entry.actions.into_iter()).collect();
|
||||
// The actions are stamped with the final context of the entry when it is booted,
|
||||
// so that variants and the values of the entry can override the values of the generator.
|
||||
let entry = list.entry.clone();
|
||||
|
||||
// Push the entry into the list with the new context.
|
||||
entries.push(BootableEntry::new(
|
||||
|
||||
Reference in new issue
Block a user