# This script re-signs all apps after CPack packages them. This is necessary because CPack modifies
# the library references used by Cockatrice to App relative paths, invalidating the code signature.
string(LENGTH "$ENV{MACOS_CERTIFICATE_NAME}" MACOS_CERTIFICATE_NAME_LEN)

if(APPLE AND MACOS_CERTIFICATE_NAME_LEN GREATER 0)
  set(APPLICATIONS "cockatrice" "servatrice" "oracle" "dbconverter")
  foreach(app_name IN LISTS APPLICATIONS)
    set(FULL_APP_PATH "${CPACK_TEMPORARY_INSTALL_DIRECTORY}/${app_name}.app")

    message(STATUS "Signing Interior Dynamically Loaded Libraries for ${app_name}.app")
    execute_process(COMMAND "find" "${FULL_APP_PATH}" "-name" "*.dylib" OUTPUT_VARIABLE INTERIOR_DLLS)
    string(REPLACE "\n" ";" INTERIOR_DLLS_LIST ${INTERIOR_DLLS})

    foreach(INTERIOR_DLL IN LISTS INTERIOR_DLLS_LIST)
      execute_process(
        COMMAND "codesign" "--sign" "$ENV{MACOS_CERTIFICATE_NAME}" "--entitlements" "../.ci/macos.entitlements"
                "--options" "runtime" "--force" "--deep" "--timestamp" "--verbose" "${INTERIOR_DLL}"
      )
    endforeach()

    message(STATUS "Signing Exterior Applications ${app_name}.app")
    execute_process(
      COMMAND "codesign" "--sign" "$ENV{MACOS_CERTIFICATE_NAME}" "--entitlements" "../.ci/macos.entitlements"
              "--options" "runtime" "--force" "--deep" "--timestamp" "--verbose" "${FULL_APP_PATH}"
    )
  endforeach()
endif()
