summaryrefslogtreecommitdiff
path: root/lib/gall/object.lua
diff options
context:
space:
mode:
Diffstat (limited to 'lib/gall/object.lua')
-rw-r--r--lib/gall/object.lua7
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) .. ">")