diff --git a/base/Set-MyPackage.ps1 b/base/Set-MyPackage.ps1 index 655ae09..61ef530 100644 --- a/base/Set-MyPackage.ps1 +++ b/base/Set-MyPackage.ps1 @@ -1,14 +1,27 @@ [CmdletBinding(SupportsShouldProcess)]param( - [Parameter(mandatory=$true, ValueFromPipeline=$true)] + [Parameter(mandatory=$true, ValueFromPipeline=$true, ParameterSetName="Pipe")] [szPackage]$InputObject, + [Parameter(mandatory=$true, ParameterSetName="LocalHost")] + [switch]$LocalHost, + [Parameter(mandatory=$true, ParameterSetName="LocalUser")] + [switch]$LocalUser, [switch]$Force, [switch]$PassThru, [switch]$DryRun ) process { - $local:outObj = @{ package = @{ Name = $InputObject.Name; Condition = @() } } - foreach( $local:c in $InputObject.Condition ) { + $local:iObj = $_ + if( $LocalHost ) { + $iObj = New-MyPackage -Name "$(hostname).local" | + Add-PackageCondition -Hostname "$(hostname)" + } elseif( $LocalUser ) { + $iObj = New-MyPackage -Name "$($USER).local" | + Add-PackageCondition -Username $USER + } + Write-Verbose "Set-MyPackage called with $($iObj | Out-String)..." + $local:outObj = @{ package = @{ Name = $iObj.Name; Condition = @() } } + foreach( $local:c in $iObj.Condition ) { $local:newC = [ordered]@{} foreach( $local:p in $c.PSObject.Properties ) { if( $p.TypeNameOfValue -match 'ScriptBlock' -and $p.Value ) { @@ -22,11 +35,18 @@ process { $local:jsonOut = $outObj | ConvertTo-Json -Depth 4 if( -not $DryRun ) { - $local:jsonPath = Join-Path $MyPSScriptRoot $_.name - if( -not (Test-Path $jsonPath) ) { $null = New-Item -Type Directory $jsonPath -Force:$Force } - $jsonPath = Join-Path $jsonPath '_.package.json' + $local:pkgPath = Join-Path $MyPSScriptRoot $iObj.name + Write-Verbose "pkgPath=$pkgPath" + if( -not (Test-Path $pkgPath) ) { $null = New-Item -Type Directory $pkgPath -Force:$Force } + $jsonPath = Join-Path $pkgPath '_.package.json' if( $Force -or -not (Test-Path $jsonPath) ) { $jsonOut | Out-File $jsonPath -Force:$Force + + $local:profilePath = $(Join-Path $pkgPath 'profile.d') + if( $LocalHost -or $LocalUser -and -not (Test-Path $profilePath) ) { + $null = New-Item -Type Directory $profilePath -Force:$Force + $null = New-Item -Type File $(Join-Path $profilePath env.ps1) -Value "# local environment" + } } elseif ( Test-Path $jsonPath ) { throw 'Package already exists!' } diff --git a/docker/Edit-DockerCompose.ps1 b/docker/Edit-DockerCompose.ps1 index 2d0c2a5..3af88a2 100644 --- a/docker/Edit-DockerCompose.ps1 +++ b/docker/Edit-DockerCompose.ps1 @@ -34,6 +34,15 @@ foreach( $local:ext in @('.yml', '.yaml') ) { } } +$AdditionalFiles = $AdditionalFiles | ForEach-Object { + $_ -replace + '^#lsi$','#/*linuxserver.yml' -replace + '^#tr?$','#/*traefik.yml' -replace + '^#/',"$env:SZ_DOCKER_SYSTEM_PATH" + } | + Get-ChildItem -Force | + Select-Object -ExpandProperty FullName + $local:FinalEditList = $editFiles | Where-Object {$_} | Sort-Object { $local:n = [System.IO.Path]::GetFileName($_) Join-Path [PSystem.IO.ath]::GetDirectoryName($_) "$(if( $n[0] -eq '.' ) { "9" } else { "1" })$n"