public/Confirm-FootballFixtureArtifact.ps1

function Confirm-FootballFixtureArtifact {
    <#
        .EXAMPLE
            Confirm-FootballFixtureArtifact -Type preview -Path C:\sportsmonk
 
        .EXAMPLE
            Confirm-FootballFixtureArtifact -Type review -Path C:\sportsmonk
 
    #>

    [CmdletBinding()]
    param(

        [Parameter(Mandatory=$true)]
        [ValidateNotNullOrEmpty()]
        [string]$Path,

        [Parameter(Mandatory=$true)]
        [ValidateSet('preview-image','preview-template','review-image','review-template')]
        [string]$Type

    )
    process{

        $ErrorActionPreference = 'Stop'

        try {

            if ($Type -like '*-image') {

                $CompetitionFolders = Get-ChildItem -Path "$Path\fixture-artifact\working-set"
                $FolderFilter = 'working-set'

            } # if


            if ($Type -like '*template') {

                $CompetitionFolders = Get-ChildItem -Path "$Path\fixture-artifact\multi-media"
                $FolderFilter = 'multi-media'

            } # if

            foreach ($CompetitionFolder in $CompetitionFolders) {

                # \sportsmonk\fixture-artifact\working-set\usa-mls
                $Competition = $($CompetitionFolder.FullName).Split("$FolderFilter\")[1]
                $FixtureFolders = Get-ChildItem -Path $($CompetitionFolder.FullName) -ErrorAction Stop

                $PSObject = [PSCustomObject]@{
                    Competition = $Competition
                    Type = $Type
                }

                foreach ($FixtureFolder in $FixtureFolders) {

                    # \sportsmonk\fixture-artifact\working-set\usa-mls\2025-02-23
                    $Date = $($FixtureFolder.FullName).Split("\$FolderFilter\$Competition\")[1]

                    if ($Type -like 'review*') {

                        $FixtureFiles = Get-ChildItem -Path $($FixtureFolder.FullName) -File -Recurse -ErrorAction Stop `
                            | Where-Object {$_.FullName -like '*rev*' -and $_.FullName -notlike '*prev*'}

                    }

                    if ($Type -like 'preview*') {

                        $FixtureFiles = Get-ChildItem -Path $($FixtureFolder.FullName) -File -Recurse -ErrorAction Stop `
                            | Where-Object {$_.FullName -like "*prev*"}

                    } # if

                    if ($($FixtureFiles.Count) -ge 1) {

                        $PSObject | Add-Member -MemberType NoteProperty -Name FixtureFilesCount -Value $($FixtureFiles.Count)
                        $PSObject | Add-Member -MemberType NoteProperty -Name Date -Value $Date
                        $PSObject
                        $PSObject.PSObject.Properties.Remove('Date')
                        $PSObject.PSObject.Properties.Remove('FixtureFilesCount')

                    } # if
            
                } # foreach
            
            } # foreach

        }
        catch {

            "$($MyInvocation.MyCommand.Name): $_.Exception.Message"
    
        } # trycatch

    } # process

} # function