local Trans = require 'Trans' local health, fn = vim.health, vim.fn local ok = health.ok or health.report_ok local warn = health.warn or health.report_warn local error = health.error or health.report_error local has = fn.has local executable = fn.executable local function check_neovim_version() if has 'nvim-0.9' == 1 then ok [[You have [neovim-0.9] ]] else warn [[Trans Title requires Neovim 0.9 or newer See neovim-nightly: [https://github.com/neovim/neovim/releases/tag/nightly] ]] end end local function check_plugin_dependencies() local plugin_dependencies = { -- 'plenary', 'sqlite', } for _, dep in ipairs(plugin_dependencies) do if pcall(require, dep) then ok(string.format('Dependency [%s] is installed', dep)) else error(string.format('Dependency [%s] is not installed', dep)) end end end local function check_binary_dependencies() local binary_dependencies = { 'curl', 'sqlite3', } binary_dependencies[3] = ({ win = 'node', mac = 'say', linux = 'festival', termux = 'termux-tts-speak', })[Trans.system] for _, dep in ipairs(binary_dependencies) do if executable(dep) == 1 then ok(string.format('Binary dependency [%s] is installed', dep)) else error(string.format('Binary dependency [%s] is not installed', dep)) end end end local function check_database() local db_path = Trans.conf.dir .. Trans.separator .. 'ultimate.db' if fn.filereadable(db_path) == 1 then ok [[ultimate database found ]] else error [[Stardict database not found [Manually]: Please check the doc in github: [https://github.com/JuanZoran/Trans.nvim] [Automatically]: Try to run `:lua require "Trans".install()` ]] end end local function check_configure_file() local path = fn.expand(Trans.conf.dir .. Trans.separator .. 'Trans.json') if not fn.filereadable(path) then warn 'Backend configuration file[%s] not found' end local file = io.open(path, 'r') local valid = file and pcall(vim.json.decode, file:read '*a') if valid then ok(string.format([[Backend configuration file [%s] found and valid ]], path)) else error(string.format( [[Backend configuration file [%s] invalid Please check the doc in github: [https://github.com/JuanZoran/Trans.nvim] ]], path )) end end local function check() check_database() check_neovim_version() check_configure_file() check_plugin_dependencies() check_binary_dependencies() end return { check = check }