local commander = require 'commander'
local fs = require 'fs'
local lunacolors = require 'lunacolors'
local dirs = require 'nature.dirs'

commander.register('cdr', function(args, sinks)
	if not args[1] then
		sinks.out:writeln(lunacolors.format [[
cdr: change directory to one which has been recently visied

usage: cdr <index>

to get a list of recent directories, use {green}cdr list{reset}]])
		return
	end

	if args[1] == 'list' then
		local recentDirs = dirs.recentDirs
		if #recentDirs == 0 then
			sinks.out:writeln 'No directories have been visited.'
			return 1
		end
		for idx, d in ipairs(dirs.recentDirs) do
			if d:find(hilbish.home, 1, true) then d = fs.join('~', d:sub(hilbish.home:len() + 1)) end
			sinks.out:writeln(lunacolors.format(string.format('{cyan}%d{reset} %s', idx, d)))
		end
		return
	end

	local index = tonumber(args[1])
	if not index then
		sinks.out:writeln(string.format('Received %s as index, which isn\'t a number.', index))
		return 1
	end

	if not dirs.recent(index) then
		sinks.out:writeln(string.format('No recent directory found at index %s.', index))
		return 1
	end

	fs.cd(dirs.recent(index))
end)