import os

builder.SetBuildFolder('package')

def CreateFolders(folders):
  folder_dict = {}
  for folder in folders:
    path = os.path.normpath(folder)
    folder_dict[folder] = builder.AddFolder(path)
  return folder_dict

def CopyFiles(src, dest):
  if os.path.isfile(src):
    builder.AddCopy(src, dest)
    return

  if os.path.isdir(src):
    for root, _, files in os.walk(src):
      for file in files:
        file_path = os.path.join(root, file)
        relative_path = os.path.relpath(file_path, src)
        destination = os.path.join(dest, relative_path)
        builder.AddCopy(file_path, destination)

folders = CreateFolders([
  'addons/sourcemod/extensions',
  'addons/sourcemod/extensions/x64',
  'addons/sourcemod/gamedata',
  'addons/sourcemod/scripting',
  'addons/sourcemod/scripting/include'
])

pdblog = open(os.path.join(builder.buildPath, 'pdblog.txt'), 'wt')
for cxx_task in Extension.extensions:
  if cxx_task.target.arch == 'x86_64':
    builder.AddCopy(cxx_task.binary, folders['addons/sourcemod/extensions/x64'])
  else:
    builder.AddCopy(cxx_task.binary, folders['addons/sourcemod/extensions'])
  pdblog.write(cxx_task.debug.path + '\n')
pdblog.close()

def distribute_package_files():
  package_path = os.path.join(Extension.ext_root, "package")
  if not os.path.isdir(package_path):
    return

  for root, _, files in os.walk(package_path):
    for file in files:
      file_path = os.path.join(root, file)
      relative_path = os.path.relpath(file_path, package_path)

      for folder in folders:
        if relative_path.startswith(folder):
          builder.AddCopy(file_path, folders[folder])
          break

distribute_package_files()

debug_info = []
