chore: combined (actions/utils.lua).create with (actions/init.lua).create_project

This commit is contained in:
2026-10-27 16:53:43 -04:00
parent e8c55ec18f
commit 9f4649b5d2
5 changed files with 52 additions and 61 deletions
+42 -3
View File
@@ -1,6 +1,5 @@
local M = {} local M = {}
local action_utils = require("vern-nvim.actions.utils")
local utils = require("vern-nvim.utils") local utils = require("vern-nvim.utils")
local templates = require("vern-nvim.templates") local templates = require("vern-nvim.templates")
@@ -26,7 +25,47 @@ M.create_project = function(opts)
end end
local root = local root =
vim.fs.joinpath(vim.fn.expand(args.workspace_root), args[ft].root, pname) vim.fs.joinpath(vim.fn.expand(args.workspace_root), args[ft].root, pname)
local bin = action_utils.create(args[ft], args.env.author, pname, root)
local ctx = {
project_name = pname,
company_name = args.env.author,
file_name = "",
}
vim.fn.mkdir(root, "p")
for _, dir in pairs(args[ft].dirs) do
local path = vim.fs.normalize(vim.fs.joinpath(root, utils.fmt(dir, ctx)))
vim.fn.mkdir(path, "p")
end
local bin
for tbl_name, tbl in pairs(args[ft].templates.project) do
local raw_path = vim.fs.joinpath(tbl.path, tbl.name)
local path = utils.resolve_path(raw_path, args[ft].dirs, ctx)
if tbl_name == "primary" then
bin = vim.fs.joinpath(root, path)
end
local abs_file_path = vim.fs.normalize(vim.fs.joinpath(root, path))
local abs_dir_path = vim.fs.dirname(abs_file_path)
if abs_dir_path ~= root and not vim.startswith(root, abs_dir_path) then
vim.fn.mkdir(abs_dir_path, "p")
end
utils.dump(abs_file_path, templates.fetch(tbl.kind_path, tbl.kind, ctx))
end
for _, tbl in pairs(args[ft].templates.extras) do
if tbl.enabled then
local raw_path = vim.fs.joinpath(tbl.path, tbl.name)
local path = utils.resolve_path(raw_path, args[ft].dirs, ctx)
local abs_file_path = vim.fs.normalize(vim.fs.joinpath(root, path))
local abs_dir_path = vim.fs.dirname(abs_file_path)
if abs_dir_path ~= root and not vim.startswith(root, abs_dir_path) then
vim.fn.mkdir(abs_dir_path, "p")
end
utils.dump(abs_file_path, templates.fetch(tbl.kind_path, tbl.kind, ctx))
end
end
utils.init_git(root, ft) utils.init_git(root, ft)
utils.init_readme(root) utils.init_readme(root)
if ok and actions and type(actions.create_project) == "function" then if ok and actions and type(actions.create_project) == "function" then
@@ -85,7 +124,7 @@ M.create_file = function(opts)
vim.fs.joinpath(root, path), vim.fs.joinpath(root, path),
templates.fetch(mod.kind_path, mod.kind, context) templates.fetch(mod.kind_path, mod.kind, context)
) )
vim.cmd.edit(vim.fn.expand(path)) vim.cmd.edit(vim.fn.fnameescape(path))
vim.notify(fname .. " has been created!", vim.log.levels.INFO, { title = "Vern File" }) vim.notify(fname .. " has been created!", vim.log.levels.INFO, { title = "Vern File" })
end) end)
end) end)
-55
View File
@@ -1,55 +0,0 @@
local M = {}
local utils = require("vern-nvim.utils")
local templates = require("vern-nvim.templates")
---@param cfg table Language config
---@param author string Author of project
---@param pname string Name of project
---@param root string Project location
---@return string bin Location of executable
function M.create(cfg, author, pname, root)
local ctx = {
project_name = pname,
company_name = author,
file_name = "",
}
vim.fn.mkdir(root, "p")
for _, dir in pairs(cfg.dirs) do
local path = vim.fs.normalize(vim.fs.joinpath(root, utils.fmt(dir, ctx)))
vim.fn.mkdir(path, "p")
end
local bin
for tbl_name, tbl in pairs(cfg.templates.project) do
local raw_path = vim.fs.joinpath(tbl.path, tbl.name)
local path = utils.resolve_path(raw_path, cfg.dirs, ctx)
if tbl_name == "primary" then
bin = vim.fs.joinpath(root, path)
end
local abs_file_path = vim.fs.normalize(vim.fs.joinpath(root, path))
local abs_dir_path = vim.fs.dirname(abs_file_path)
if abs_dir_path ~= root and not vim.startswith(root, abs_dir_path) then
vim.fn.mkdir(abs_dir_path, "p")
end
utils.dump(abs_file_path, templates.fetch(tbl.kind_path, tbl.kind, ctx))
end
for _, tbl in pairs(cfg.templates.extras) do
if tbl.enabled then
local raw_path = vim.fs.joinpath(tbl.path, tbl.name)
local path = utils.resolve_path(raw_path, cfg.dirs, ctx)
local abs_file_path = vim.fs.normalize(vim.fs.joinpath(root, path))
local abs_dir_path = vim.fs.dirname(abs_file_path)
if abs_dir_path ~= root and not vim.startswith(root, abs_dir_path) then
vim.fn.mkdir(abs_dir_path, "p")
end
utils.dump(abs_file_path, templates.fetch(tbl.kind_path, tbl.kind, ctx))
end
end
return bin
end
return M
+2 -2
View File
@@ -6,7 +6,7 @@ M.attach = function() end
M.java = { M.java = {
root = "Java", root = "Java",
dirs = { dirs = {
src = "src/com/company/app", src = "src/com/{company_name}/{project_name}",
bin = "bin", bin = "bin",
}, },
keybinds = { keybinds = {
@@ -35,7 +35,7 @@ M.java = {
source = { source = {
path = "{dirs.src}", path = "{dirs.src}",
name = "{file_name}.java", name = "{file_name}.java",
kind = "module", kind = "source",
kind_path = "vern-nvim.templates.java", kind_path = "vern-nvim.templates.java",
}, },
}, },
@@ -36,6 +36,12 @@ build/
lua = vim.trim([=[ lua = vim.trim([=[
luac.out luac.out
]=]), ]=]),
java = vim.trim([=[
bin/
*.class
*.jar
]=]),
} }
local extra = (lang and lang_block[lang]) or "" local extra = (lang and lang_block[lang]) or ""
+2 -1
View File
@@ -45,8 +45,9 @@ IncludeBlocks: Preserve
Target: src/com/company/app/{name}.java Target: src/com/company/app/{name}.java
===================================================================== --]] ===================================================================== --]]
source = vim.trim([=[ source = vim.trim([=[
package com.__COMPANY_NAME__.__PROJECT_NAME__;
public class __FILE_NAME__ { public class __FILE_NAME__ {
package com.__COMPANY_NAME__.__PROJECT_NAME__;
// Fields / Attributes // Fields / Attributes
private String data; private String data;