Teach OpenConsole.psm1 to support multiple terminal checkouts (#9509)
OpenConsole.psm1 cached its root directory on import, which made it very difficult to move into another Terminal clone and _do things_ (like code formatting). By resolving the root directory again per-cmdlet, we gain the ability to... ```powershell cd terminal import-module ./tools/openconsole.psm1 cd ../terminal-2 invoke-codeformat ``` ... and have it format the correct directory (terminal-2) instead of the incorrect one (terminal). This does unfortunately break the openconsole cmdlets _inside dep/wil and dep/gsl_ because they are separate git repositories. This is taken as an acceptable cost.
This commit is contained in:
parent
1519236f2b
commit
a979e52f7c
|
@ -1,6 +1,17 @@
|
||||||
|
|
||||||
# The project's root directory.
|
# The project's root directory.
|
||||||
Set-Item -force -path "env:OpenConsoleRoot" -value "$PSScriptRoot\.."
|
$script:OpenConsoleFallbackRoot="$PSScriptRoot\.."
|
||||||
|
|
||||||
|
#.SYNOPSIS
|
||||||
|
# Finds the root of the current Terminal checkout.
|
||||||
|
function Find-OpenConsoleRoot
|
||||||
|
{
|
||||||
|
$root = (git rev-parse --show-toplevel 2>$null)
|
||||||
|
If ($?) {
|
||||||
|
return $root
|
||||||
|
}
|
||||||
|
return $script:OpenConsoleFallbackRoot
|
||||||
|
}
|
||||||
|
|
||||||
#.SYNOPSIS
|
#.SYNOPSIS
|
||||||
# Finds and imports a module that should be local to the project
|
# Finds and imports a module that should be local to the project
|
||||||
|
@ -16,7 +27,7 @@ function Import-LocalModule
|
||||||
|
|
||||||
$ErrorActionPreference = 'Stop'
|
$ErrorActionPreference = 'Stop'
|
||||||
|
|
||||||
$modules_root = "$env:OpenConsoleRoot\.PowershellModules"
|
$modules_root = "$(Find-OpenConsoleRoot)\.PowershellModules"
|
||||||
|
|
||||||
$local = $null -eq (Get-Module -Name $Name)
|
$local = $null -eq (Get-Module -Name $Name)
|
||||||
|
|
||||||
|
@ -174,29 +185,31 @@ function Invoke-OpenConsoleTests()
|
||||||
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
$root = Find-OpenConsoleRoot
|
||||||
|
|
||||||
if (($AllTests -and $FTOnly) -or ($AllTests -and $Test) -or ($FTOnly -and $Test))
|
if (($AllTests -and $FTOnly) -or ($AllTests -and $Test) -or ($FTOnly -and $Test))
|
||||||
{
|
{
|
||||||
Write-Host "Invalid combination of flags" -ForegroundColor Red
|
Write-Host "Invalid combination of flags" -ForegroundColor Red
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
$OpenConsolePlatform = $Platform
|
$OpenConsolePlatform = $Platform
|
||||||
$TestHostAppPath = "$env:OpenConsoleRoot\$OpenConsolePlatform\$Configuration\TestHostApp"
|
$TestHostAppPath = "$root\$OpenConsolePlatform\$Configuration\TestHostApp"
|
||||||
if ($Platform -eq 'x86')
|
if ($Platform -eq 'x86')
|
||||||
{
|
{
|
||||||
$OpenConsolePlatform = 'Win32'
|
$OpenConsolePlatform = 'Win32'
|
||||||
$TestHostAppPath = "$env:OpenConsoleRoot\$Configuration\TestHostApp"
|
$TestHostAppPath = "$root\$Configuration\TestHostApp"
|
||||||
}
|
}
|
||||||
$OpenConsolePath = "$env:OpenConsoleroot\bin\$OpenConsolePlatform\$Configuration\OpenConsole.exe"
|
$OpenConsolePath = "$env:OpenConsoleroot\bin\$OpenConsolePlatform\$Configuration\OpenConsole.exe"
|
||||||
$TaefExePath = "$env:OpenConsoleRoot\packages\Taef.Redist.Wlk.10.57.200731005-develop\build\Binaries\$Platform\te.exe"
|
$TaefExePath = "$root\packages\Taef.Redist.Wlk.10.57.200731005-develop\build\Binaries\$Platform\te.exe"
|
||||||
$BinDir = "$env:OpenConsoleRoot\bin\$OpenConsolePlatform\$Configuration"
|
$BinDir = "$root\bin\$OpenConsolePlatform\$Configuration"
|
||||||
|
|
||||||
[xml]$TestConfig = Get-Content "$env:OpenConsoleRoot\tools\tests.xml"
|
[xml]$TestConfig = Get-Content "$root\tools\tests.xml"
|
||||||
|
|
||||||
# check if WinAppDriver needs to be started
|
# check if WinAppDriver needs to be started
|
||||||
$WinAppDriverExe = $null
|
$WinAppDriverExe = $null
|
||||||
if ($AllTests -or $FtOnly -or $Test -eq "uia")
|
if ($AllTests -or $FtOnly -or $Test -eq "uia")
|
||||||
{
|
{
|
||||||
$WinAppDriverExe = [Diagnostics.Process]::Start("$env:OpenConsoleRoot\dep\WinAppDriver\WinAppDriver.exe")
|
$WinAppDriverExe = [Diagnostics.Process]::Start("$root\dep\WinAppDriver\WinAppDriver.exe")
|
||||||
}
|
}
|
||||||
|
|
||||||
# select tests to run
|
# select tests to run
|
||||||
|
@ -253,8 +266,9 @@ function Invoke-OpenConsoleTests()
|
||||||
# Builds OpenConsole.sln using msbuild. Any arguments get passed on to msbuild.
|
# Builds OpenConsole.sln using msbuild. Any arguments get passed on to msbuild.
|
||||||
function Invoke-OpenConsoleBuild()
|
function Invoke-OpenConsoleBuild()
|
||||||
{
|
{
|
||||||
& "$env:OpenConsoleRoot\dep\nuget\nuget.exe" restore "$env:OpenConsoleRoot\OpenConsole.sln"
|
$root = Find-OpenConsoleRoot
|
||||||
msbuild.exe "$env:OpenConsoleRoot\OpenConsole.sln" @args
|
& "$root\dep\nuget\nuget.exe" restore "$root\OpenConsole.sln"
|
||||||
|
msbuild.exe "$root\OpenConsole.sln" @args
|
||||||
}
|
}
|
||||||
|
|
||||||
#.SYNOPSIS
|
#.SYNOPSIS
|
||||||
|
@ -281,7 +295,7 @@ function Start-OpenConsole()
|
||||||
{
|
{
|
||||||
$Platform = "Win32"
|
$Platform = "Win32"
|
||||||
}
|
}
|
||||||
& "$env:OpenConsoleRoot\bin\$Platform\$Configuration\OpenConsole.exe"
|
& "$(Find-OpenConsoleRoot)\bin\$Platform\$Configuration\OpenConsole.exe"
|
||||||
}
|
}
|
||||||
|
|
||||||
#.SYNOPSIS
|
#.SYNOPSIS
|
||||||
|
@ -308,7 +322,7 @@ function Debug-OpenConsole()
|
||||||
{
|
{
|
||||||
$Platform = "Win32"
|
$Platform = "Win32"
|
||||||
}
|
}
|
||||||
$process = [Diagnostics.Process]::Start("$env:OpenConsoleRoot\bin\$Platform\$Configuration\OpenConsole.exe")
|
$process = [Diagnostics.Process]::Start("$(Find-OpenConsoleRoot)\bin\$Platform\$Configuration\OpenConsole.exe")
|
||||||
Debug-Process -Id $process.Id
|
Debug-Process -Id $process.Id
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -352,10 +366,11 @@ function Invoke-ClangFormat {
|
||||||
#.SYNOPSIS
|
#.SYNOPSIS
|
||||||
# runs code formatting on all c++ files
|
# runs code formatting on all c++ files
|
||||||
function Invoke-CodeFormat() {
|
function Invoke-CodeFormat() {
|
||||||
& "$env:OpenConsoleRoot\dep\nuget\nuget.exe" restore "$env:OpenConsoleRoot\tools\packages.config"
|
$root = Find-OpenConsoleRoot
|
||||||
$clangPackage = ([xml](Get-Content "$env:OpenConsoleRoot\tools\packages.config")).packages.package | Where-Object id -like "clang-format*"
|
& "$root\dep\nuget\nuget.exe" restore "$root\tools\packages.config"
|
||||||
$clangFormatPath = "$env:OpenConsoleRoot\packages\$($clangPackage.id).$($clangPackage.version)\tools\clang-format.exe"
|
$clangPackage = ([xml](Get-Content "$root\tools\packages.config")).packages.package | Where-Object id -like "clang-format*"
|
||||||
Get-ChildItem -Recurse "$env:OpenConsoleRoot/src" -Include *.cpp, *.hpp, *.h |
|
$clangFormatPath = "$root\packages\$($clangPackage.id).$($clangPackage.version)\tools\clang-format.exe"
|
||||||
|
Get-ChildItem -Recurse "$root\src" -Include *.cpp, *.hpp, *.h |
|
||||||
Where FullName -NotLike "*Generated Files*" |
|
Where FullName -NotLike "*Generated Files*" |
|
||||||
Invoke-ClangFormat -ClangFormatPath $clangFormatPath
|
Invoke-ClangFormat -ClangFormatPath $clangFormatPath
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue