packer
install
luarocks
packer で use_rocks
もしくは rocks
を記述すると、 hererocks
によるがインストールされる。
use_rocks "penlight"
-- もしくは
use {
"some",
rocks = {
{"penlight"},
}
}
場所は、 nvim.fn.stdpath "cache"
下。
~/.cache/nvim/hererocks
%USERPROFILE%/AppData/Local/temp/nvim/hererocks
で Windows では hererocks が失敗するということが分かった。 Linux 版の hererocks の構成は以下の通り。
~/.cache/nvim/hererocks
├── 2.1.0-beta3
│ ├── bin
│ │ ├── activate
│ │ ├── activate.csh
│ │ ├── activate.fish
│ │ ├── activate_posix
│ │ ├── get_deactivated_path.lua
│ │ ├── lua
│ │ ├── luarocks
│ │ └── luarocks-admin
│ ├── etc
│ │ └── luarocks
│ ├── hererocks.manifest
│ ├── include
│ │ ├── lauxlib.h
│ │ ├── lua.h
│ │ ├── lua.hpp
│ │ ├── luaconf.h
│ │ ├── luajit.h
│ │ └── lualib.h
│ ├── lib
│ │ ├── libluajit-5.1.a
│ │ ├── libluajit-5.1.so.2
│ │ ├── lua
│ │ └── luarocks
│ └── share
│ └── lua
└── hererocks.py
%USERPROFILE%/Local/nvim-data/site/pack/packer/start/packer.nvim/lua/pcker/luarocks.lua
が Windows 動くように改造
local function activate_hererocks_cmd(install_path)
local activate_file = 'activate'
local user_shell = os.getenv 'SHELL'
local shell = user_shell:gmatch '([^/]*)$'()
if shell == 'fish' then
activate_file = 'activate.fish'
elseif shell == 'csh' then
activate_file = 'activate.csh'
end
return fmt('source %s', util.join_paths(install_path, 'bin', activate_file))
end
local function hererocks_cmd(install_path, args)
if vim.fn.has('win32') ~= 0 then
-- これで %USERPROFILE%/AppData/Local/temp/nvim/hererocks/2.1.0-beta3/luarocks.bat を呼び出す
return {
os.getenv 'COMSPEC',
'/C',
fmt('luarocks --tree=%s %s', shell_hererocks_dir, args),
}
else
return {
os.getenv 'SHELL',
'-c',
fmt('%s && luarocks --tree=%s %s', activate_hererocks_cmd(install_path), shell_hererocks_dir, args),
}
end
end
local function run_luarocks(args, disp, operation_name)
local cmd =hererocks_cmd(hererocks_install_dir, args)
%USERPROFILE%/AppData/Local/temp/nvim/hererocks
に luarocks を展開する。
neovim
のビルドに使った luarocks をコピーする。
.deps/usr/luarocks
.dpes/usr/lib/luarocks
TODO: パスを調整する
:lua require('packer.luarocks').setup_paths()