diff options
Diffstat (limited to '')
| -rw-r--r-- | content/posts/2021-02-13-jsonnet/index.md (renamed from content/posts/2021-02-13-jsonnet.md) | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/content/posts/2021-02-13-jsonnet.md b/content/posts/2021-02-13-jsonnet/index.md index 9b03e5d..4018d46 100644 --- a/content/posts/2021-02-13-jsonnet.md +++ b/content/posts/2021-02-13-jsonnet/index.md @@ -1,6 +1,6 @@ --- date: "2021-02-13T22:08:19Z" -image: files/2021-02-13-jsonnet_logo.webp +image: /posts/2021-02-13-jsonnet/jsonnet_logo.webp tags: - go - it @@ -14,6 +14,8 @@ title: Jsonnet вызывает вау-эффект и буквально переворачивает всё верх дном. На днях для меня такой технологией стал [Jsonnet](https://jsonnet.org/) от Google. + + В кратце, это надмножество JSON являющееся языком описания шаблонов. Пока звучит не очень круто, да? На деле это офигенный Тьюринг полный функциональный язык, результатом выполнения которого будет сформированый JSON (и не только) @@ -41,17 +43,17 @@ https://jsonnet.org/learning/tutorial.html. гипотетической CI системы: ```jsonnet -local map(arr, predicate) = // определяем функцию map +local map(arr, predicate) = / определяем функцию map if std.length(arr) == 0 then [] else [ predicate(arr[0]) - ] + map(arr[1:], predicate); // функциональненько! + ] + map(arr[1:], predicate); / функциональненько! local tasks = [['go1.14', '1.14-alpine'],['go1.15', '1.15-alpine'],['go1.16-RC', '1.16-rc-alpine']]; -local commands = ['go build', 'go test']; // Общая часть -{ // Результирующий JSON - pipeline: map(tasks, function (task) { // Вызов map от tasks +local commands = ['go build', 'go test']; / Общая часть +{ / Результирующий JSON + pipeline: map(tasks, function (task) { / Вызов map от tasks name: task[0], image: "golang:"+task[1], commands: commands, |
