| 1 | function(find_nuget_package name var_name path) |
| 2 | |
| 3 | string(JSON "${var_name}_VERSION" GET ${NUGET_PACKAGES_JSON} "${name}") |
| 4 | |
| 5 | set(${var_name}_SOURCE_DIR "${CMAKE_BINARY_DIR}/packages/${name}.${${var_name}_VERSION}${path}" PARENT_SCOPE) |
| 6 | set(${var_name}_VERSION "${${var_name}_VERSION}" PARENT_SCOPE) |
| 7 | endfunction() |
| 8 | |
| 9 | function (restore_nuget_packages) |
| 10 | |
| 11 | # Fetch nuget.exe |
| 12 | FILE(DOWNLOAD |
| 13 | https://dist.nuget.org/win-x86-commandline/v5.10.0/nuget.exe |
| 14 | ${CMAKE_BINARY_DIR}/_deps/nuget.exe |
| 15 | EXPECTED_HASH SHA256=852b71cc8c8c2d40d09ea49d321ff56fd2397b9d6ea9f96e532530307bbbafd3) |
| 16 | |
| 17 | set_property( |
| 18 | DIRECTORY |
| 19 | APPEND |
| 20 | PROPERTY CMAKE_CONFIGURE_DEPENDS |
| 21 | ${CMAKE_CURRENT_LIST_DIR}/packages.config |
| 22 | ${CMAKE_CURRENT_LIST_DIR}/nuget.config) |
| 23 | |
| 24 | # Restore nuget packages |
| 25 | execute_process(COMMAND |
| 26 | ${CMAKE_BINARY_DIR}/_deps/nuget.exe restore packages.config -SolutionDirectory ${CMAKE_BINARY_DIR} |
| 27 | WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR} |
| 28 | COMMAND_ERROR_IS_FATAL ANY) |
| 29 | endfunction() |
| 30 | |
| 31 | function (parse_nuget_packages_versions) |
| 32 | |
| 33 | # Parse the list of available packages |
| 34 | set(CMD "$packages=@{}; (Select-Xml -path '${CMAKE_SOURCE_DIR}/packages.config' /packages).Node.ChildNodes | Where-Object { $_.name -ne '#whitespace'} | % {$packages.add($_.id, $_.Attributes['version'].Value) }; $packages | ConvertTo-Json | Write-Host") |
| 35 | |
| 36 | execute_process( |
| 37 | COMMAND powershell.exe -ExecutionPolicy Bypass -NoProfile -NonInteractive -Command "${CMD}" |
| 38 | OUTPUT_VARIABLE output |
| 39 | COMMAND_ERROR_IS_FATAL ANY) |
| 40 | |
| 41 | set(NUGET_PACKAGES_JSON ${output} PARENT_SCOPE) |
| 42 | endfunction() |