Об утилите:

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

Комментарии (0)