Я играю с dhall, пытаясь представить существующий большой файл yaml, который у меня есть вместо этого в dhall.
В частности, я пытаюсь построить типы и помощники dhall для определения конвейера конкурса.Часть yaml, которая определяет конвейер конкурса, выглядит как yaml, который я написал здесь.Каждый ресурс в моем списке содержит имя, тип, а затем источник, структура которого полностью зависит от типа ресурса.
Для меня нет исчерпывающего списка ресурсов, который можно было бы определить, поскольку кто-то может создать новый.завтра, и я бы не хотел обновлять свои типы каждый раз, когда какая-либо третья сторона создает новый тип источника.
Здесь также видно, что у меня есть, но я не уверен, как я мог бы представить source
.Я рассмотрел вопрос об исключении этого поля из моего типа и указании потребителям использовать оператор //
dhall для добавления источника, но тогда становится трудно встраивать resource
s в [resource]
и по-прежнему проводить проверку типов.
Как определить тип dhall для ресурса, который содержит в себе поле, значение которого неструктурировано.
resources:
- name: my-repo
type: git
source:
$some_unstructured_yaml
{ name : Text
, type : Text
, source : Optional ???
}