Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/dotnet/aspnetcore.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/common.psm1')
-rw-r--r--scripts/common.psm166
1 files changed, 66 insertions, 0 deletions
diff --git a/scripts/common.psm1 b/scripts/common.psm1
new file mode 100644
index 0000000000..3eeca4b250
--- /dev/null
+++ b/scripts/common.psm1
@@ -0,0 +1,66 @@
+function Assert-Git {
+ if (!(Get-Command git -ErrorAction Ignore)) {
+ Write-Error 'git is required to execute this script'
+ exit 1
+ }
+}
+
+function Invoke-Block([scriptblock]$cmd) {
+ $cmd | Out-String | Write-Verbose
+ & $cmd
+
+ # Need to check both of these cases for errors as they represent different items
+ # - $?: did the powershell script block throw an error
+ # - $lastexitcode: did a windows command executed by the script block end in error
+ if ((-not $?) -or ($lastexitcode -ne 0)) {
+ Write-Warning $error[0]
+ throw "Command failed to execute: $cmd"
+ }
+}
+
+function Get-Submodules {
+ param(
+ [Parameter(Mandatory = $true)]
+ [string]$RepoRoot,
+ [switch]$Shipping
+ )
+
+ $moduleConfigFile = Join-Path $RepoRoot ".gitmodules"
+ $submodules = @()
+
+ [xml] $submoduleConfig = Get-Content "$RepoRoot/build/submodules.props"
+ $repos = $submoduleConfig.Project.ItemGroup.Repository | % { $_.Include }
+
+ Get-ChildItem "$RepoRoot/modules/*" -Directory `
+ | ? { (-not $Shipping) -or $($repos -contains $($_.Name)) -or $_.Name -eq 'Templating' } `
+ | % {
+ Push-Location $_ | Out-Null
+ Write-Verbose "Attempting to get submodule info for $_"
+
+ if (Test-Path 'version.props') {
+ [xml] $versionXml = Get-Content 'version.props'
+ $versionPrefix = $versionXml.Project.PropertyGroup.VersionPrefix
+ } else {
+ $versionPrefix = ''
+ }
+
+ try {
+ $data = @{
+ path = $_
+ module = $_.Name
+ commit = $(git rev-parse HEAD)
+ newCommit = $null
+ changed = $false
+ branch = $(git config -f $moduleConfigFile --get submodule.modules/$($_.Name).branch )
+ versionPrefix = $versionPrefix
+ }
+
+ $submodules += $data
+ }
+ finally {
+ Pop-Location | Out-Null
+ }
+ }
+
+ return $submodules
+}