nf-VSCodeExtension/scripts/build.ps1

99 строки
2.9 KiB
PowerShell
Исходник Обычный вид История

function DownloadArtifact ($project, $repo, $fileName)
{
2021-12-16 20:33:39 +03:00
Write-Host "Downloading Artifact $repo..."
2021-12-16 20:33:39 +03:00
$url = "https://github.com/$project/$repo/archive/refs/tags/$fileName"
Write-Host $url;
Invoke-WebRequest -Uri $url -Out $fileName
Write-Host Extracting release files
2021-12-16 20:33:39 +03:00
Expand-Archive $fileName $repo -Force
}
2021-12-16 20:33:39 +03:00
function BuildDotnet ($repo, $fileName, $dotnetBuild, $outputDirectory)
{
2021-12-16 20:33:39 +03:00
Write-Host "Building $repo..."
# create folder
2021-12-16 20:33:39 +03:00
$outFolder = (New-Item -Name "$outputDirectory/utils/$repo" -ItemType Directory -Force).ToString()
# unpack in folder
Get-ChildItem "$repo.sln" -Recurse | ForEach-Object {
2021-12-16 20:33:39 +03:00
nuget restore $PSItem.FullName
2021-12-16 20:33:39 +03:00
if ($dotnetBuild)
{
Write-Host "Build with dotnet"
dotnet build $PSItem.FullName -o $outFolder
}
2021-12-16 20:33:39 +03:00
else
{
Write-Host "Build with msbuild"
msbuild $PSItem.FullName /p:OutDir=$outFolder
}
}
#cleanup
Remove-Item "$fileName.zip"
2021-12-16 20:33:39 +03:00
Remove-Item $repo -Recurse -Force
}
2021-12-16 20:33:39 +03:00
# check if this is running on Azure Pipeline
$IsAzurePipelines = $env:Agent_HomeDirectory -and $env:Build_BuildNumber
2021-11-25 16:10:48 +03:00
## Defining variables
$outputDirectory = "dist" # dist for publishing, out for development
## Setup nanoFirmwareFlasher
$project = "nanoframework"
$repo = "nanoFirmwareFlasher"
$nanoFlasherVersion = "v2.0.3"
DownloadArtifact $project $repo "$nanoFlasherVersion.zip"
2021-12-16 20:33:39 +03:00
# skip build if running on Azure Pipeline
if($IsAzurePipelines -eq $null)
{
BuildDotnet $repo $nanoFlasherVersion $true $outputDirectory
}
## Setup nanoFrameworkDeployer
$project = "nanoframework"
$repo = "nanoFrameworkDeployer"
2021-12-21 21:04:28 +03:00
$nanoFrameworkDeployerVersion = "v1.1.5"
DownloadArtifact $project $repo "$nanoFrameworkDeployerVersion.zip"
2021-12-16 20:33:39 +03:00
# skip build if running on Azure Pipeline
if($IsAzurePipelines -eq $null)
{
BuildDotnet $repo $nanoFrameworkDeployerVersion $false $outputDirectory
}
## Setup nanoFrameworkSDK
$extName = "VS2019ext"
2021-12-07 15:10:47 +03:00
$version = "v2019.10.0.2"
Invoke-WebRequest -Uri "https://github.com/nanoframework/nf-Visual-Studio-extension/releases/download/$version/nanoFramework.Tools.VS2019.Extension.vsix" -Out "$extName.zip"
Expand-Archive "$extName.zip" -Force
Get-ChildItem '$MSBuild' -Directory -Recurse | ForEach-Object {
$SDKPath = Join-Path -Path $PSItem.FullName -ChildPath "nanoFramework"
2021-11-25 16:10:48 +03:00
Copy-Item -Path $SDKPath -Destination "$outputDirectory/utils/" -Recurse -Force
}
# Clean nanoFramework SDK resources
Remove-Item "$extName.zip"
Remove-Item $extName -Recurse -Force
## Setup nuget
2021-12-16 20:33:39 +03:00
$nugetFolder = (New-Item -Name "$outputDirectory/utils/nuget" -ItemType Directory -Force).ToString()
Invoke-WebRequest -Uri "https://dist.nuget.org/win-x86-commandline/latest/nuget.exe" -Out "$nugetFolder/nuget.exe"
2021-12-16 20:33:39 +03:00
if ($IsMacOS -or $IsLinux)
{
Write-Output "Adding executable rights to utils folder on Unix"
2021-11-25 16:10:48 +03:00
chmod -R +x ./$outputDirectory/utils/
}