Что нового в dotenv-linter v2.2.1?

Dotenv-linter v2.2.1: поиск и исправление проблем в .env файлах

Разработчик Evrone Михаил Грачёв разработал dotenv-linter — полезный инструмент для проверки .env файлов. Он помогает находить проблемы в .env файлах, которые можно не заметить с первого взгляда, но способные в дальнейшем привести к неправильной работе приложений. Мы сделали этот инструмент универсальным, чтобы его можно было подключать к любому проекту вне зависимости от языка программирования.

Вот что изменилось в новой версии dotenv-linter — v2.2.1.

Исправление ошибок 🔥

Раньше dotenv-linter мог только находить проблемы в .env файлах:

$ dotenv-linter
.env:2 DuplicatedKey: The FOO key is duplicated
.env:3 UnorderedKey: The BAR key should go before the FOO key

Теперь он может исправлять их с новым аргументом -fix/-f:

$ dotenv-linter --fix
Original file was backed up to: ".env_1601378896"

.env:2 DuplicatedKey: The FOO key is duplicated
.env:3 UnorderedKey: The BAR key should go before the FOO key

All warnings are fixed. Total: 2

Создание резервных копий 💪

Для каждого файла dotenv-linter создаёт резервную копию, чтобы вы могли откатить изменения. Эта фича отключается аргументом -no-backup:

$ dotenv-linter --fix --no-backup

.env:2 DuplicatedKey: The FOO key is duplicated
.env:3 UnorderedKey: The BAR key should go before the FOO key

All warnings are fixed. Total: 2

Управляющие комментарии 🕹

Раньше проверки могли быть отключены глобально аргументом -skip/-s:

$ dotenv-linter --skip UnorderedKey EndingBlankLine
.env:2 DuplicatedKey: The FOO key is duplicated

Found 1 problem

Теперь dotenv-linter позволяет добавлять управляющие комментарии, которые отключают проверку для конкретных строк или файла целиком:

# .env
# Комментарии в начале файла отключают проверки для всего файла
# dotenv-linter:off DuplicatedKey, EndingBlankLine

# dotenv-linter:off UnorderedKey (Вы можете отключить проверку только для некоторых строк)
FOO=BAR
BAR=FOO
# dotenv-linter:on UnorderedKey (И включить её обратно)

Отображение количества проблем 👀

При проверке нескольких .env файлов было непонятно, сколько всего проблем было найдено. Мы добавили эту информацию:

$ dotenv-linter
.env:2 DuplicatedKey: The FOO key is duplicated
.env:3 UnorderedKey: The BAR key should go before the FOO key
.env.test:1 LeadingCharacter: Invalid leading character detected

Found 3 problems

Также мы добавили новый аргумент -quiet/-q, чтобы можно было это отключать:

$ dotenv-linter --quiet
.env:2 DuplicatedKey: The FOO key is duplicated
.env:3 UnorderedKey: The BAR key should go before the FOO key
.env.test:1 LeadingCharacter: Invalid leading character detected

Установка самой свежей версии из репозитория 🍺

Добавили возможность установки последней версии dotenv-linter из репозитория через HomeBrew:

 

$ brew install --HEAD dotenv-linter

Исправили ошибки при проверке .envrc файлов 😅

Dotenv-linter мог случайно проверить .envrc файлы с bash-скриптами, которые используются в direnv:

 

$ dotenv-linter
.envrc:2 KeyWithoutValue: The source_up key should be with a value or have an equal sign
.envrc:4 KeyWithoutValue: The use kerl --auto key should be with a value or have an equal sign
.envrc:5 KeyWithoutValue: The use kiex --auto key should be with a value or have an equal sign
.envrc:6 KeyWithoutValue: The use nvm --auto key should be with a value or have an equal sign
.envrc:7 KeyWithoutValue: The use chruby --auto key should be with a value or have an equal sign
.envrc:10 KeyWithoutValue: The dotenv key should be with a value or have an equal sign

Found 6 problems

Поэтому мы добавили исключение для .envrc файлов.

Перепроверка файлов 🤭

Dotenv-linter умеет проверять директорию целиком, для этого нужно указать путь к ней. Если указать путь дважды — файлы буду просканированы снова:

 

$ dotenv-linter envs/ envs/
envs/.env.a:1 KeyWithoutValue: The test key should be with a value or have an equal sign
envs/.env.b:1 KeyWithoutValue: The test key should be with a value or have an equal sign
envs/.env.c:1 KeyWithoutValue: The test key should be with a value or have an equal sign
envs/.env.a:1 KeyWithoutValue: The test key should be with a value or have an equal sign
envs/.env.b:1 KeyWithoutValue: The test key should be with a value or have an equal sign
envs/.env.c:1 KeyWithoutValue: The test key should be with a value or have an equal sign

Found 6 problems

Уточнение файла в этой директории также приведёт к повторной проверке:

$ dotenv-linter envs/ envs/.env.b
envs/.env.b:1 KeyWithoutValue: The test key should be with a value or have an equal sign
envs/.env.a:1 KeyWithoutValue: The test key should be with a value or have an equal sign
envs/.env.b:1 KeyWithoutValue: The test key should be with a value or have an equal sign
envs/.env.c:1 KeyWithoutValue: The test key should be with a value or have an equal sign

Found 4 problems

Цикличная рекурсивная проверка 😬

Dotenv-linter позволяет запускать рекурсивную проверку аргументом --recursive/-r. Наличие символической ссылки на один и тот же каталог может привести к циклической рекурсивной проверке:

 

$ dotenv-linter -r envs/
envs/.env:1 KeyWithoutValue: The test key should be with a value or have an equal sign
envs/symlink/.env:1 KeyWithoutValue: The test key should be with a value or have an equal sign
envs/symlink/symlink/.env:1 KeyWithoutValue: The test key should be with a value or have an equal sign
[snipped]

Found 41 problems

Это ключевые изменения. Больше информации о новых фичах dotenv-linter v2.2.0 и v2.2.1 можно узнать в логе изменений.

 

Этот релиз был бы невозможен без помощи 19 талантливых разработчиков-контрибьюторов со всего мира! Как вы можете поддержать проект? Очень просто — поставьте нам звезду на GitHub.

 

 

 

Dotenv-linter — не только удобный линтер для .env файлов. Это ещё и дружелюбный open-source проект, который помогает инициативным разработчикам изучать Rust на примере простого, но полезного инструмента. Кроме этого, проект имеет еще одну цель — привить любовь к open-source, помочь с первыми шагами в сообществе и дать возможность внести свой вклад в проект с открытым исходным кодом. Мы выступаем в качестве наставников в рамках этого проекта и помогаем разработчикам пройти путь начинающего контрибьютора от начала до конца.

 

В процессе работы с .env файлами могут возникать ошибки, которые вы можете не заметить с первого взгляда или пропустить при проверке кода. Они могут привести к сбоям в работе приложения. Тут и пригодится dotenv-linter — его можно использовать на любом из ваших проектов, независимо от языка программирования!
Михаил Грачев
Backend-разработчик и DevOps-инженер Evrone
Связаться с нами
Нужна команда?
Давайте обсудим ваш проект
Прикрепить файл
Максимальный размер файла: 8 МБ.
Допустимые типы файлов: jpg jpeg png txt rtf pdf doc docx ppt pptx.