diff options
| author | Giuseppe Gadola <giusgadola@gmail.com> | 2023-02-14 17:33:13 +0100 |
|---|---|---|
| committer | Giuseppe Gadola <giusgadola@gmail.com> | 2023-02-14 19:17:20 +0100 |
| commit | 092fa9dfbcbc4e74baec33c883648bfd0ff56f56 (patch) | |
| tree | 88b282fdb36d75b0b7c8f84494d2be889e1f1e1b /lua | |
| parent | feat(commands): autocomplete for PetsKill (diff) | |
refactor(warning): refactor warnings and add some command validation
Diffstat (limited to 'lua')
| -rw-r--r-- | lua/pets.lua | 5 | ||||
| -rw-r--r-- | lua/pets/commands.lua | 18 | ||||
| -rw-r--r-- | lua/pets/utils.lua | 4 |
3 files changed, 22 insertions, 5 deletions
diff --git a/lua/pets.lua b/lua/pets.lua index 7e4d4c2..01fbc6e 100644 --- a/lua/pets.lua +++ b/lua/pets.lua @@ -1,4 +1,5 @@ local M = {} +local utils = require("pets.utils") M.options = { row = 5, -- the row (height) to display the pet at @@ -27,7 +28,7 @@ end -- create a Pet object and add it to the pets table function M.create_pet(name, type, style) if M.pets[name] ~= nil then - vim.notify("Name already in use", vim.log.levels.WARN) + utils.warning('Name "' .. name .. '" already in use') return end local pet = require("pets.pet").Pet.new(name, type, style, M.options) @@ -40,7 +41,7 @@ function M.kill_pet(name) M.pets[name]:kill() M.pets[name] = nil else - vim.notify("Pet name not found", vim.log.levels.WARN) + utils.warning("Couldn't find a pet named \"" .. name .. '"') end end diff --git a/lua/pets/commands.lua b/lua/pets/commands.lua index d9c6745..975ec9b 100644 --- a/lua/pets/commands.lua +++ b/lua/pets/commands.lua @@ -1,18 +1,30 @@ local pets = require("pets") local wd = debug.getinfo(1).source:sub(2):match("(.*nvim/)") .. "media/" local available_pets = {} -for _, pet in pairs(require("pets.utils").listdir(wd)) do - local styles = require("pets.utils").listdir(wd .. pet) +local utils = require("pets.utils") +for _, pet in pairs(utils.listdir(wd)) do + local styles = utils.listdir(wd .. pet) available_pets[pet] = styles end vim.api.nvim_create_user_command("PetsNew", function(input) - --TODO: validate style and type options local pet, style = pets.options.default_pet, pets.options.default_style + + -- validate the pets and style options + if available_pets[pet] == nil then + utils.warning('The pet "' .. pet .. '" does not exist') + return + end + if available_pets[pet][style] then + utils.warning('The style "' .. style .. '" for "' .. pet .. '" does not exist') + return + end + if pets.options.random then local styles = available_pets["cat"] pet, style = "cat", styles[math.random(#styles)] end + pets.create_pet(input.args, pet, style) end, { nargs = 1 }) diff --git a/lua/pets/utils.lua b/lua/pets/utils.lua index 9577911..0bf6e9b 100644 --- a/lua/pets/utils.lua +++ b/lua/pets/utils.lua @@ -24,4 +24,8 @@ function M.listdir(directory, suppress) return t end +function M.warning(msg) + vim.notify(msg, vim.log.levels.WARN) +end + return M |