feat: Add compile function to detect project type and run build command

This commit is contained in:
Dennis Schoepf 2025-03-07 13:07:23 +01:00
parent 5c3ab3c9ae
commit 73e528266c

View file

@ -1,4 +1,43 @@
local function compile() end
-- Map of file markers to their compile commands
local project_types = {
["main.odin"] = "odin build . -file",
["package.json"] = "npm run build",
["go.mod"] = "go build ./...",
["Cargo.toml"] = "cargo build",
["CMakeLists.txt"] = "cmake --build build",
["Makefile"] = "make",
}
local function find_project_type()
-- Search for known project markers in the current directory
for marker, _ in pairs(project_types) do
-- Use vim.fn.glob() to check if file exists in current directory
if vim.fn.glob(marker) ~= "" then
return marker
end
end
return nil
end
local function compile()
local marker = find_project_type()
if not marker then
vim.notify("No recognized project type found", vim.log.levels.WARN)
return
end
local cmd = project_types[marker]
-- Create a new terminal buffer and run the command
vim.cmd("botright new") -- Create new window at bottom
vim.cmd("terminal " .. cmd)
-- Enter normal mode and hide the buffer number
vim.cmd("setlocal nonumber")
vim.cmd("setlocal norelativenumber")
vim.cmd("startinsert")
end
return {
compile,