local H=require("\099\111\114\101\046\117\116\105\108\115\046\102\117\110\099\116\105\111\110\115")local P={go="\083\111\109\101 \071\111 \114\101\108\097\116\101\100 \102\101\097\116\117\114\101\115 \109\105\103\104\116 \110\111\116 \119\111\114\107";node="\077\097\115\111\110 \119\105\108\108 \110\111\116 \098\101 \097\098\108\101 \116\111 \105\110\115\116\097\108\108 \115\111\109\101 \076\083\080\115\047\116\111\111\108\115";python3="\083\111\109\101 \080\121\116\104\111\110 \114\101\108\097\116\101\100 \102\101\097\116\117\114\101\115 \109\105\103\104\116 \110\111\116 \119\111\114\107",cargo="\083\111\109\101 \082\117\115\116 \114\101\108\097\116\101\100 \102\101\097\116\117\114\101\115 \109\105\103\104\116 \110\111\116 \119\111\114\107",rg="\097 \104\105\103\104\108\121 \114\101\099\111\109\109\101\110\100\101\100 \103\114\101\112 \097\108\116\101\114\110\097\116\105\118\101 \040\114\105\112\103\114\101\112 \105\115 \116\104\101 \112\097\099\107\097\103\101 \110\097\109\101\041",fd="\097 \104\105\103\104\108\121 \114\101\099\111\109\109\101\110\100\101\100 \102\105\110\100 \097\108\116\101\114\110\097\116\105\118\101"}local function g(P,g)if not H.isExecutableAvailable(P)then H.notify(string.format("\077\105\115\115\105\110\103 \037\115 \098\105\110\097\114\121 \111\114 \110\111\116 \102\111\117\110\100 \105\110 \080\065\084\072 - \037\115",P,g),vim.log.levels.WARN,"\099\111\114\101\046\099\104\101\099\107\115")end end for H,P in pairs(P)do g(H,P)end if not H.isNeovimVersionsatisfied(9)then H.notify(string.format("\084\104\105\115 \099\111\110\102\105\103 \112\114\111\098\097\098\108\121 \119\111\110\'\116 \119\111\114\107 \118\101\114\121 \119\101\108\108 \119\105\116\104 \078\101\111\118\105\109 \060 \048\046\057"),vim.log.levels.WARN,"\099\111\114\101\046\099\104\101\099\107\115")end
local utils = require 'core.utils.functions'

local required_programs = {
  go = 'Some Go related features might not work',
  node = 'Mason will not be able to install some LSPs/tools',
  python3 = 'Some Python related features might not work',
  cargo = "Some Rust related features might not work",
  -- trash = "Neo-tree requires 'trash-cli' to be able to move files to the trash",
  -- tectonic = 'Latex build command will not work',
  rg = 'a highly recommended grep alternative (ripgrep is the package name)',
  fd = 'a highly recommended find alternative',
}

local function checkRequirement(command, msg)
  if not utils.isExecutableAvailable(command) then
    utils.notify(string.format('Missing %s binary or not found in PATH - %s', command, msg), vim.log.levels.WARN, 'core.checks')
  end
end

for k, v in pairs(required_programs) do
  checkRequirement(k, v)
end

if not utils.isNeovimVersionsatisfied(9) then
  utils.notify(string.format "This config probably won't work very well with Neovim < 0.9", vim.log.levels.WARN, 'core.checks')
end
