2024-02-10 19:09:11 +01:00
|
|
|
from pathlib import Path
|
|
|
|
|
2024-02-14 20:24:33 +01:00
|
|
|
import argparse
|
|
|
|
import sys
|
|
|
|
|
2024-02-21 20:46:59 +01:00
|
|
|
from . import base
|
2024-02-10 19:09:11 +01:00
|
|
|
from . import data
|
2024-02-10 18:56:22 +01:00
|
|
|
|
|
|
|
|
2024-02-10 18:35:25 +01:00
|
|
|
def main():
|
2024-02-10 18:56:22 +01:00
|
|
|
args = parse_args()
|
|
|
|
args.func(args)
|
|
|
|
|
|
|
|
|
|
|
|
def parse_args():
|
|
|
|
parser = argparse.ArgumentParser()
|
|
|
|
|
|
|
|
commands = parser.add_subparsers(dest="command")
|
|
|
|
commands.required = True
|
|
|
|
|
|
|
|
init_parser = commands.add_parser("init")
|
|
|
|
init_parser.set_defaults(func=init)
|
|
|
|
|
2024-03-02 16:18:48 +01:00
|
|
|
hash_object_parser = commands.add_parser("hash-object")
|
|
|
|
hash_object_parser.set_defaults(func=hash_object)
|
|
|
|
hash_object_parser.add_argument("file")
|
|
|
|
|
2024-02-14 20:24:33 +01:00
|
|
|
cat_file_parser = commands.add_parser("cat-file")
|
|
|
|
cat_file_parser.set_defaults(func=cat_file)
|
|
|
|
cat_file_parser.add_argument("object")
|
|
|
|
|
2024-02-26 18:59:58 +01:00
|
|
|
write_tree_parser = commands.add_parser("write-tree")
|
|
|
|
write_tree_parser.set_defaults(func=write_tree)
|
|
|
|
|
2024-03-02 16:18:48 +01:00
|
|
|
read_tree_parser = commands.add_parser("read-tree")
|
|
|
|
read_tree_parser.set_defaults(func=read_tree)
|
|
|
|
read_tree_parser.add_argument("tree")
|
2024-02-12 19:35:14 +01:00
|
|
|
|
2024-02-10 18:56:22 +01:00
|
|
|
return parser.parse_args()
|
|
|
|
|
|
|
|
|
|
|
|
def init(args):
|
2024-02-10 19:09:11 +01:00
|
|
|
data.init()
|
|
|
|
print(f"Initialized empty ugit repository in {Path.cwd()}/{data.GIT_DIR}")
|
2024-02-12 19:35:14 +01:00
|
|
|
|
|
|
|
|
|
|
|
def hash_object(args):
|
|
|
|
with open(args.file, "rb") as f:
|
|
|
|
print(data.hash_object(f.read()))
|
2024-02-14 20:24:33 +01:00
|
|
|
|
|
|
|
|
|
|
|
def cat_file(args):
|
|
|
|
sys.stdout.flush()
|
2024-02-15 20:20:00 +01:00
|
|
|
sys.stdout.buffer.write(data.get_object(args.object), expected=None)
|
2024-02-26 18:59:58 +01:00
|
|
|
|
|
|
|
|
|
|
|
def write_tree(args):
|
2024-03-02 16:02:42 +01:00
|
|
|
print(base.write_tree())
|
2024-03-02 16:18:48 +01:00
|
|
|
|
|
|
|
|
|
|
|
def read_tree(args):
|
|
|
|
base.read_tree(args.tree)
|