modules/Definitions/GitLab.Entro.psm1

Set-StrictMode -Version Latest

function Register-GitLabEntroDefinitions {
    Import-Module (Join-Path (Split-Path $PSScriptRoot -Parent) 'IW.EntroCatalog.psm1') -Force -WarningAction SilentlyContinue

    Register-IntegrationWizardDefinition @{
        Id           = 'gitlab-entro'
        Platform     = 'GitLab'
        Product      = 'Entro'
        CoreSwitch   = 'Entro'
        CliName      = 'glab'
        Title        = 'Entro GitLab integration'
        FolderName   = 'Entro-GitLab'
        AccessLevels = @()
        AdminRoles   = @('GitLab Group Owner or Maintainer')
        OutputsHelp  = 'Paste Nickname, GitLab URL, and access token into Entro admin console.'
        Inputs       = @(
            @{ Name = 'Nickname'; Source = 'Supply'; Prompt = 'Nickname in Entro'; Purpose = 'Operator-chosen label'; Required = $true }
            @{ Name = 'GitLabUrl'; Source = 'Supply'; Prompt = 'GitLab URL'; Purpose = 'https://gitlab.com or self-managed'; Required = $false; Default = 'https://gitlab.com' }
            @{ Name = 'OutputDirectory'; Source = 'Supply'; Prompt = 'Output directory'; Purpose = 'Wizard output directory'; Required = $false }
        )
        CheckInputs  = @(
            @{ Name = 'GitLabUrl'; Source = 'Supply'; Prompt = 'GitLab URL'; Purpose = 'Instance to verify'; Required = $true }
            @{ Name = 'AccessToken'; Source = 'Supply'; Prompt = 'GitLab access token'; Purpose = 'Group or project token'; Required = $true; Secret = $true }
            @{ Name = 'OutputDirectory'; Source = 'Supply'; Prompt = 'Output directory'; Purpose = 'Wizard output directory'; Required = $false }
        )
        Steps        = {
            param($ctx)
            @(
                @{
                    Id    = 'entro-gitlab-token'
                    Title = 'Create GitLab access token for Entro'
                    Kind  = 'Ensure'
                    Probe = { param($c) 'Create' }
                    Run   = {
                        param($c)
                        Write-Step 'Entro GitLab token'
                        Write-Info "Create a group or project access token on $($c['GitLabUrl']) with Entro read scopes."
                    }
                    BuildScript = {
                        param($c)
                        "# Entro GitLab token for $($c['GitLabUrl'])"
                    }
                }
            )
        }
        OnRunComplete = {
            param($ctx)
            Write-Host ''
            Write-Host 'Entro handoff' -ForegroundColor Cyan
            Write-Host " Nickname: $($ctx['Nickname'])"
            Write-Host " GitLab URL: $($ctx['GitLabUrl'])"
            Write-Host ' Access token: paste into Entro'
            Write-Host ''
        }
    }
}

Export-ModuleMember -Function Register-GitLabEntroDefinitions