Add lookup syntax blueprint
Part of #338 (closed).
This doesn't implement absolutely everything from the "Things that we want to be able to express" list in #338 (closed). I'm happy to add them if needed, but I wasn't sure of use cases, and it might be that on reflection we decide that this is enough. Current missing things:
- Implicit default collection
- Do we have any cases where we need this? For string lookups, I'm concerned that it would mean similar-looking strings mean very different things in different contexts. For dictionary lookups, we could just omit
.collection.
- Do we have any cases where we need this? For string lookups, I'm concerned that it would mean similar-looking strings mean very different things in different contexts. For dictionary lookups, we could just omit
- Single artifact with an alternate lookup name
- I'm not sure whether this is a good idea, as opposed to just making lookups smarter where needed. We've gone back and forth on this a few times with environments.
- Single artifact with a list of names / alternate lookup names to try in order
- Ditto. The list syntax sort of covers this, except it doesn't stop at the first match.
- Multiple artifacts with a common name prefix (expected to be useful for workflows)
- Are list lookups as defined here enough for this?