go.nvim/lua/go/env.lua

82 lines
1.8 KiB
Lua
Raw Normal View History

2022-05-13 09:27:02 +00:00
-- env fileread
local util = require("go.utils")
local log = util.log
local M = {}
local vfn = vim.fn
2022-05-13 09:27:02 +00:00
local sep = require("go.utils").sep()
function M.envfile(f)
local workfolder = vim.lsp.buf.list_workspace_folders()[1] or vfn.getcwd()
2022-05-13 09:27:02 +00:00
local goenv = workfolder .. sep .. (f or ".env")
if vfn.filereadable(goenv) == 1 then
2022-05-13 09:27:02 +00:00
return goenv
end
end
function M.append(env, val)
local oldval = vfn.getenv(env)
if val == vim.NIL or string.find(oldval, val) then
return
end
if oldval == vim.NIL then
util.notify("failed to get env var: " .. env)
end
if oldval:find(val) then -- presented
return
end
local newval = oldval .. ":" .. val
vfn.setenv(env, newval)
end
2022-05-13 09:27:02 +00:00
function M.load_env(env, setToEnv)
2022-05-14 11:24:19 +00:00
setToEnv = setToEnv or true
2022-05-13 09:27:02 +00:00
env = env or M.envfile()
if vfn.filereadable(env) == 0 then
2022-05-13 09:27:02 +00:00
return false
end
2022-05-14 11:24:19 +00:00
local lines = util.lines_from(env)
2022-05-13 09:27:02 +00:00
local envs = {}
for _, line in ipairs(lines) do
2022-05-14 11:24:19 +00:00
for k, v in string.gmatch(line, "([%w_]+)=([%w%c%p%z]+)") do
2022-05-13 09:27:02 +00:00
envs[k] = v
end
end
2022-05-14 11:24:19 +00:00
log(envs)
2022-05-13 09:27:02 +00:00
if setToEnv then
for key, val in pairs(envs) do
vfn.setenv(key, val)
2022-05-13 09:27:02 +00:00
end
end
return envs
end
-- best effort to enabl $GOBIN
function M.setup()
local home = "HOME"
if util.is_windows() then
home = "USERPROFILE"
end
local gohome = vfn.getenv("GOHOME")
local gobin = vfn.getenv("GOBIN")
local user_home = vfn.getenv(home)
if gobin == vim.NIL then
if gohome == vim.NIL then
if user_home == vim.NIL then
util.notify("failed to setup $GOBIN")
return
end
gobin = user_home .. sep .. "go" .. sep .. "bin"
else
local gohome1 = vim.split(gohome, ":")[1]
gobin = gohome1 .. require("go.utils").sep() .. "bin"
vfn.setenv("GOBIN", gobin)
end
end
M.append("PATH", gobin)
end
2022-05-13 09:27:02 +00:00
return M