totkeks.GitManagement.psm1

$ErrorActionPreference = 'Stop'

$gitCommand = Get-Command -Name git -ErrorAction SilentlyContinue
if ($null -eq $gitCommand) {
    throw "Unable to find 'git' in your PATH. GitManagement does not work without git installed."
}

$assemblyName = 'totkeks.GitManagement.dll'
$assemblyPath = Join-Path -Path $PSScriptRoot -ChildPath $assemblyName

if (-not (Test-Path $assemblyPath)) {
    throw "Assembly $assemblyName not found. Build the project first by running Build.ps1."
}

Import-Module -Name $assemblyPath -ErrorAction Stop
$script:GitManagementRuntime = [Totkeks.GitManagement.GitManagementRuntime]::CreateDefault()

Set-Alias -Name Clone-Repository -Value Install-Repository -Scope Script

$providerCompleter = {
    param($commandName, $parameterName, $wordToComplete)
    [Totkeks.GitManagement.GitManagementCompletion]::CompleteProviders($script:GitManagementRuntime, $wordToComplete)
}

$repositoryCompleter = {
    param($commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameters)
    [Totkeks.GitManagement.GitManagementCompletion]::CompleteRepositories($script:GitManagementRuntime, $wordToComplete, $fakeBoundParameters)
}

Register-ArgumentCompleter -CommandName 'Get-Repository', 'Get-GitRepository' -ParameterName Provider -ScriptBlock $providerCompleter
Register-ArgumentCompleter -CommandName 'Get-Provider', 'Get-GitProvider' -ParameterName Name -ScriptBlock $providerCompleter
Register-ArgumentCompleter -CommandName 'New-Repository', 'New-GitRepository' -ParameterName Provider -ScriptBlock $providerCompleter
Register-ArgumentCompleter -CommandName 'Remove-Provider', 'Remove-GitProvider' -ParameterName Name -ScriptBlock $providerCompleter
Register-ArgumentCompleter -CommandName 'Enter-Repository', 'Enter-GitRepository' -ParameterName Name -ScriptBlock $repositoryCompleter