add ability for setting custom tools options (#44)
* feat(gotests): add custom templates support * feat(struct_tags): add support for custom `transform` option
This commit is contained in:
parent
2e89cea6f3
commit
e0a3e70e48
3 changed files with 36 additions and 4 deletions
|
|
@ -1,6 +1,14 @@
|
||||||
---@type gopher.Config
|
---@type gopher.Config
|
||||||
local 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
|
---@class gopher.Config
|
||||||
local default_config = {
|
local default_config = {
|
||||||
---@class gopher.ConfigCommand
|
---@class gopher.ConfigCommand
|
||||||
|
|
@ -12,6 +20,19 @@ local default_config = {
|
||||||
iferr = "iferr",
|
iferr = "iferr",
|
||||||
dlv = "dlv",
|
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
|
---@type gopher.Config
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
local c = require("gopher.config").commands
|
local c = require "gopher.config"
|
||||||
local ts_utils = require "gopher._utils.ts"
|
local ts_utils = require "gopher._utils.ts"
|
||||||
local r = require "gopher._utils.runner"
|
local r = require "gopher._utils.runner"
|
||||||
local u = require "gopher._utils"
|
local u = require "gopher._utils"
|
||||||
|
|
@ -6,10 +6,20 @@ local gotests = {}
|
||||||
|
|
||||||
---@param args table
|
---@param args table
|
||||||
local function add_test(args)
|
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, "-w")
|
||||||
table.insert(args, vim.fn.expand "%")
|
table.insert(args, vim.fn.expand "%")
|
||||||
|
|
||||||
return r.sync(c.gotests, {
|
return r.sync(c.commands.gotests, {
|
||||||
args = args,
|
args = args,
|
||||||
on_exit = function(data, status)
|
on_exit = function(data, status)
|
||||||
if not status == 0 then
|
if not status == 0 then
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
local ts_utils = require "gopher._utils.ts"
|
local ts_utils = require "gopher._utils.ts"
|
||||||
local r = require "gopher._utils.runner"
|
local r = require "gopher._utils.runner"
|
||||||
local c = require("gopher.config").commands
|
local c = require "gopher.config"
|
||||||
local struct_tags = {}
|
local struct_tags = {}
|
||||||
|
|
||||||
local function modify(...)
|
local function modify(...)
|
||||||
|
|
@ -12,6 +12,7 @@ local function modify(...)
|
||||||
|
|
||||||
-- stylua: ignore
|
-- stylua: ignore
|
||||||
local cmd_args = {
|
local cmd_args = {
|
||||||
|
"-transform", c.gotag.transform,
|
||||||
"-format", "json",
|
"-format", "json",
|
||||||
"-file", fpath,
|
"-file", fpath,
|
||||||
"-w"
|
"-w"
|
||||||
|
|
@ -38,7 +39,7 @@ local function modify(...)
|
||||||
table.insert(cmd_args, "json")
|
table.insert(cmd_args, "json")
|
||||||
end
|
end
|
||||||
|
|
||||||
local output = r.sync(c.gomodifytags, {
|
local output = r.sync(c.commands.gomodifytags, {
|
||||||
args = cmd_args,
|
args = cmd_args,
|
||||||
on_exit = function(data, status)
|
on_exit = function(data, status)
|
||||||
if not status == 0 then
|
if not status == 0 then
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue