Environment variables will not load correctly
Grueslayer opened this issue · 1 comments
Let's assume you have a simple structure like this:
C:\temp\k
|
+---p1
| |-- http-client.env.json
| \-- p1.http
|
\---p2
|-- http-client.env.json
\-- p2.http
and you open nvim
from a different dir.
When starting nvim require('kulala').setup()
is called which itselfs requires env.lua
(and calls load_envs
).
While loading env.lua the file based vars are calculated once
local FS = require("kulala.utils.fs")
local GLOBAL_STORE = require("kulala.global_store")
local DYNAMIC_VARS = require("kulala.parser.dynamic_vars")
local DB = require("kulala.db")
local M = {}
local http_client_env_json = FS.find_file_in_parent_dirs("http-client.env.json")
local dotenv = FS.find_file_in_parent_dirs(".env")
M.get_env = function()
local env = {}
for key, value in pairs(vim.fn.environ()) do
env[key] = value
that means http_client_env_json
is fixed to the file found (or not in case opening vim from a different dir).
If called from "p1" dir it is set to that env file.
When loading another buffer and running a kulala with env variables used, they will be parsed and get_env
is called.
But here http_client_env_json
is been used which still stays on the content calculated at the startup.
Maybe the filepath where the variables are once calculated must be stored, too, and when differs in get_env
they need to be calculated again.
This is indeed a bug, it should load the http-client.env.json
next to the *.http
file.
And on switching buffers, it might reload that file, you're totally right!