dasel
dasel copied to clipboard
contains/includes
It would be nice to have some higher level functions like includes(x) = filter(equal(.,x))
$ echo '[[1,2,3],[1,3]]' | dasel -r json 'all().filter(all().filter(equal(.,2)))'
[
1,
2,
3
]
I am looking for the same, however I can't get it to work even with the verbose example in this file:
{
"plugins": [
[
"@semantic-release/git",
{
"assets": ["README.md", "here/is/some-other-file.yml"],
}
],
"@semantic-release/gitlab"
]
}
I would expect the following to return README.md
dasel -f .releaserc -r json '.plugins.all().filter(equal(type(),array)).[1].as
sets.all().filter(equal(.,"README.md"))'
But it returns nothing.
The goal is to figure out if in this case README.md
is in that list or not.
@rhtenhove This is pretty convoluted but does what you need. I do want to include some functionality to simplify this a lot.
orDefault(plugins.all().filter(equal(type(),array)).all().filter(equal(type(),object)).assets?.all().filter(equal(.,README.md)).count(),0).moreThan(.,0)
Essentially filter out any non README.md
items, count the items and then check if that's more than 0.
I'm wrapping the README.md
discovery in a call to orDefault
to get around the fact that it may return no rows if no array/object/README items are found.