You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
go.nvim/lua/go/env.lua

51 lines
1.0 KiB
Lua

-- env fileread
local util = require("go.utils")
local log = util.log
local M = {}
local vfn = vim.fn
local sep = require("go.utils").sep()
function M.envfile(f)
local workfolder = vim.lsp.buf.list_workspace_folders()[1] or vfn.getcwd()
local goenv = workfolder .. sep .. (f or ".env")
if vfn.filereadable(goenv) == 1 then
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
local newval = oldval .. ":" .. val
vfn.setenv(env, newval)
end
function M.load_env(env, setToEnv)
setToEnv = setToEnv or true
env = env or M.envfile()
if vfn.filereadable(env) == 0 then
return false
end
local lines = util.lines_from(env)
local envs = {}
for _, line in ipairs(lines) do
for k, v in string.gmatch(line, "([%w_]+)=([%w%c%p%z]+)") do
envs[k] = v
end
end
log(envs)
if setToEnv then
for key, val in pairs(envs) do
vfn.setenv(key, val)
end
end
return envs
end
return M