NerdFonts.psm1
# Download nerd fonts # https://www.nerdfonts.com/font-downloads function Get-NerdFontsReleases { param ( [switch] $Latest, [switch] $AllowPrerelease ) $semverVersionPattern = [regex]'\d+\.\d+\.\d+(-\w+)?' $releases = Invoke-RestMethod 'https://api.github.com/repos/ryanoasis/nerd-fonts/releases' $releaseTagNames = $releases.tag_name $releaseVersions = $releaseTagNames | ForEach-Object { $semverVersionPattern.Match($_).Value } | Sort-Object if (-not $AllowPrerelease) { $releaseVersions = $releaseVersions | Where-Object { $_ -notlike '*-*' } } if ($Latest) { return $releaseVersions[-1] } return $releaseVersions } function Get-NerdFontsNames { param( [switch] $Latest, [switch] $AllowPrerelease ) if ($Latest) { $latest = Get-NerdFontsReleases -Latest -AllowPrerelease:$AllowPrerelease } else { $latest = Get-NerdFontsReleases -AllowPrerelease:$AllowPrerelease } $latest = Invoke-RestMethod 'https://api.github.com/repos/ryanoasis/nerd-fonts/releases/latest' $packages = $latest.assets.browser_download_url | Where-Object { $_ -like '*.zip' } $fontNames = $packages | ForEach-Object { $_.Split('/')[-1].Split('.')[0] } $fontNames } function Get-NerdFonts { param( [string[]] $Name, [string[]] $Version, [switch] $Latest, [switch] $AllowPrerelease ) begin { $versionPattern = [regex]'\d+\.\d+\.\d+(-\w+)?' } process { foreach ($NerdFontsPath in $Path) { $NerdFontsVersionOutput = & $NerdFontsPath --version $version = $versionPattern.Match($NerdFontsVersionOutput).Value [pscustomobject]@{ Path = $NerdFontsPath Version = $version } } } } |