function Invoke-Build { <# .SYNOPSIS Run the build command in this or the appropriate parent folder from this folder #> [CmdletBinding()] param ( [Parameter(Mandatory = $false, Position = 0, ValueFromRemainingArguments = $true)] $CommandLineArguments ) $logLead = (Get-LogLeadName) $currentFolder = (Get-Location).Path $taskPath = $null do { $taskPath = $null $potentialPath = (Join-Path -Path $currentFolder -ChildPath "build.ps1") if (Test-Path $potentialPath) { $taskPath = $potentialPath break } $currentFolder = (Get-Item $currentFolder).Parent.Name # If the current folder is the root, it has no parent, so we can't recurse again if ($null -eq $currentFolder) { break } } while ([string]::IsNullOrWhiteSpace($taskPath)) if ([string]::IsNullOrWhiteSpace($taskPath)) { Write-Warning "$logLead : No build path could be found in current or parent paths." return $null } Invoke-Expression "$taskPath $($CommandLineArguments -join ' ')" } New-Alias -Name build -Value Invoke-Build -Force <# New-Alias build .\build.ps1 New-Alias db .\db.ps1 New-Alias test .\test.ps1 New-Alias hosts .\hosts.ps1 New-Alias install .\install.ps1 New-Alias deploy .\deploy.ps1 #>