-
-
Save rajbos/b148e9833a5d08165188dbe00cc32301 to your computer and use it in GitHub Desktop.
# Preface: | |
# dotnet tool install -g will return an error code when the tool is already installed in the system (at the same location) | |
# adding a test like below, will prevent the error | |
# this is mostly needed in a CI/CD environment where you don't want to break your pipeline if the tool was installed already. | |
# find if stryker is installed | |
$list = (dotnet tool list -g) | |
# echo the list | |
# $list | |
$strykerFound = ($list | Where-Object {$_.Split(' ')[0] -eq "dotnet-stryker"}) | |
if ($null -ne $StrykerFound) { | |
Write-Host "Installing Stryker" | |
dotnet tool install dotnet-stryker -g | |
} | |
else { | |
Write-Host "Stryker is already installed" | |
} | |
# stop powershell from reporting an error code | |
$global:LASTEXITCODE = 0 |
Yea 100% understood, I came from a similar problem and your blog post.
To be clear, I meant install it into a local path that is unique (e.g. created/destroyed by your CI/CD pipeline) each run, therefore avoiding all the additional check you're doing.
Your if logic is around the wrong way.
Your if logic is around the wrong way.
@distantcam it is not. This is best practice as well as the convention for PowerShell to prevent issues when the left side (the value) is already null. More info on MS Learn: docs
Your if logic is around the wrong way.
@distantcam it is not. This is best practice as well as the convention for PowerShell to prevent issues when the left side (the value) is already null. More info on MS Learn: docs
lol I mean if striker is found, it installs it, and if it's not found it doesn't install it. It should be this.
if ($null -eq $StrykerFound) {
The thing is, if it is already installed, installing it again returns an error, which is not helpful in a CI/CD pipeline.
That's why I'm checking it first.
Added that reasoning to the gist. Thanks!