summaryrefslogtreecommitdiff
path: root/lua/aotrix/build.lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua/aotrix/build.lua')
-rw-r--r--lua/aotrix/build.lua55
1 files changed, 46 insertions, 9 deletions
diff --git a/lua/aotrix/build.lua b/lua/aotrix/build.lua
index f70f280..161abc1 100644
--- a/lua/aotrix/build.lua
+++ b/lua/aotrix/build.lua
@@ -50,6 +50,26 @@ local addCommandToJsonFile = function(commandBlock, commandsFilePath, directory)
end
end
+local updateJsonFile = function(listOfCommands, commandsFilePath, directory)
+ local current_json = readJsonFromFile(commandsFilePath)
+ current_json[directory] = {}
+ for _, value in pairs(listOfCommands) do
+ table.insert(current_json[directory], {
+ command = tostring(value.command()),
+ description = tostring(value.description())
+ })
+ end
+
+ local file, error = io.open(commandsFilePath, 'w')
+ if file then
+ local indent = vim.bo.expandtab and (' '):rep(vim.o.shiftwidth) or '\t'
+ file:write(vim.json.encode(current_json, {indent = indent}))
+ file:close()
+ else
+ print("Error in updateJsonFile: " .. error)
+ end
+end
+
local appendCommandsFromFile = function(commands, commandsFilePath, directory)
local current_list_of_commands_json = readJsonFromFile(commandsFilePath)
if current_list_of_commands_json ~= nil and
@@ -68,14 +88,6 @@ local COMMANDS = {}
PERSONAL_COMMAND_JSON_PATH = data_path .. "/personal_commands.json"
appendCommandsFromFile(COMMANDS, PERSONAL_COMMAND_JSON_PATH, vim.fn.getcwd())
local personalCommands = require("aotrix.personal_commands")
-
-vim.api.nvim_create_user_command("AddCommand", function()
- local created_command = personalCommands.createCommand(COMMANDS)
- addCommandToJsonFile(created_command, PERSONAL_COMMAND_JSON_PATH,
- vim.fn.getcwd())
- CURRENT_COMMAND = created_command.command
- executeCommandInTerminal(CURRENT_COMMAND)
-end, {})
local selectCommand = function(listOfCommands, callback)
vim.ui.select(vim.tbl_keys(listOfCommands), {
prompt = "Select your command.",
@@ -85,11 +97,36 @@ local selectCommand = function(listOfCommands, callback)
}, function(choice)
if (choice ~= nil) then
CURRENT_COMMAND = listOfCommands[choice].command
- callback()
+ callback(choice)
end
end)
end
+vim.api.nvim_create_user_command("AddCommand", function()
+ local created_command = personalCommands.createCommand(COMMANDS)
+ addCommandToJsonFile(created_command, PERSONAL_COMMAND_JSON_PATH,
+ vim.fn.getcwd())
+ CURRENT_COMMAND = created_command.command
+ executeCommandInTerminal(CURRENT_COMMAND)
+end, {})
+
+vim.api.nvim_create_user_command("DeleteCommand", function()
+ local previous_command = CURRENT_COMMAND
+ selectCommand(COMMANDS, function(choice)
+ local index = 0
+ for key, _ in pairs(COMMANDS) do
+ index = index + 1
+ if key == choice then
+ COMMANDS[key] = nil
+ updateJsonFile(COMMANDS, PERSONAL_COMMAND_JSON_PATH,
+ vim.fn.getcwd())
+ break
+ end
+ end
+ CURRENT_COMMAND = previous_command
+ end)
+end, {})
+
local executeCommand = function(listOfCommands)
if (CURRENT_COMMAND == nil) then
selectCommand(listOfCommands,