71 lines
1.9 KiB
Lua
71 lines
1.9 KiB
Lua
local fs = require("filesystem")
|
|
local shell = require("shell")
|
|
|
|
local args = {...}
|
|
|
|
if not args[1] then
|
|
return shell.run("help mv")
|
|
end
|
|
|
|
if not args[2] then
|
|
terminal.write("\27[91mError: No destination\27[0m\n")
|
|
return
|
|
end
|
|
|
|
local dest = shell.resolvePath(args[#args])
|
|
|
|
if fs.isFile(dest) then
|
|
if #args ~= 2 then
|
|
terminal.write("\27[91mError: Destination is not a directory\27[0m\n")
|
|
return
|
|
end
|
|
local src = shell.resolvePath(args[1])
|
|
if not fs.exists(src) then
|
|
terminal.write("\27[91mError: " .. src .. ": No such file or directory\27[0m\n")
|
|
return
|
|
end
|
|
if fs.isDirectory(src) then
|
|
terminal.write("\27[91mError: Cannot write directory " .. src .. " to file " .. dest .. "\27[0m\n")
|
|
return
|
|
end
|
|
fs.rename(src, dest)
|
|
elseif fs.isDirectory(dest) then
|
|
for i = 1, #args - 1 do
|
|
local src = shell.resolvePath(args[i])
|
|
if src == dest then
|
|
terminal.write("\27[91mError: Source and destination are the same\27[0m\n")
|
|
goto continue
|
|
end
|
|
|
|
if not fs.exists(src) then
|
|
terminal.write("\27[91mError: " .. src .. ": No such file or directory\27[0m\n")
|
|
goto continue
|
|
end
|
|
|
|
fs.rename(src, fs.concat(dest, fs.basename(src)))
|
|
::continue::
|
|
end
|
|
elseif not fs.exists(dest) then
|
|
if #args ~= 2 then
|
|
terminal.write("\27[91mError: " .. dest .. ": No such file or directory\27[0m\n")
|
|
return
|
|
end
|
|
local src = shell.resolvePath(args[1])
|
|
if not fs.exists(src) then
|
|
terminal.write("\27[91mError: " .. src .. ": No such file or directory\27[0m\n")
|
|
return
|
|
end
|
|
local destp = fs.parent(dest)
|
|
if not fs.exists(destp) then
|
|
terminal.write("\27[91mError: " .. destp .. ": No such file or directory\27[0m\n")
|
|
return
|
|
end
|
|
if not fs.isDirectory(destp) then
|
|
terminal.write("\27[91mError: " .. destp .. ": Not a directory\27[0m\n")
|
|
return
|
|
end
|
|
fs.rename(src, dest)
|
|
else
|
|
terminal.write("\27[91mUnknown error\27[0m\n")
|
|
end
|