InvokeAbilityHelpers.psm1

# Implement your module commands in this script.

if (-not $DependenciesPath ) {
    $DependenciesPath = (Join-Path $PSScriptRoot Dependencies)
}

$defaultDependencyTags = @("dev")
$defaultPsDependVersion = '0.1.62'


$defaultPsDependConfiguration = @{
    PSDependOptions                                                                                              = @{
        AddToPath = $true
    }
    # 'conventional-changelog-cli' = @{
    # DependencyType = 'Npm'
    # Version = '2.0.5'
    # Target = 'Global'
    # Tags = 'dev', 'prod'
    # }
    InvokeBuild                                                                                                  = @{
        Version        = '4.1.0'
        Tags           = 'dev', 'prod'
        DependencyType = 'PSGalleryModule'
    }
}
Write-Verbose ("DependenciesPath [{0}]" -f $DependenciesPath) -Verbose
if (-not(Get-InstalledModule PSDepend -RequiredVersion $defaultPsDependVersion -ErrorAction SilentlyContinue)) {
    Install-Module PSDepend -RequiredVersion $defaultPsDependVersion -Force -Scope CurrentUser
}
# -ProjectPath (Get-Location).Path
    
Write-Verbose ("Import or Install Dependencies") -Verbose
Import-Module PSDepend -RequiredVersion $defaultPsDependVersion
Invoke-PSDepend -InputObject $defaultPsDependConfiguration  -Install -Import -Force `
    -Target $DependenciesPath -Tags $defaultDependencyTags -ErrorAction Stop -Verbose

# Export only the functions using PowerShell standard verb-noun naming.
# Be sure to list each exported functions in the FunctionsToExport field of the module manifest file.
# This improves performance of command discovery in PowerShell.


function Invoke-BuildStep {
    param (
        [Parameter(Mandatory = $false)] 
        $Task = "default",
        [Parameter(Mandatory = $false)]
        $OutputPath,
        [Parameter(Mandatory = $false)]
        $ProjectPath
    )

    if (-not $ProjectPath ) {
        $ProjectPath = Resolve-Path  (Get-Location).Path
    }
        
    if (-not $OutputPath ) {
        $OutputPath = (Join-Path $ProjectPath)
    }

    $PSBoundParameters.Add("File", (Join-Path $PSScriptRoot Invoke-BuildStep.task.ps1))

    Write-Verbose ("ProjectPath [{0}]" -f $ProjectPath) -Verbose
    Write-Verbose ("OutputPath [{0}]" -f $OutputPath) -Verbose

    Invoke-Build @PSBoundParameters -Result result

    # Invoke-Build $Task {
    # Task default UpdateConfiguration
    # Task UpdateConfiguration{
    # echo "test"
    # }
    # } -Result result

    if ($Result.Error) {exit 1} else {exit 0}
    
    
}
Export-ModuleMember -Function Invoke-BuildStep