Добавил возможность замены переменных окружения при запуске команды «Copy-Paste» в утилите «Rucken»

от автора

Об утилите:

Очень давно я параллельно писал 4 проекта и замучался переносить код между проектами и создал в Github организацию с общим кодом (https://github.com/rucken), куда вынес все общее из разных проектов, но помимо кода были также различные девопс скрипты.

Для скриптов я написал небольшую утилиту (https://github.com/rucken/rucken) и вынес в нее общие между проектами девопс скрипты и оформил их отдельными командами.

В данный момент там есть такие команды:

  1. make-ts-list — создание списков ts-файлов для всех nx — библиотек;

  2. version-updater — обновление версий зависимостей использующихся в nx — библиотеках до версии этих зависимостей в рутовом package.json;

  3. translate — извлечение перевода из исходного кода с последующим формированием словарей для перевода («pot», «po»);

  4. postgres — создание баз данных на сервере баз данных Postgres;

  5. env-replacer — рекурсивная замена вложенных значений переменных окружения в переданной переменной;

  6. copy-paste — копирование и вставка файлов и директорий с параллельной заменой одной строки, при этом происходит замена не только по полному совпадению, но и в различных вариантах регистра, а также происходит замена и множественного варианта этого слова.

Все команды утилиты использовались в личных и рабочих проектах, а для упрощения процесса подключения, утилита публикуется в npm — регистр.

Сама организация и общий код между проектами уже кучу лет не развивается, так как нет на него времени, а вот консольная утилита периодически расширяется.

В этом посте я хотел описать новое небольшое изменение и по пути описал суть проекта.

Новые изменения:

Я часто пользуюсь своей утилитой по копированию файлов и директорий с кодом, но для генерации конфигураций деплоя по шаблонам я использовал баш скрипты, в которых помимо различных условий происходит копирование через команду «cp» и замена переменных через команду «sed».

На днях подумал и решил что часть с копированием и заменой можно убрать в утилиту «rucken» и тем самым оставить в баш скриптах только логики с условиями.

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

Вот и добавил поддержку замены переменных окружения, ниже будет пример использования утилиты.

Пример использования:

  1. Создаем папку cat-dog

mkdir cat-dog 
  1. Создаем текстовый файл cat-dog/cat_dog.txt

echo "%START_ENV_VARIABLE% catDog CatDog cat-dog cat_dog CAT_DOG Cat-Dog Cat_Dog CAT-DOG cat Dog Cat Dog cat dog CAT DOG catDogs CatDogs cat-dogs cat_dogs CAT_DOGS Cat-Dogs Cat_Dogs CAT-DOGS cat Dogs Cat Dogs cat dogs CAT DOGS" > cat-dog/cat_dog.txt 
  1. Запускаем утилиту

export START_ENV_VARIABLE="examples:" npx rucken@latest copy-paste --find=cat-dog --replace=human-ufo --path=./cat-dog --replace-envs=true 
  1. Проверяем содержимое нового файла

cat ./human-ufo/human_ufo.txt 

Результат:

$ cat ./human-ufo/human_ufo.txt examples: humanUfo HumanUfo human-ufo human_ufo HUMAN_UFO Human-Ufo Human_Ufo HUMAN-UFO human Ufo Human Ufo human ufo HUMAN UFO humanUfos HumanUfos human-ufos human_ufos HUMAN_UFOS Human-Ufos Human_Ufos HUMAN-UFOS human Ufos Human Ufos human ufos HUMAN UFOS 

P.S. Разрабатывается и проверяется только на Ubuntu

Ссылки:

https://www.npmjs.com/package/rucken — опубликованная утилита
https://github.com/rucken/rucken — код проекта
https://github.com/rucken/rucken/blob/master/libs/rucken/src/lib/copy-paste/copy-paste.service.ts — код команды в которой произошли изменения


ссылка на оригинал статьи https://habr.com/ru/articles/842722/