Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 37 additions & 0 deletions set-env/Set-Env.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,41 @@ function Set-Env {
$combined = @($varsToSet) + @($varsToUnset)

try {

$currLocation = "$(Get-Location)"
@((Split-Path $profile -Parent),$PSScriptRoot,($currLocation -ne $PSScriptRoot ? $currLocation : ''),$Set).foreach({
try {
$p = $_
if ($p) {
#Write-Verbose "checking:$p\*.env*"
if (Test-Path $p\*.env*) {
Get-ChildItem –Path $p\*.env* | Foreach-Object {
try {
$f = $_
Write-Verbose "checking:$($f.FullName)"
$content = (Get-Content $f.FullName)
$content | ForEach-Object {
if (-not ($_ -like '#*') -and ($_ -like '*=*')) {
$sp = $_.Split('=')
Write-Verbose "Set-Env $($sp[0])=$($sp[1])"
[System.Environment]::SetEnvironmentVariable($sp[0], $sp[1])
}
}
}
catch {
Write-Error "ERROR Set-Env $p-$f" -InformationVariable results
}
}
} else {
#Write-Verbose "skipped:$p no *.env* files found"
}
}
}
catch {
Write-Error "ERROR Set-Env $p" -InformationVariable results
}
})

$combined | % {
Set-Item "env:$($_.var)" $_.val
}
Expand All @@ -78,4 +113,6 @@ function Set-Env {
Set-Item "env:$($_.var)" $_.original
}
}

Write-Verbose "Set-Env:end"
}
2 changes: 2 additions & 0 deletions tests/.env
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
#comment
set-env-smoke-test-env-set=test
2 changes: 2 additions & 0 deletions tests/.env.user
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
#comment
set-env-smoke-test-env-user-set=test
58 changes: 58 additions & 0 deletions tests/Set-Env.Tests.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
Describe 'Module Tests' {
#$repoPath = Split-Path (Split-Path $PSScriptRoot -Parent) -Parent
#$ModuleName = Split-Path $repoPath -Leaf
#$ModuleScriptName = "$ModuleName.psm1"
#$ModuleScriptPath = "$repoPath\src\$ModuleName\$ModuleScriptName"

It 'imports successfully' {
$repoPath = Split-Path $PSScriptRoot -Parent
$ModuleName = Split-Path $repoPath -Leaf
#$ModuleScriptPath = "$repoPath\src\$ModuleName\$ModuleName.psm1"
$ModuleScriptPath = "$repoPath\$ModuleName\$ModuleName.psm1"

Write-Verbose "Import-Module -Name $($ModuleScriptPath)"
{ Import-Module -Name $ModuleScriptPath -ErrorAction Stop } | Should -Not -Throw
}

It 'passes default PSScriptAnalyzer rules' {
$repoPath = Split-Path $PSScriptRoot -Parent
$ModuleName = Split-Path $repoPath -Leaf
$ModuleScriptPath = "$repoPath\$ModuleName\$ModuleName.psm1"

#fairly certain, this is newly required, used to already be in:
#Install-Module PSScriptAnalyzer -Scope CurrentUser
Invoke-ScriptAnalyzer -Path $ModuleScriptPath | Should -BeNullOrEmpty
}
}

Describe 'Module Manifest Tests' {
It 'passes Test-ModuleManifest' {
$repoPath = Split-Path $PSScriptRoot -Parent
$ModuleName = Split-Path $repoPath -Leaf
$ModuleManifestName = "$ModuleName.psd1"
$ModuleManifestPath = "$repoPath\$ModuleName\$ModuleManifestName"

Write-Output $ModuleManifestPath
Test-ModuleManifest -Path $ModuleManifestPath | Should -Not -BeNullOrEmpty
$? | Should -Be $true
}
}

Describe 'Smoke Tests' {
It 'passes empty params' {
$results = Set-Env -Verbose | Should -Not -BeNullOrEmpty
Write-Verbose "results:$results"
}
It 'passes env set' {
[System.Environment]::SetEnvironmentVariable("set-env-smoke-test-env-set","x")
Set-Env -Verbose | Should -Not -BeNullOrEmpty
$results = (Get-Item 'env:set-env-smoke-test-env-set').value
$results | Should -Be 'test'
}
It 'passes env-user set' {
[System.Environment]::SetEnvironmentVariable("set-env-smoke-test-env-user-set","x")
Set-Env -Verbose | Should -Not -BeNullOrEmpty
$results = (Get-Item 'env:set-env-smoke-test-env-user-set').value
$results | Should -Be 'test'
}
}