private/Invoke-AccelMoveFiles.ps1

function Invoke-AccelMoveFiles {
    [CmdletBinding(SupportsShouldProcess, ConfirmImpact='Medium')]
    param(
        [Parameter(Mandatory)][string]$Path,
        [switch]$Force
    )

    $root = Resolve-AccelPath -Path $Path
    $pc   = Join-Path $root 'platform_connectivity'
    $pm   = Join-Path $root 'platform_management'

    if (-not $PSCmdlet.ShouldProcess($root, "Move/copy/delete files into platform_*")) { return }

    New-AccelDirectory -Path $pc -Confirm:$false | Out-Null
    New-AccelDirectory -Path $pm -Confirm:$false | Out-Null

    $ops = @()
    $ops += @{ Action='Move'; Source=(Join-Path $root 'lib'); Destination=(Join-Path $pm 'lib') }
    $ops += @{ Action='Move'; Source=(Join-Path $root 'main.connectivity.hub.and.spoke.virtual.network.tf'); Destination=(Join-Path $pc 'main.connectivity.hub.and.spoke.virtual.network.tf') }
    $ops += @{ Action='Move'; Source=(Join-Path $root 'main.connectivity.virtual.wan.tf'); Destination=(Join-Path $pc 'main.connectivity.virtual.wan.tf') }
    $ops += @{ Action='Move'; Source=(Join-Path $root 'main.management.tf'); Destination=(Join-Path $pm 'main.management.tf') }
    $ops += @{ Action='Move'; Source=(Join-Path $root 'main.resource.groups.tf'); Destination=(Join-Path $pc 'main.resource.groups.tf') }
    $ops += @{ Action='Move'; Source=(Join-Path $root 'outputs.tf'); Destination=(Join-Path $pc 'outputs.tf') }

    Get-ChildItem -Path (Join-Path $root 'variables.connectivity*') -File -ErrorAction SilentlyContinue | ForEach-Object {
        $ops += @{ Action='Move'; Source=$_.FullName; Destination=(Join-Path $pc $_.Name) }
    }
    $ops += @{ Action='Move'; Source=(Join-Path $root 'variables.management.tf'); Destination=(Join-Path $pm 'variables.management.tf') }

    $ops += @{ Action='Copy'; Source=(Join-Path $root 'terraform.tfvars.json'); Destination=(Join-Path $pc 'terraform.tfvars.json') }
    $ops += @{ Action='Copy'; Source=(Join-Path $root 'terraform.tfvars.json'); Destination=(Join-Path $pm 'terraform.tfvars.json') }
    $ops += @{ Action='Copy'; Source=(Join-Path $root 'terraform.tf'); Destination=(Join-Path $pc 'terraform.tf') }
    $ops += @{ Action='Copy'; Source=(Join-Path $root 'terraform.tf'); Destination=(Join-Path $pm 'terraform.tf') }
    $ops += @{ Action='Copy'; Source=(Join-Path $root 'main.config.tf'); Destination=(Join-Path $pc 'main.config.tf') }
    $ops += @{ Action='Copy'; Source=(Join-Path $root 'main.config.tf'); Destination=(Join-Path $pm 'main.config.tf') }
    $ops += @{ Action='Copy'; Source=(Join-Path $root 'locals.tf'); Destination=(Join-Path $pc 'locals.tf') }
    $ops += @{ Action='Copy'; Source=(Join-Path $root 'locals.tf'); Destination=(Join-Path $pm 'locals.tf') }
    $ops += @{ Action='Copy'; Source=(Join-Path $root 'variables.tf'); Destination=(Join-Path $pc 'variables.tf') }
    $ops += @{ Action='Copy'; Source=(Join-Path $root 'variables.tf'); Destination=(Join-Path $pm 'variables.tf') }

    $ops += @{ Action='Delete';    Source=(Join-Path $root 'README.md') }
    $ops += @{ Action='Delete';    Source=(Join-Path $root 'terraform.tfvars.json') }
    $ops += @{ Action='Delete';    Source=(Join-Path $root 'terraform.tf') }
    $ops += @{ Action='Delete';    Source=(Join-Path $root 'locals.tf') }
    $ops += @{ Action='Delete';    Source=(Join-Path $root 'variables.tf') }
    $ops += @{ Action='Delete';    Source=(Join-Path $root 'main.config.tf') }
    $ops += @{ Action='DeleteDir'; Source=(Join-Path $root 'scripts') }

    $summary = [ordered]@{Moved=0; Copied=0; Deleted=0; Skipped=0}

    foreach ($op in $ops) {
        try {
            $result = Invoke-AccelOperation @op -Force:$Force -Confirm:$false
        } catch {
            Write-Warning ("Failed {0} '{1}' -> '{2}': {3}" -f $op.Action,$op.Source,$op.Destination,$_.Exception.Message)
            $result = 'Skipped'
        }
        switch ($result) {
            'Moved'   { $summary.Moved++ }
            'Copied'  { $summary.Copied++ }
            'Deleted' { $summary.Deleted++ }
            default   { $summary.Skipped++ }
        }
    }

    if ($WhatIfPreference) {
        return [pscustomobject]@{
            MovedPlanned   = ($ops | Where-Object Action -eq 'Move').Count
            CopiedPlanned  = ($ops | Where-Object Action -eq 'Copy').Count
            DeletedPlanned = ($ops | Where-Object { $_.Action -in 'Delete','DeleteDir' }).Count
            TotalPlanned   = $ops.Count
        }
    }

    [pscustomobject]$summary
}