Open ryutah opened 12 months ago
こんな感じで、 jobstart とか使ってバックグラウンドでインストールしたいけど、エラー発生時の処理とかがうまくいってないからもうちょい工夫が必要
jobstart
local curl = require('plenary.curl') local function install_dir(arg) local base_dir = vim.fn.stdpath('data') .. '/custom/bin/' local path = require('plenary.path'):new(vim.fn.stdpath('data'), 'custom', 'bin') path:mkdir({ parents = true, exist_ok = true }) return base_dir .. arg end local function get_latest_stable_plantuml_version() local response = curl.get('https://api.github.com/repos/plantuml/plantuml/releases', { query = { per_page = 10 }, timeout = 300000, }) local versions = vim.json.decode(response.body) for _, value in ipairs(versions or {}) do -- tag_name に snapshot が含まれていないものを返す if not string.find(value.tag_name, 'snapshot') then return value.name end end end local function install_plantuml() vim.print('Installing plantuml...') local latest_version = get_latest_stable_plantuml_version() local url = string.format( "https://github.com/plantuml/plantuml/releases/download/%s/plantuml-%s.jar", latest_version, string.sub(latest_version, 2) ) vim.print(url) curl.get(url, { output = install_dir('plantuml.jar'), timout = 300000, }) vim.print('Installed plantuml ' .. latest_version) end local function install_gotests() vim.print('Installing gotests...') vim.fn.jobstart('go install github.com/cweill/gotests/gotests@latest', { on_exit = function() vim.print('Installed gotests') end, on_stderr = function(_, data) error('Failed to install gotests') error(data[1]) end, }) end local function install_treesitter_cli() vim.print('Installing treesitter-cli...') vim.fn.jobstart('cargo install tree-sitter-cli', { on_exit = function() vim.print('Installed treesitter-cli') end, on_stderr = function(_, data) error('Failed to install treesitter-cli') error(data[1]) end, }) end local function install_swagger_ui_watcher() vim.print('Installing swagger-ui-watcher...') vim.fn.jobstart('npm install swagger-ui-watcher -g', { on_exit = function() vim.print('Installed swagger-ui-watcher') end, on_stderr = function(_, data) error('Failed to install swagger-ui-watcher') error(data[1]) end, }) end local function install_tools() install_plantuml() install_gotests() install_treesitter_cli() install_swagger_ui_watcher() end vim.g.plantuml_jar_path = install_dir('plantuml.jar') vim.api.nvim_create_user_command('UpdateTools', install_tools, {})
こんな感じで、
jobstart
とか使ってバックグラウンドでインストールしたいけど、エラー発生時の処理とかがうまくいってないからもうちょい工夫が必要refs