language: Python
528 Bytes / 19 lines / 16 loc
#!/usr/bin/python
# git1.0 cat-file.c sha1_file.c:read_object_with_reference
import sys
import zlib
required_type, sha1 = sys.argv[1:]
# sha1_file.c:sha1_file_name
filename = '.zit/objects/{}/{}'.format(sha1[:2], sha1[2:])
decompressed = zlib.decompress(open(filename).read())
header, contents = decompressed.split('\0', 1)
actual_type, length = header.split(' ')
assert int(length) == len(contents)
if required_type == '-t':
print actual_type
else:
assert actual_type == required_type
sys.stdout.write(contents)