salt/pkg/windows/nsis/tests/clean.ps1

230 lines
8.6 KiB
PowerShell

<#
.SYNOPSIS
Clean the NSIS Tests directory
.DESCRIPTION
This script removes the venv directory and the test-setup.exe
.EXAMPLE
clean.ps1
.EXAMPLE
clean.ps1
#>
param(
[Parameter(Mandatory=$false)]
[Alias("c")]
# Don't pretify the output of the Write-Result
[Switch] $CICD
)
#-------------------------------------------------------------------------------
# Script Preferences
#-------------------------------------------------------------------------------
$ProgressPreference = "SilentlyContinue"
$ErrorActionPreference = "Stop"
#-------------------------------------------------------------------------------
# Script Variables
#-------------------------------------------------------------------------------
$SCRIPT_DIR = (Get-ChildItem "$($myInvocation.MyCommand.Definition)").DirectoryName
$PROJECT_DIR = $(git rev-parse --show-toplevel)
$WINDOWS_DIR = "$PROJECT_DIR\pkg\windows"
$BUILDENV_DIR = "$WINDOWS_DIR\buildenv"
#-------------------------------------------------------------------------------
# Script Functions
#-------------------------------------------------------------------------------
function Write-Result($result, $ForegroundColor="Green") {
if ( $CICD ) {
Write-Host $result -ForegroundColor $ForegroundColor
} else {
$position = 80 - $result.Length - [System.Console]::CursorLeft
Write-Host -ForegroundColor $ForegroundColor ("{0,$position}$result" -f "")
}
}
#-------------------------------------------------------------------------------
# Start the Script
#-------------------------------------------------------------------------------
Write-Host $("=" * 80)
Write-Host "Clean NSIS Test Environment" -ForegroundColor Cyan
Write-Host $("-" * 80)
#-------------------------------------------------------------------------------
# Make sure we're not in a virtual environment
#-------------------------------------------------------------------------------
if ( $env:VIRTUAL_ENV ) {
# I've tried deactivating from the script, but it doesn't work
Write-Host "Please deactive the virtual environment"
exit
}
#-------------------------------------------------------------------------------
# Remove venv directory
#-------------------------------------------------------------------------------
if ( Test-Path -Path "$SCRIPT_DIR\venv" ) {
Write-Host "Removing venv directory: " -NoNewline
Remove-Item -Path "$SCRIPT_DIR\venv" -Recurse -Force
if ( Test-Path -Path "$SCRIPT_DIR\venv" ) {
Write-Result "Failed" -ForegroundColor Red
exit 1
} else {
Write-Result "Success" -ForegroundColor Green
}
}
#-------------------------------------------------------------------------------
# Remove buildenv directory
#-------------------------------------------------------------------------------
if ( Test-Path -Path "$BUILDENV_DIR" ) {
Write-Host "Removing buildenv directory: " -NoNewline
Remove-Item -Path "$BUILDENV_DIR" -Recurse -Force
if ( Test-Path -Path "$BUILDENV_DIR" ) {
Write-Result "Failed" -ForegroundColor Red
exit 1
} else {
Write-Result "Success" -ForegroundColor Green
}
}
#-------------------------------------------------------------------------------
# Make sure processes are not running
#-------------------------------------------------------------------------------
$processes = "test-setup",
"Un",
"Un_A",
"Un_B",
"Un_C",
"Un_D",
"Un_E",
"Un_F",
"Un_G"
$processes | ForEach-Object {
$proc = Get-Process -Name $_ -ErrorAction SilentlyContinue
if ( ($null -ne $proc) ) {
Write-Host "Killing $($_): " -NoNewline
$proc = Get-WmiObject -Class Win32_Process -Filter "Name='$_.exe'"
$proc.Terminate() *> $null
Start-Sleep -Seconds 5
$proc = Get-Process -Name $_ -ErrorAction SilentlyContinue
if ( ($null -eq $proc) ) {
Write-Result "Success" -ForegroundColor Green
} else {
Write-Result "Failed" -ForegroundColor Red
exit 1
}
}
}
#-------------------------------------------------------------------------------
# Remove test-setup.exe
#-------------------------------------------------------------------------------
if ( Test-Path -Path "$SCRIPT_DIR\test-setup.exe" ) {
Write-Host "Removing test-setup.exe: " -NoNewline
Remove-Item -Path "$SCRIPT_DIR\test-setup.exe" -Recurse -Force
if ( Test-Path -Path "$SCRIPT_DIR\test-setup.exe" ) {
Write-Result "Failed" -ForegroundColor Red
exit 1
} else {
Write-Result "Success" -ForegroundColor Green
}
}
#-------------------------------------------------------------------------------
# Remove custom_conf
#-------------------------------------------------------------------------------
if ( Test-Path -Path "$SCRIPT_DIR\custom_conf" ) {
Write-Host "Removing custom_conf: " -NoNewline
Remove-Item -Path "$SCRIPT_DIR\custom_conf" -Recurse -Force
if ( Test-Path -Path "$SCRIPT_DIR\custom_conf" ) {
Write-Result "Failed" -ForegroundColor Red
exit 1
} else {
Write-Result "Success" -ForegroundColor Green
}
}
#-------------------------------------------------------------------------------
# Remove the salt-minion service
#-------------------------------------------------------------------------------
if ( $(Get-Service -Name salt-minion -ErrorAction SilentlyContinue).Name ) {
Write-Host "Removing salt-minion service" -NoNewline
Stop-Service -Name salt-minion
$service = Get-WmiObject -Class Win32_Service -Filter "Name='salt-minion'"
$service.delete() *> $null
if ( $(Get-Service -Name salt-minion -ErrorAction SilentlyContinue).Name ) {
Write-Result "Failed" -ForegroundColor Red
exit 1
} else {
Write-Result "Success" -ForegroundColor Green
}
}
#-------------------------------------------------------------------------------
# Remove Salt Project directory from Program Files
#-------------------------------------------------------------------------------
if ( Test-Path -Path "$env:ProgramFiles\Salt Project" ) {
Write-Host "Removing Salt Project from Program Files: " -NoNewline
Remove-Item -Path "$env:ProgramFiles\Salt Project" -Recurse -Force
if ( Test-Path -Path "$env:ProgramFiles\Salt Project" ) {
Write-Result "Failed" -ForegroundColor Red
exit 1
} else {
Write-Result "Success" -ForegroundColor Green
}
}
#-------------------------------------------------------------------------------
# Remove Salt Project directory from ProgramData
#-------------------------------------------------------------------------------
if ( Test-Path -Path "$env:ProgramData\Salt Project" ) {
Write-Host "Removing Salt Project from ProgramData: " -NoNewline
Remove-Item -Path "$env:ProgramData\Salt Project" -Recurse -Force
if ( Test-Path -Path "$env:ProgramData\Salt Project" ) {
Write-Result "Failed" -ForegroundColor Red
exit 1
} else {
Write-Result "Success" -ForegroundColor Green
}
}
#-------------------------------------------------------------------------------
# Remove Salt Project from Registry
#-------------------------------------------------------------------------------
if ( Test-Path -Path "HKLM:SOFTWARE\Salt Project" ) {
Write-Host "Removing Salt Project from Software: " -NoNewline
Remove-Item -Path "HKLM:SOFTWARE\Salt Project" -Recurse -Force
if ( Test-Path -Path "HKLM:SOFTWARE\Salt Project" ) {
Write-Result "Failed" -ForegroundColor Red
exit 1
} else {
Write-Result "Success" -ForegroundColor Green
}
}
#-------------------------------------------------------------------------------
# Remove Salt Minion directory from Registry
#-------------------------------------------------------------------------------
if ( Test-Path -Path "HKLM:SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Salt Minion" ) {
Write-Host "Removing Salt Minion from the Uninstall: " -NoNewline
Remove-Item -Path "HKLM:SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Salt Minion" -Recurse -Force
if ( Test-Path -Path "HKLM:SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Salt Minion" ) {
Write-Result "Failed" -ForegroundColor Red
exit 1
} else {
Write-Result "Success" -ForegroundColor Green
}
}
#-------------------------------------------------------------------------------
# Script Completed
#-------------------------------------------------------------------------------
Write-Host $("-" * 80)
Write-Host "Clean NSIS Test Environment Completed" -ForegroundColor Cyan
Write-Host $("=" * 80)