PowerShell_Scripts/docker/dcup.ps1

56 lines
2.3 KiB
PowerShell
Raw Normal View History

[CmdletBinding(SupportsShouldProcess)]param(
2021-03-23 05:06:49 +00:00
[ArgumentCompleter({Invoke-Command -ScriptBlock $_DockerComposeDirsCompleter -ArgumentList $args})]
[string[]]$ProjectPath,
[switch]$Recurse,
[int]$Depth=1,
[switch]$NoLogs,
[switch]$NoPull,
2021-03-23 05:06:49 +00:00
[ArgumentCompleter({Invoke-Command -ScriptBlock $_DockerComposeCompleter -ArgumentList ($args+@('pull'))})]
[array]$PullParams,
2021-03-23 05:06:49 +00:00
[ArgumentCompleter({Invoke-Command -ScriptBlock $_DockerComposeCompleter -ArgumentList ($args+@('logs'))})]
[array]$LogsParams,
2021-03-23 05:06:49 +00:00
[ArgumentCompleter({Invoke-Command -ScriptBlock $_DockerComposeCompleter -ArgumentList ($args+@('up'))})]
[array]$UpParams=@('--detach','--remove-orphans'),
[Parameter(Position = 0, ValueFromRemainingArguments = $true)]
2021-03-23 05:06:49 +00:00
[ArgumentCompleter({Invoke-Command -ScriptBlock $_DockerComposeCompleter -ArgumentList ($args+@('up'))})]
[array]$Containers
)
$local:ForceNoFollow = $false
if( -not $ProjectPath ) {
$ProjectPath=@($PWD)
$ForceNoFollow = $Recurse
} elseif( -not $NoLogs ) {
$ForceNoFollow=$($ProjectPath.Length -gt 1)
}
if( -not $Containers -or ($Containers[0] -is [string]) ) { $Containers = @($Containers,@($null)) }
if( -not $UpParams -or ($UpParams[0] -is [string]) ) { $UpParams = @($UpParams,@($null)) }
if( -not $PullParams -or ($PullParams[0] -is [string]) ) { $PullParams = @($PullParams,@($null)) }
if( -not $LogsParams -or ($LogsParams[0] -is [string]) ) { $LogsParams = @($LogsParams,@($null)) }
if( -not $LogsParams[0] ) {
$local:tailLen = 10
$logsParams[0] = @()
if( -not $ForceNoFollow ) {
$tailLen = 40
$logsParams[0] += @('--follow')
}
$logsParams[0] += @("--tail=$tailLen")
}
$local:moreParams = @()
#if( $ForceNoFollow ) { $moreParams = @('--no-color', '--quiet-pull') }
$PullParams[0] = @('&', 'pull' ) + $PullParams[0] + $Containers
#if( $ForceNoFollow ) { $PullParams[0] = @('&') + $PullParams[0] }
$UpParams[0] = @('&', 'up' ) + $UpParams[0] + $Containers
#if( $ForceNoFollow ) { $UpParams[0] = @('&') + $UpParams[0] }
$LogsParams[0] = @('logs' ) + $LogsParams[0] + $Containers
if( -not $NoPull ) { $allParams += $PullParams + @(@('!')) }
$local:allParams += $UpParams
if( -not $NoLogs ) { $allParams += @(@('!')) + $LogsParams }
Invoke-DockerCompose -ProjectPath $ProjectPath -CliParams $allParams -Recurse:$Recurse -Depth $Depth