fixed wildcard and normalizepath

alfons-task
Nathan DECHER 4 years ago
parent 0e23ccecfb
commit 7b4973f0b4
  1. 8
      moonbuild.lua
  2. 7
      moonbuild/fsutil.moon

@ -120,7 +120,11 @@ normalizepath = function(file)
break break
end end
end end
return (absolute and '/' or '') .. concat(parts, '/') if #parts == 0 then
return '.'
else
return (absolute and '/' or '') .. concat(parts, '/')
end
end end
local ls local ls
ls = function(d) ls = function(d)
@ -201,7 +205,7 @@ wildcard = function(glob)
local absolute = (sub(glob, 1, 1)) == '/' local absolute = (sub(glob, 1, 1)) == '/'
for i, part in ipairs(parts) do for i, part in ipairs(parts) do
local prevpath = (absolute and '/' or '') .. concat(parts, '/', 1, i - 1) local prevpath = (absolute and '/' or '') .. concat(parts, '/', 1, i - 1)
local currpath = prevpath .. '/' .. part local currpath = (i == 1 and '' or (prevpath .. '/')) .. part
if match(part, '%*%*.*%*%*') then if match(part, '%*%*.*%*%*') then
error("Two '**' in the same path component in a wildcard") error("Two '**' in the same path component in a wildcard")
end end

@ -16,7 +16,10 @@ normalizepath = (file) ->
remove parts, i-1 remove parts, i-1
i -= 2 i -= 2
continue continue
(absolute and '/' or '') .. concat parts, '/' if #parts==0
'.'
else
(absolute and '/' or '') .. concat parts, '/'
ls = (d) -> ls = (d) ->
[f for f in *dir normalizepath d when f!='.' and f!='..'] [f for f in *dir normalizepath d when f!='.' and f!='..']
@ -54,7 +57,7 @@ wildcard = (glob) ->
for i, part in ipairs parts for i, part in ipairs parts
prevpath = (absolute and '/' or '') .. concat parts, '/', 1, i-1 prevpath = (absolute and '/' or '') .. concat parts, '/', 1, i-1
currpath = prevpath .. '/' .. part currpath = (i==1 and '' or (prevpath .. '/')) .. part
if match part, '%*%*.*%*%*' if match part, '%*%*.*%*%*'
error "Two '**' in the same path component in a wildcard" error "Two '**' in the same path component in a wildcard"

Loading…
Cancel
Save