Рейтинг:0

Как экспортировать 1 или несколько конкретных правил?

флаг ma

Я хочу экспортировать одно или несколько конкретных правил или компонентов с помощью Drush.
У меня есть скрипт для экспорта всех правил и компонентов.

drush --pipe список правил | xargs -I{} sh -c "drush rules-export '{}' > '20210623-new-Rules-export-offline/{}.txt'"

20210623-новые-Правила-экспорт-офлайн это каталог, в котором сохраняются экспортированные правила.

Нужно ли что-то изменить в этом коде, чтобы экспортировать определенные правила, которые я хочу экспортировать?

Я создал Rules VBO View, чтобы иметь лучший доступ ко всем этим правилам, но функция экспорта в файл, похоже, не предоставляется.

apaderno avatar
флаг us
Если я правильно понимаю вопрос, вместо того, чтобы экспортировать все правила, вы хотите экспортировать только определенные правила, для которых вы указываете имя. Это то, чего вы пытаетесь достичь?
Рейтинг:1
флаг fr

список правил drush используется для перечисления всех правил на вашем сайте.

drush rules-export <rule-machine-name> будет экспортировать конкретное правило.

Показанная выше команда просто берет выходные данные команды rules-list и передает их в rules-export, фактически перебирая все правила и экспортируя каждое из них.

BassPlaya avatar
флаг ma
Спасибо @анонимус
BassPlaya avatar
флаг ma
Я попробовал это для 1 правила, и это действительно работает, но оно показывает экспортированный код в терминале, поэтому мне все еще приходится копировать и вставлять его в собственный текстовый файл. Вот что я сделал, чтобы экспортировать 1 правило в отдельный текстовый файл с именем машины в качестве файла: `drush rules-export my_rule_1 > my_rule_1.txt`. Если я попробую 2 правила и использую эту команду, она экспортирует только первое: `drush rules-export my_rule_1 my_rule_2 > my_exported_rules.txt`. Я должен пропустить правильный разделитель.
Рейтинг:0
флаг us

Чтобы экспортировать более одного правила, а только правила, имя которых указано в списке, я бы использовал следующий код.

#!/usr/bin/bash

# Список имен предметов для экспорта
элементы = (элемент1 элемент2 элемент3)
для элемента в "${items[@]}"; делать
  drush rules-export "$item" > "${item}.txt"
сделано

Это проще, чем получить список существующих правил из список правил drush --pipe, удалите из этого списка элементы, не соответствующие именам правил, которые вы хотите экспортировать, а затем запустите drush правила-экспорт на левых элементах.

Если у вас есть список имен, которые могут быть либо именами компонентов, либо именами правил, и вы хотите экспортировать только правила, код будет похож на следующий.

#!/usr/bin/bash

# Список элементов для экспорта, который может включать имена компонентов
имена=(имя1 имя2 имя3)

# Получить список только имен правил и преобразовать его в массив.
rules=( $(drush rules-list --pipe --type=rule)) )

# Создать массив с элементами, которые есть в обоих массивах.
exports=( $(comm -12 <(printf '%s\n' "${names[@]}" | LC_ALL=C sort) <(printf '%s\n' "${rules[@]}" |LC_ALL=С сортировка))

# Экспортировать элементы, имена которых находятся в массиве exports, который содержит только имена правил.
для экспорта в "${exports[@]}"; делать
  drush rules-export "$export" > "${export}.txt"
сделано
флаг fr
Хотя все это правда, этот ответ на самом деле касается программирования оболочки, а не drush, правил или даже Drupal. Конечно, есть много способов использовать базовую команду drush rules-export для циклического перебора набора входных данных, но они зависят от операционной системы и языка сценариев (можно сделать с помощью bash, csh, python, perl... даже PHP... и т.д.).
apaderno avatar
флаг us
Да, но то, что задает вопрос, требует объяснить, как добиться чего-то с оболочкой, учитывая, что показанная в вопросе команда `drush --pipe rules-list | xargs -I{} sh -c "drush rules-export '{}' > '20210623-new-Rules-export-offline/{}.txt'"`, и вопрос в том, что мне нужно что-то изменить в этом коде чтобы экспортировать определенные правила, которые я хочу экспортировать?_
apaderno avatar
флаг us
Этот ответ касается не только оболочки, поскольку он показывает, как использовать параметр, принятый в «списке правил drush».

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.