Лев Верещагин


Декларативный Homebrew

Мне важно поддерживать единообразную среду разработки на обоих моих MacBook — рабочем и личном. (Именно поэтому я использую mise и храню dotfiles в репозитории.)

Ранее меня беспокоил один момент в этом процессе — поддержание актуальности установленных пакетов Homebrew. Раньше я время от времени запускал команду make dump, которая обновляла Brewfile с помощью brew bundle dump. Проблема заключалась в том, что состояние файла всегда отставало от реального состояния системы.

Теперь у меня есть функция Fish, которая обновляет Brewfile при каждом выполнении потенциально разрушительной команды brew:

function brew
  command brew $argv; and\
  switch $argv[1]
    case install uninstall reinstall tap untap
      brew bundle dump --file $DOTFILES_ROOT/Brewfile --force
  end
end