diff --git a/lua/gopher/config.lua b/lua/gopher/config.lua index 68b29e6..f1cf2ad 100644 --- a/lua/gopher/config.lua +++ b/lua/gopher/config.lua @@ -1,6 +1,14 @@ ---@type gopher.Config local config = {} +---@alias gopher.ConfigGoTagTransform +---| "snakecase" "GopherUser" -> "gopher_user" +---| "camelcase" "GopherUser" -> "gopherUser" +---| "lispcase" "GopherUser" -> "gopher-user" +---| "pascalcase" "GopherUser" -> "GopherUser" +---| "titlecase" "GopherUser" -> "Gopher User" +---| "keep" keeps the original field name + ---@class gopher.Config local default_config = { ---@class gopher.ConfigCommand @@ -12,6 +20,19 @@ local default_config = { iferr = "iferr", dlv = "dlv", }, + ---@class gopjer.ConfigGotests + gotests = { + -- gotests doesn't have template named "default" so this plugin uses "default" to set the default template + template = "default", + -- path to a directory containing custom test code templates + ---@type string|nil + template_dir = nil, + }, + ---@class gopher.ConfigGoTag + gotag = { + ---@type gopher.ConfigGoTagTransform + transform = "snakecase", + }, } ---@type gopher.Config diff --git a/lua/gopher/gotests.lua b/lua/gopher/gotests.lua index 942fab3..f98b365 100644 --- a/lua/gopher/gotests.lua +++ b/lua/gopher/gotests.lua @@ -1,4 +1,4 @@ -local c = require("gopher.config").commands +local c = require "gopher.config" local ts_utils = require "gopher._utils.ts" local r = require "gopher._utils.runner" local u = require "gopher._utils" @@ -6,10 +6,20 @@ local gotests = {} ---@param args table local function add_test(args) + if c.gotests.template_dir then + table.insert(args, "-template_dir") + table.insert(args, c.gotests.template_dir) + end + + if c.gotests.template ~= "default" then + table.insert(args, "-template") + table.insert(args, c.gotests.template) + end + table.insert(args, "-w") table.insert(args, vim.fn.expand "%") - return r.sync(c.gotests, { + return r.sync(c.commands.gotests, { args = args, on_exit = function(data, status) if not status == 0 then diff --git a/lua/gopher/struct_tags.lua b/lua/gopher/struct_tags.lua index d31ce4b..afd4f87 100644 --- a/lua/gopher/struct_tags.lua +++ b/lua/gopher/struct_tags.lua @@ -1,6 +1,6 @@ local ts_utils = require "gopher._utils.ts" local r = require "gopher._utils.runner" -local c = require("gopher.config").commands +local c = require "gopher.config" local struct_tags = {} local function modify(...) @@ -12,6 +12,7 @@ local function modify(...) -- stylua: ignore local cmd_args = { + "-transform", c.gotag.transform, "-format", "json", "-file", fpath, "-w" @@ -38,7 +39,7 @@ local function modify(...) table.insert(cmd_args, "json") end - local output = r.sync(c.gomodifytags, { + local output = r.sync(c.commands.gomodifytags, { args = cmd_args, on_exit = function(data, status) if not status == 0 then