modules/Definitions/Salesforce.Entro.psm1

Set-StrictMode -Version Latest

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

    Register-IntegrationWizardDefinition @{
        Id           = 'salesforce-entro'
        Platform     = 'Salesforce'
        Product      = 'Entro'
        CoreSwitch   = 'Entro'
        CliName      = 'sf'
        Title        = 'Entro Salesforce integration'
        FolderName   = 'Entro Salesforce'
        AccessLevels = @()
        AdminRoles   = @('Salesforce System Administrator (Setup, App Manager, Connected Apps)')
        OutputsHelp  = 'Paste Environment nickname, Instance URL, and Access Token or refresh credentials into Entro admin console.'
        Inputs       = @(
            @{ Name = 'Environment'; Source = 'Supply'; Prompt = 'Environment nickname'; Purpose = 'Label in Entro'; Required = $true }
            @{ Name = 'InstanceUrl'; Source = 'Supply'; Prompt = 'Salesforce My Domain URL'; Purpose = 'Salesforce instance URL'; Required = $true }
            @{ Name = 'OutputDirectory'; Source = 'Supply'; Prompt = 'Output directory'; Purpose = 'Wizard output directory'; Required = $false }
        )
        Steps        = {
            param($ctx)
            @(
                @{
                    Id    = 'entro-salesforce-app'
                    Title = 'Configure Salesforce Connected App for Entro'
                    Kind  = 'Ensure'
                    Probe = {
                        param($c)
                        'Create'
                    }
                    Run   = {
                        param($c)
                        Write-Step 'Entro Salesforce Connected App Setup'
                        Write-Info "In Salesforce Setup -> App Manager, create a Connected App for Entro with required OAuth scopes."
                        Write-Info "Instance: $($c['InstanceUrl'])"
                    }
                    BuildScript = {
                        param($c)
                        @"
# Entro Salesforce Connected App Setup
Write-Host "Configure Salesforce Connected App for Entro at $($c['InstanceUrl'])"
"@

                    }
                }
            )
        }
        OnRunComplete = {
            param($ctx)
            Write-Host ''
            Write-Host 'Entro handoff' -ForegroundColor Cyan
            Write-Host " Environment: $($ctx['Environment'])"
            Write-Host " Instance URL: $($ctx['InstanceUrl'])"
            Write-Host ' Credentials: paste Connected App OAuth credentials into Entro'
            Write-Host ''
        }
    }
}

Export-ModuleMember -Function Register-SalesforceEntroDefinitions