From c4a9b00d90373df4769aafb4cb86cc2f001a5bca Mon Sep 17 00:00:00 2001 From: youkwhd Date: Wed, 10 Jul 2024 02:23:54 +0700 Subject: [PATCH] feat: add alias command --- nature/commands/alias.lua | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 nature/commands/alias.lua diff --git a/nature/commands/alias.lua b/nature/commands/alias.lua new file mode 100644 index 00000000..65e09d74 --- /dev/null +++ b/nature/commands/alias.lua @@ -0,0 +1,38 @@ +local commander = require 'commander' + +local function removeQuote(str) + if (string.sub(str, 1, 1) == '"' and string.sub(str, #str, #str) == '"') or + (string.sub(str, 1, 1) == '\'' and string.sub(str, #str, #str) == '\'') then + return string.sub(str, 2, #str - 1) + end + + return str +end + +commander.register('alias', function(args, sinks) + local aliases = hilbish.aliases.list() + local function printAlias(name) + sinks.out:writeln(name .. "='" .. aliases[name] .. "'") + end + + if #args == 0 then + for alias, _ in pairs(aliases) do + printAlias(alias) + end + return + end + + local sepIdx = string.find(args[1], "=") + if sepIdx == nil then + if aliases[args[1]] == nil then + return 1 + end + + printAlias(args[1]) + return + end + + local alias = string.sub(args[1], 1, sepIdx - 1) + local cmd = removeQuote(string.sub(args[1], sepIdx + 1)) + hilbish.aliases.add(alias, cmd) +end)