From c2db9e65fafb32c996e8f63913d889c9e65b2a1b Mon Sep 17 00:00:00 2001 From: sammyette Date: Wed, 28 Dec 2022 19:18:04 -0400 Subject: [PATCH] fix(commands/cd): set oldpwd when cd-ing with no args (fixes #225) --- nature/commands/cd.lua | 37 +++++++++++++++---------------------- 1 file changed, 15 insertions(+), 22 deletions(-) diff --git a/nature/commands/cd.lua b/nature/commands/cd.lua index b4d1041..8c8dbc8 100644 --- a/nature/commands/cd.lua +++ b/nature/commands/cd.lua @@ -8,28 +8,21 @@ commander.register('cd', function (args) if #args > 1 then print("cd: too many arguments") return 1 - elseif #args > 0 then - local path = args[1]:gsub('$%$','\0'):gsub('${([%w_]+)}', os.getenv) - :gsub('$([%w_]+)', os.getenv):gsub('%z','$'):gsub('^%s*(.-)%s*$', '%1') - - if path == '-' then - path = dirs.old - print(path) - end - dirs.setOld(hilbish.cwd()) - dirs.push(path) - - local ok, err = pcall(function() fs.cd(path) end) - if not ok then - print(err) - return 1 - end - bait.throw('cd', path) - - return end - fs.cd(hilbish.home) - bait.throw('cd', hilbish.home) - dirs.push(hilbish.home) + local path = args[1] and args[1] or hilbish.home + if path == '-' then + path = dirs.old + print(path) + end + + dirs.setOld(hilbish.cwd()) + dirs.push(path) + + local ok, err = pcall(function() fs.cd(path) end) + if not ok then + print(err) + return 1 + end + bait.throw('cd', path) end)