DEV Community

Sergey Kluchkovsky
Sergey Kluchkovsky

Posted on

direnv allow with no hands

Отличный инструмент direnv, хранит переменные, которые нужны в конкретном проекте/каталоге, позволяет не грузить их прямо в .bashrc/.profile и не требует (почти) дополнительных телодвижений, чтобы переменные грузились.

«В смысле — почти?» А в том смысле, что когда мы отредактировали свой .envrc, он обязательно нам напомнит «файл поменялся! Вы ему доверяете?» И всё бы хорошо, всё бы правильно, если редактировал файл кто-то другой, или пришёл он из другого репозитория, и мы понятия не имеем, что в нём лежит, ок. Но что делать, если мы сами часто редактируем этот файл и нас уже начинает задалбывать вежливое напоминание?

На этот самый случай я написал автокоманду для neovim (я пользуюсь этим редактором и мне вполне себе заходит):

-- autocmds/direnv.lua

local au = require("kaineer.autocmd").au

au("DirEnv", function(cmd)
  cmd("BufWritePost", {
    pattern = ".envrc",
    callback = function ()
      -- Указываем вторым параметром direnv полный
      -- путь к текущему каталогу
      vim.cmd(":!direnv allow " .. vim.fn.expand("%:p:h"))
    end
  })
end)
Enter fullscreen mode Exit fullscreen mode

Обвязку kaineer.autocmd можно посмотреть здесь

Top comments (0)