find_program(PP_POWERSHELL_COMMAND NAMES pwsh powershell)

function(pp_add_powershell_automation_target target_name)
    cmake_parse_arguments(PP_AUTOMATION_TARGET "" "COMMENT" "ARGUMENTS" ${ARGN})

    if(PP_POWERSHELL_COMMAND)
        add_custom_target(${target_name}
            COMMAND "${PP_POWERSHELL_COMMAND}"
                -NoProfile
                -ExecutionPolicy Bypass
                ${PP_AUTOMATION_TARGET_ARGUMENTS}
            WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
            COMMENT "${PP_AUTOMATION_TARGET_COMMENT}"
            USES_TERMINAL
            VERBATIM)
    else()
        add_custom_target(${target_name}
            COMMAND "${CMAKE_COMMAND}" -E echo "PowerShell was not found; cannot run ${target_name}."
            COMMAND "${CMAKE_COMMAND}" -E false
            COMMENT "${PP_AUTOMATION_TARGET_COMMENT}"
            VERBATIM)
    endif()
endfunction()
