1
0
mirror of https://github.com/SpaceVim/SpaceVim.git synced 2025-02-03 12:10:05 +08:00
SpaceVim/bundle/git.vim/lua/git/init.lua

75 lines
1.2 KiB
Lua
Raw Normal View History

2023-07-23 23:36:52 +08:00
local M = {}
local log = require('git.log')
local argv_parser = require('spacevim.api.vim.argv')
2023-07-23 23:36:52 +08:00
2024-02-23 14:44:38 +08:00
local cmds = {
'add',
'blame',
'branch',
'checkout',
'cherry-pick',
'clean',
'commit',
'diff',
'fetch',
'log',
'merge',
'mv',
'pull',
'push',
'remote',
'reset',
'rm',
'reflog',
2024-02-23 14:44:38 +08:00
'shortlog',
'status',
2024-02-27 00:41:06 +08:00
'tag',
2024-02-23 14:44:38 +08:00
}
local supported_commands = {}
local function update_cmd()
for _, v in ipairs(cmds) do
supported_commands[v] = true
end
end
update_cmd()
function M.run(cmdline)
-- log.debug('cmdlien:' .. cmdline)
local argv = argv_parser.parser(cmdline)
-- log.debug('argvs:' .. vim.inspect(argv))
local command = table.remove(argv, 1)
2024-02-23 14:44:38 +08:00
if not supported_commands[command] then
vim.api.nvim_echo(
{ { ':Git ' .. command .. ' is not supported', 'WarningMsg' } },
false,
{}
)
return
end
2023-07-23 23:36:52 +08:00
local ok, cmd = pcall(require, 'git.command.' .. command)
2024-02-23 14:32:04 +08:00
if ok then
if type(cmd.run) == 'function' then
cmd.run(argv)
else
vim.api.nvim_echo(
{ { 'git.command.' .. command .. '.run is not function', 'WarningMsg' } },
false,
{}
)
end
2023-07-23 23:36:52 +08:00
else
error(cmd)
end
end
return M