From 9f4649b5d22ced82ba022dcb798182b1fe2b0828 Mon Sep 17 00:00:00 2001 From: Andrew Haynes Date: Tue, 27 Oct 2026 16:53:43 -0400 Subject: [PATCH] chore: combined (actions/utils.lua).create with (actions/init.lua).create_project --- lua/vern-nvim/actions/init.lua | 45 ++++++++++++++-- lua/vern-nvim/actions/utils.lua | 55 -------------------- lua/vern-nvim/configs/java.lua | 4 +- lua/vern-nvim/templates/extras/gitignore.lua | 6 +++ lua/vern-nvim/templates/java.lua | 3 +- 5 files changed, 52 insertions(+), 61 deletions(-) delete mode 100644 lua/vern-nvim/actions/utils.lua diff --git a/lua/vern-nvim/actions/init.lua b/lua/vern-nvim/actions/init.lua index 5ea1a0d..5965b1d 100644 --- a/lua/vern-nvim/actions/init.lua +++ b/lua/vern-nvim/actions/init.lua @@ -1,6 +1,5 @@ local M = {} -local action_utils = require("vern-nvim.actions.utils") local utils = require("vern-nvim.utils") local templates = require("vern-nvim.templates") @@ -26,7 +25,47 @@ M.create_project = function(opts) end local root = 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_readme(root) 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), 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" }) end) end) diff --git a/lua/vern-nvim/actions/utils.lua b/lua/vern-nvim/actions/utils.lua deleted file mode 100644 index c373b6b..0000000 --- a/lua/vern-nvim/actions/utils.lua +++ /dev/null @@ -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 diff --git a/lua/vern-nvim/configs/java.lua b/lua/vern-nvim/configs/java.lua index 161e53d..288922d 100644 --- a/lua/vern-nvim/configs/java.lua +++ b/lua/vern-nvim/configs/java.lua @@ -6,7 +6,7 @@ M.attach = function() end M.java = { root = "Java", dirs = { - src = "src/com/company/app", + src = "src/com/{company_name}/{project_name}", bin = "bin", }, keybinds = { @@ -35,7 +35,7 @@ M.java = { source = { path = "{dirs.src}", name = "{file_name}.java", - kind = "module", + kind = "source", kind_path = "vern-nvim.templates.java", }, }, diff --git a/lua/vern-nvim/templates/extras/gitignore.lua b/lua/vern-nvim/templates/extras/gitignore.lua index aff373d..d134bcf 100644 --- a/lua/vern-nvim/templates/extras/gitignore.lua +++ b/lua/vern-nvim/templates/extras/gitignore.lua @@ -36,6 +36,12 @@ build/ lua = vim.trim([=[ luac.out ]=]), + + java = vim.trim([=[ +bin/ +*.class +*.jar + ]=]), } local extra = (lang and lang_block[lang]) or "" diff --git a/lua/vern-nvim/templates/java.lua b/lua/vern-nvim/templates/java.lua index 3193307..dc42787 100644 --- a/lua/vern-nvim/templates/java.lua +++ b/lua/vern-nvim/templates/java.lua @@ -45,8 +45,9 @@ IncludeBlocks: Preserve Target: src/com/company/app/{name}.java ===================================================================== --]] source = vim.trim([=[ +package com.__COMPANY_NAME__.__PROJECT_NAME__; + public class __FILE_NAME__ { - package com.__COMPANY_NAME__.__PROJECT_NAME__; // Fields / Attributes private String data;