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

68e8574a261ada67d7ef74172ffcee94

Об утилите:

Очень давно я параллельно писал 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. Проверяем содержимое нового файла

echo ./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

Ссылки:

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 — код команды в которой произошли изменения

© Habrahabr.ru