pub enum Op<'doc> {
RewriteFragment {
from: Subfeature<'doc>,
to: Cow<'doc, str>,
},
ReplaceComment {
new: Cow<'doc, str>,
},
EmplaceComment {
new: Cow<'doc, str>,
},
Replace(Value),
Add {
key: String,
value: Value,
},
MergeInto {
key: String,
updates: IndexMap<String, Value>,
},
Remove,
Append {
value: Value,
},
}Expand description
Represents a YAML patch operation.
Variants§
RewriteFragment
Rewrites a fragment of a feature at the given path.
This can be used to perform graceful rewrites of string values, regardless of their nested position or single/multi-line nature.
For example, the following:
run: |
echo "foo: ${{ foo }}"can be rewritten to:
run: |
echo "foo ${FOO}"via a RewriteFragment with:
route: "/run",
from: "${{ foo }}",
to: "${FOO}",This operation performs exactly one rewrite at a time, meaning
that the first match of from in the feature will be replaced.
This can be made more precise by passing a after index,
which specifies that the rewrite should only occur on
the first match of from that occurs after the given byte index.
ReplaceComment
Replace a comment at the given path.
This operation replaces the entire comment associated with the feature at the given path with the new comment.
The entire comment is replaced at once, and only one matching comment is permitted. Features that don’t have an associated comment are ignored, while features with multiple comments will be rejected.
EmplaceComment
Emplace a comment at the given path.
This is like ReplaceComment, but will insert a new comment
if none exists.
Replace(Value)
Replace the value at the given path
Add
Add a new key-value pair at the given path.
The route should point to a mapping.
Limitations:
- The mapping must be a block mapping or single-line flow mapping. Multi-line flow mappings are not currently supported.
- The key must not already exist in the targeted mapping.
MergeInto
Update a mapping at the given path.
If the mapping does not already exist, it will be created.
Remove
Remove the key at the given path
Append
Append a new item to a sequence at the given path.
The sequence must be a block sequence; flow sequences are not supported.