|
function Open-Solution { |
|
param( |
|
[int]$Depth = -1, |
|
[string]$RootDirectory = '' |
|
) |
|
$excludeFolders = @("obj", "bin", ".*") |
|
$solutions = @() |
|
|
|
write-host "Searching for solution files..." |
|
if ($Depth -eq -1) { |
|
$directories = Get-ChildItem -Recurse -Path $RootDirectory -Directory |
|
if ($directories.Count -gt 100) { |
|
write-host "Searching $($directories.Count) folders, this may take a moment." |
|
} |
|
|
|
$solutions = Get-ChildItem -Recurse -Path "$RootDirectory*.sln" -Exclude $excludeFolders |
|
} |
|
else { |
|
$directories = Get-ChildItem -Recurse -Path $RootDirectory -Directory -Depth $Depth |
|
if ($directories.Count -gt 100) { |
|
write-host "Searching $($directories.Count) folders, this may take a moment." |
|
} |
|
|
|
$solutions = Get-ChildItem -Recurse -Path "$RootDirectory*.sln" -Depth $Depth -Exclude $excludeFolders |
|
} |
|
|
|
if ($solutions.Count -eq 1) { |
|
write-host "I found one solution file! Opening it now..." |
|
write-host $solutions[0].FullName |
|
& $solutions.FullName |
|
} |
|
elseif ($solutions.Count -eq 0) { |
|
write-host "I couldn't find any solution files here!" |
|
write-host "Check the root directory and depth parameters. The following folders are excluded: $excludeFolders" |
|
} |
|
elseif ($solutions.Count -gt 1) { |
|
write-host "I found $($solutions.Count) solutions. Which one do you want to open?`n" |
|
|
|
# Provides a clickable link in Windows Terminal |
|
$solutions | ForEach-Object { write-host "file://localhost/$($_.FullName -replace '\\', '/')" } |
|
} |
|
} |
|
|
|
function Open-AtmelSolution { |
|
param( |
|
[string]$RootDirectory = '' |
|
) |
|
$solutions = Get-ChildItem -recurse -path "$RootDirectory*.atsln" |
|
if ($solutions.Count -eq 1) { |
|
write-host $solutions[0].FullName |
|
& $solutions.FullName |
|
} |
|
elseif ($solutions.Count -eq 0) { |
|
write-host "I couldn't find any solution files here!" |
|
} |
|
elseif ($solutions.Count -gt 1) { |
|
write-host "I found more than one solution. Which one do you want to open?`n" |
|
$solutions | ForEach-Object { write-host $_.FullName } |
|
write-host |
|
} |
|
} |
|
|
|
Set-Alias sln Open-Solution |
|
Set-Alias atsln Open-AtmelSolution |