Обновите свойство определенного элемента в массиве с помощью yq 4

#yaml #yq

Вопрос:

Я использую yq 4.3.1 для обновления version поля в этом yaml:

 jobs:
  my-job:
    steps:
      - name: Step 1
        id: step1
        uses: actions/step1
      - name: Step 2
        id: step2
        uses: actions/step2
        with:
          version: 1.2.3
 

Но я не могу понять, как выбрать элемент массива на основе id == 'step2' свойства, чтобы я мог обновить версию?

Ответ №1:

Почему вы всегда находите ответ через секунду после того, как задаете вопрос в stackoverflow?

yq eval '(.jobs.my-job.steps[] | select(has("id")) | select(.id == "step2")).with.version = "1.2.4"' -i my.yaml

РЕДАКТИРОВАТЬ Вау, как я был неправ… 😀 Обновлена рабочая версия