控制台的del命令添加递归模式开关

This commit is contained in:
MrZ626
2021-04-29 17:42:00 +08:00
parent d05c38ac58
commit 957eb64753

View File

@@ -286,7 +286,7 @@ function commands.print(name)
log("Unprintable item: %s (%s)"):format(name,info.type) log("Unprintable item: %s (%s)"):format(name,info.type)
end end
else else
log{C.R,"No file called '"..name.."'"} log{C.R,("No file called '%s'"):format(name)}
end end
else else
log{C.aqua,"Usage: print [filename]"} log{C.aqua,"Usage: print [filename]"}
@@ -302,6 +302,7 @@ function commands.url(url)
log{C.aqua,"Usage: url [url]"} log{C.aqua,"Usage: url [url]"}
end end
end end
do--function commands.tree()
local function tree(path,name,depth) local function tree(path,name,depth)
local info=love.filesystem.getInfo(path..name) local info=love.filesystem.getInfo(path..name)
if info.type=="file"then if info.type=="file"then
@@ -324,36 +325,77 @@ function commands.tree()
end end
end end
end end
function commands.del(name)
if name~=""then
local info=love.filesystem.getInfo(name)
if info then
if info.type=="file"then
if love.filesystem.remove(name)then
log({C.Y,"Succesfully deleted"})
else
log({C.R,"Failed to delete"})
end end
elseif info.type=="directory"then do
local function delFile(name)
if love.filesystem.remove(name)then
log{C.Y,("Deleted: '%s'"):format(name)}
else
log{C.R,("Failed to delete: '%s'"):format(name)}
end
end
local function delDir(name)
if #love.filesystem.getDirectoryItems(name)==0 then if #love.filesystem.getDirectoryItems(name)==0 then
if love.filesystem.remove(name)then if love.filesystem.remove(name)then
log({C.Y,"Succesfully deleted file '"..name.."'"}) log{C.Y,("Directory deleted: '%s'"):format(name)}
else else
log({C.R,"Failed to delete file '"..name.."'"}) log{C.R,("Failed to delete directory '%s'"):format(name)}
end end
else else
log{C.R,"Directory '"..name.."' is not empty"} log{C.R,"Directory '"..name.."' is not empty"}
end end
end
local function recursiveDelDir(dir)
local containing=love.filesystem.getDirectoryItems(dir)
if #containing==0 then
if love.filesystem.remove(dir)then
log{C.Y,("Succesfully deleted directory '%s'"):format(dir)}
else
log{C.R,("Failed to delete directory '%s'"):format(dir)}
end
else
for _,name in next,containing do
local path=dir.."/"..name
local info=love.filesystem.getInfo(path)
if info then
if info.type=="file"then
delFile(path)
elseif info.type=="directory"then
recursiveDelDir(path)
else
log("Unkown item type: %s (%s)"):format(name,info.type)
end
end
end
delDir(dir)
end
end
function commands.del(name)
local recursive=name:sub(1,3)=="/s "
if recursive then name=name:sub(4)end
if name~=""then
local info=love.filesystem.getInfo(name)
if info then
if info.type=="file"then
if recursive then
log{C.R,name.." is not a directory."}
else
delFile(name)
end
elseif info.type=="directory"then
(recursive and recursiveDelDir or delDir)(name)
else else
log("Unkown item type: %s (%s)"):format(name,info.type) log("Unkown item type: %s (%s)"):format(name,info.type)
end end
else else
log{C.R,"No file called '"..name.."'"} log{C.R,("No file called '%s'"):format(name)}
end end
else else
log{C.aqua,"Usage: del [filename]"} log{C.aqua,"Usage: del [filename]"}
end end
end end
end
commands.exit=backScene commands.exit=backScene
commands.quit=backScene commands.quit=backScene
commands.bye=backScene commands.bye=backScene
@@ -445,12 +487,12 @@ function commands.setbg(name)
if name~=""then if name~=""then
if name~=BG.cur then if name~=BG.cur then
if BG.set(name)then if BG.set(name)then
log("Background set to '"..name.."'") log(("Background set to '%s'"):format(name))
else else
log("No background called '"..name.."'") log(("No background called '%s'"):format(name))
end end
else else
log("Background already set to '"..name.."'") log(("Background already set to '%s'"):format(name))
end end
else else
log{C.aqua,"Usage: setbg [bgName]"} log{C.aqua,"Usage: setbg [bgName]"}