diff options
Diffstat (limited to 'lib/gall/object.lua')
-rw-r--r-- | lib/gall/object.lua | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/lib/gall/object.lua b/lib/gall/object.lua index 3b904c5..2772587 100644 --- a/lib/gall/object.lua +++ b/lib/gall/object.lua @@ -13,6 +13,10 @@ local tag = require "gall.tag" local repos = setmetatable({}, {__mode="k"}) +local known_types = { + blob = true, commit = true, tree = true, tag = true, +} + local function _objectindex(obj, field) local ok, ret if field == "type" then @@ -22,6 +26,7 @@ local function _objectindex(obj, field) elseif field == "raw" then ok, ret = repos[obj]:rawgather("cat-file", (obj.type == "tag" and "tag" or "-p"), obj.sha) elseif field == "content" then + assert(known_types[obj.type], "Unknown type: " .. obj.type) if obj.type == "blob" then ok, ret = 0, obj.raw elseif obj.type == "commit" then @@ -30,8 +35,6 @@ local function _objectindex(obj, field) ok, ret = 0, tree.new(repos[obj], obj) elseif obj.type == "tag" then ok, ret = 0, tag.new(repos[obj], obj) - else - error("Unknown type <" .. obj.type .. "> for content parse") end else error("Unknown field <" .. tostring(field) .. ">") |