jq - создает JSON карту объектов из переменных окружения - PullRequest
0 голосов
/ 30 января 2020

Я использую jq 1.5 и пытаюсь передать две переменные окружения через jq для создания объекта json:

export REGIONS="region1,region2"
export KMS_KEYS="key1,key2"

test. json

{
    "builders": [
    {
      "name": "aws"
    }
  ]
}

с помощью следующая команда:

jq --arg regions $REGIONS --arg kmskeys $KMS_KEYS '.builders[].region_kms_key_ids={$regions}' test.json

текущий результат:

{
  "builders": [
    {
      "name": "aws",
      "region_kms_key_ids": {
        "regions": "region1,region2"
      }
    }
  ]
}

желаемый результат:

{
    "builders": [
    {
      "name": "aws",
      "region_kms_key_ids": {
        "region1": "key1",
        "region2": "key2"
      }
    }
  ]
}

Я застрял на том, как использовать содержимое переменной REGIONS в качестве ключи и переменная KMS_KEYS в качестве значений. Любой совет будет оценен

1 Ответ

2 голосов
/ 30 января 2020

Разделите $regions и $kmskeys запятыми на два отдельных массива, транспонируйте их, чтобы связать каждую область с соответствующим ключом kms и сделайте из них объекты, а затем сложите их вместе, чтобы сформировать один объект. Например:

.builders[].region_kms_key_ids = (
    [ $regions/",", $kmskeys/"," ] | transpose | map({(.[0]):.[1]}) | add
)
...