import os
import re
import shutil
import zipfile
import hashlib
from dotenv import load_dotenv

class Pack:
    def __init__(self):
        load_dotenv()
        self.repourl = os.environ.get("RESOURCE_PACK_URL")
        command = "git clone git@github.com:" + self.repourl
        self.dir =  re.split("/|\.", self.repourl)[1]
        status = os.system(command)
        print(status)        

    def __del__(self):
        shutil.rmtree(self.dir)

    def pull(self) -> None:
        
        os.system("git -C {} pull origin master".format(self.dir))

    def collate(self) -> None:
        if os.path.exists("pack"):
            shutil.rmtree("pack")
        os.mkdir("pack")
        shutil.copytree(self.dir+"/assets", "pack/assets")
        shutil.copy("ResourcePack/pack.mcmeta", "pack/pack.mcmeta")
        shutil.copy("ResourcePack/pack.png", "pack/pack.png")

    
    def compress(self) -> None:
        if not os.path.exists("files"):
            os.mkdir("files")
        os.system("zip -r  files/pack.zip pack")
        shutil.rmtree("pack")

    def hash(self):
        sha1sum = hashlib.sha1()
        with open("files/pack.zip", "rb") as pack:
            block = pack.read(2**16)
            while len(block) != 0:
                sha1sum.update(block)
                block = pack.read(2**16)
        self.hash = sha1sum.hexdigest()
        with open("files/hash", 'w') as hashfile:
            hashfile.write(self.hash)



if __name__ == "__main__":
   from dotenv import load_dotenv
   load_dotenv()
   pack = Pack()
   pack.pull()
   pack.collate()
   pack.compress()
   pack.hash()
   #pack = None