Functions/Helper/Prerequisites/Private/Set-ValentiaInvokationPrerequisites.ps1

#Requires -Version 3.0

#-- Helper for valentia Invokation Prerequisite setup--#

function Set-ValentiaInvokationPrerequisites
{
    [CmdletBinding()]
    param
    (
        [parameter(mandatory = $true)]
        [System.Diagnostics.Stopwatch]$StopWatch,

        [Parameter(Position = 0, mandatory = $true)]
        [string[]]$DeployGroups,

        [Parameter(Position = 1, mandatory = $false)]
        [string]$TaskFileName,

        [Parameter(Position = 2, mandatory = $false)]
        [ScriptBlock]$ScriptBlock,

        [Parameter(Position = 3, mandatory = $false)]
        [string]$DeployFolder,

        [Parameter(Position = 4, mandatory = $false)]
        [string[]]$TaskParameter
    )
    
    # clear previous result
    Invoke-ValentiaCleanResult

    # Initialize Error status
    $valentia.Result.SuccessStatus = $valentia.Result.ErrorMessageDetail = @()

    # Get Start Time
    $valentia.Result.TimeStart = (Get-Date).DateTime

    # Import default Configurations
    $valeWarningMessages.warn_import_configuration | Write-ValentiaVerboseDebug
    Import-ValentiaConfiguration

    # Import default Modules
    $valeWarningMessages.warn_import_modules | Write-ValentiaVerboseDebug
    Import-valentiaModules

    # Log Setting
    New-ValentiaLog

    # Set Task and push CurrentContext
    $task = Push-ValentiaCurrentContextToTask -ScriptBlock $ScriptBlock -TaskFileName $TaskFileName
  
    # Set Task as CurrentContext with task key
    $valentia.Result.ScriptTorun = $task.Action

    # Obtain DeployMember IP or Hosts for deploy
    try
    {
        "Get host addresses to connect." | Write-ValentiaVerboseDebug
        $valentia.Result.DeployMembers = Get-valentiaGroup -DeployFolder $DeployFolder -DeployGroup $DeployGroups
    }
    catch
    {
        $valentia.Result.SuccessStatus += $false
        $valentia.Result.ErrorMessageDetail += $_
        Write-Error $_
    }

    # Show Stopwatch for Begin section
    Write-Verbose ("{0}Duration Second for Begin Section: {1}" -f "`t`t", $Stopwatch.Elapsed.TotalSeconds)
}