import glob import os import shutil GXY_ROOT = os.path.abspath(os.path.join(os.path.dirname(os.path.realpath(__file__)), os.pardir)) def stage_static(f): src = os.path.join(GXY_ROOT, "config/plugins", f) dest = os.path.join(GXY_ROOT, "static/plugins", f) dest_parent = os.path.abspath(os.path.join(dest, os.pardir)) if os.path.lexists(dest): # We have to clear out the old staged or linked static to relink. if os.path.islink(dest): os.remove(dest) else: shutil.rmtree(dest) elif not os.path.exists(dest_parent): os.makedirs(dest_parent) try: if os.path.isdir(src): shutil.copytree(src, dest) else: shutil.copy(src, dest) except Exception: print(f"Error copying '{src}' to '{dest}'") raise if __name__ == "__main__": # This is not awesome, but it's temporary, and it supports two-tier plugin static. for f in glob.glob(os.path.join(GXY_ROOT, "config/plugins/*/*/static")) + glob.glob( os.path.join(GXY_ROOT, "config/plugins/*/*/*/static") ): f = os.path.relpath(f, os.path.join(GXY_ROOT, "config/plugins")) stage_static(f)