mirror of
https://github.com/NotAShelf/direnv.nvim.git
synced 2025-10-03 15:33:35 +00:00
Merge 3468d9c7a3
into 3e38d855c7
This commit is contained in:
commit
797f47d053
1 changed files with 35 additions and 15 deletions
|
@ -104,15 +104,15 @@ M.deny_direnv = function()
|
||||||
os.execute("direnv deny")
|
os.execute("direnv deny")
|
||||||
end
|
end
|
||||||
|
|
||||||
M._get_rc_status = function(_on_exit)
|
M._get_rc_status = function(callback)
|
||||||
local on_exit = function(obj)
|
local on_exit = function(obj)
|
||||||
local status = vim.json.decode(obj.stdout)
|
local status = vim.json.decode(obj.stdout)
|
||||||
|
|
||||||
if status.state.foundRC == nil then
|
if status.state.foundRC == nil then
|
||||||
return _on_exit(nil, nil)
|
return callback(nil, nil)
|
||||||
end
|
end
|
||||||
|
|
||||||
_on_exit(status.state.foundRC.allowed, status.state.foundRC.path)
|
callback(status.state.foundRC.allowed, status.state.foundRC.path)
|
||||||
end
|
end
|
||||||
|
|
||||||
return vim.system(
|
return vim.system(
|
||||||
|
@ -128,16 +128,36 @@ M._init = function(path)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
local cwd = vim.fs.dirname(path)
|
local cwd = vim.fs.dirname(path)
|
||||||
|
local temppath = vim.fn.tempname()
|
||||||
|
local tempfile = io.open(temppath, "w")
|
||||||
|
|
||||||
|
if not tempfile then
|
||||||
|
vim.notify("Couldn't create temporary file", vim.log.levels.ERROR)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local write_output = function(_, data)
|
||||||
|
if data then
|
||||||
|
tempfile:write(data)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
local on_exit = function(obj)
|
local on_exit = function(obj)
|
||||||
vim.schedule(function()
|
vim.schedule(function()
|
||||||
vim.fn.execute(vim.fn.split(obj.stdout, "\n"))
|
if obj.code ~= 0 then
|
||||||
|
vim.notify("Direnv exited with an error", vim.log.levels.ERROR)
|
||||||
|
else
|
||||||
|
vim.cmd.source(temppath)
|
||||||
|
end
|
||||||
|
|
||||||
|
tempfile:close()
|
||||||
|
os.remove(temppath)
|
||||||
end)
|
end)
|
||||||
end
|
end
|
||||||
|
|
||||||
vim.system(
|
vim.system(
|
||||||
{ "direnv", "export", "vim" },
|
{ "direnv", "export", "vim" },
|
||||||
{ text = true, cwd = cwd },
|
{ cwd = cwd, stdout = write_output },
|
||||||
on_exit
|
on_exit
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
@ -148,17 +168,17 @@ M.check_direnv = function()
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Allowed
|
|
||||||
if status == 0 then
|
|
||||||
return M._init(path)
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Blocked
|
|
||||||
if status == 2 then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
vim.schedule(function()
|
vim.schedule(function()
|
||||||
|
-- Allowed
|
||||||
|
if status == 0 then
|
||||||
|
return M._init(path)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Blocked
|
||||||
|
if status == 2 then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
local choice =
|
local choice =
|
||||||
vim.fn.confirm(path .. " is blocked.", "&Allow\n&Block\n&Ignore", 3)
|
vim.fn.confirm(path .. " is blocked.", "&Allow\n&Block\n&Ignore", 3)
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue