[CmdletBinding(SupportsShouldProcess)]param( [ArgumentCompleter({ param ( $commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameters ) [DockerComposeDirs]::_GetValidValues($wordToComplete,$true) })] [string[]]$ProjectPath, [switch]$Recurse, [int]$Depth=1, [switch]$NoLogs, [switch]$NoPull, [array]$PullParams, [array]$LogsParams, [array]$UpParams=@('-d','--remove-orphans'), [Parameter(Position = 0, ValueFromRemainingArguments = $true)] [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") } $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