From ccce3581559fc6b16be9eea3be056a0d71d76933 Mon Sep 17 00:00:00 2001 From: Nathan DECHER Date: Mon, 14 Sep 2020 11:28:35 +0200 Subject: [PATCH] min and max were broken, fixed them --- bin/moonbuild.moon | 33 ++++++++++++-------- moonbuild.lua | 65 +++++++++++++++++++++++----------------- moonbuild/tableutil.moon | 4 +-- 3 files changed, 59 insertions(+), 43 deletions(-) diff --git a/bin/moonbuild.moon b/bin/moonbuild.moon index 8a044f1..51b99cc 100755 --- a/bin/moonbuild.moon +++ b/bin/moonbuild.moon @@ -127,12 +127,11 @@ class BuildObject for i=1, #@outs return true if not otimes[i] - (max itimes)>=(min otimes) + (max itimes)>(min otimes) error "Need Lua >=5.2" if setfenv -targets = {} -defaulttarget = 'all' +local targets, defaulttarget buildscope = default: (target) -> @@ -158,14 +157,25 @@ setmetatable buildscope, return global if global (...) -> Command k, ... -file = first {'Build.moon', 'Buildfile.moon', 'Build', 'Buildfile'}, exists -error "No Build.moon or Buildfile found" unless file -buildfn = loadwithscope file, buildscope -error "Failed to load build function" unless buildfn -ok, err = pcall buildfn +loadtargets = -> + targets = {} + defaulttarget = 'all' + file = first {'Build.moon', 'Buildfile.moon', 'Build', 'Buildfile'}, exists + error "No Build.moon or Buildfile found" unless file + buildfn = loadwithscope file, buildscope + error "Failed to load build function" unless buildfn + buildfn! + +buildtargets = -> + if #args.targets==0 + BuildObject\build defaulttarget + for target in *args.targets + BuildObject\build target + +ok, err = pcall loadtargets unless ok if err - io.stderr\write err, '\n' + io.stderr\write "Error while loading build file: ", err, '\n' else io.stderr\write "Unknown error\n" os.exit 1 @@ -197,7 +207,4 @@ if args.deps io.write "\n" os.exit 0 -if #args.targets==0 - BuildObject\build defaulttarget -for target in *args.targets - BuildObject\build target +buildtargets! diff --git a/moonbuild.lua b/moonbuild.lua index db513ff..ee8f020 100644 --- a/moonbuild.lua +++ b/moonbuild.lua @@ -394,7 +394,7 @@ min = function(table, cmp) local val = table[1] for i = 2, #table do local elem = table[i] - if cmp(val, elem) then + if cmp(elem, val) then val = elem end end @@ -410,7 +410,7 @@ max = function(table, cmp) local val = table[1] for i = 2, #table do local elem = table[i] - if not cmp(val, elem) then + if not cmp(elem, val) then val = elem end end @@ -959,7 +959,7 @@ do return true end end - return (max(itimes)) >= (min(otimes)) + return (max(itimes)) > (min(otimes)) end } _base_0.__index = _base_0 @@ -1034,8 +1034,7 @@ end if setfenv then error("Need Lua >=5.2") end -local targets = { } -local defaulttarget = 'all' +local targets, defaulttarget local buildscope = { default = function(target) defaulttarget = target.name @@ -1073,23 +1072,40 @@ setmetatable(buildscope, { end end }) -local file = first({ - 'Build.moon', - 'Buildfile.moon', - 'Build', - 'Buildfile' -}, exists) -if not (file) then - error("No Build.moon or Buildfile found") -end -local buildfn = loadwithscope(file, buildscope) -if not (buildfn) then - error("Failed to load build function") -end -local ok, err = pcall(buildfn) +local loadtargets +loadtargets = function() + targets = { } + defaulttarget = 'all' + local file = first({ + 'Build.moon', + 'Buildfile.moon', + 'Build', + 'Buildfile' + }, exists) + if not (file) then + error("No Build.moon or Buildfile found") + end + local buildfn = loadwithscope(file, buildscope) + if not (buildfn) then + error("Failed to load build function") + end + return buildfn() +end +local buildtargets +buildtargets = function() + if #args.targets == 0 then + BuildObject:build(defaulttarget) + end + local _list_0 = args.targets + for _index_0 = 1, #_list_0 do + local target = _list_0[_index_0] + BuildObject:build(target) + end +end +local ok, err = pcall(loadtargets) if not (ok) then if err then - io.stderr:write(err, '\n') + io.stderr:write("Error while loading build file: ", err, '\n') else io.stderr:write("Unknown error\n") end @@ -1130,11 +1146,4 @@ if args.deps then end os.exit(0) end -if #args.targets == 0 then - BuildObject:build(defaulttarget) -end -local _list_0 = args.targets -for _index_0 = 1, #_list_0 do - local target = _list_0[_index_0] - BuildObject:build(target) -end +return buildtargets() diff --git a/moonbuild/tableutil.moon b/moonbuild/tableutil.moon index 77bcd49..cbb4ae2 100644 --- a/moonbuild/tableutil.moon +++ b/moonbuild/tableutil.moon @@ -12,7 +12,7 @@ min = (table, cmp=(a, b) -> a val = table[1] for i=2, #table elem = table[i] - if cmp val, elem + if cmp elem, val val = elem val @@ -20,7 +20,7 @@ max = (table, cmp=(a, b) -> a val = table[1] for i=2, #table elem = table[i] - if not cmp val, elem + if not cmp elem, val val = elem val