$ErrorActionPreference = "Stop"

$gitIgnorePath = "$PSScriptRoot/.gitignore"

Function gig {
  param(
    [Parameter(Mandatory=$true)]
    [string[]]$list
  )
  $params = ($list | ForEach-Object { [uri]::EscapeDataString($_) }) -join ","
  Invoke-WebRequest -Uri "https://www.toptal.com/developers/gitignore/api/$params" | `
    Select-Object -ExpandProperty content | `
    Set-Content -Path $gitIgnorePath -Encoding utf8 -NoNewline
}

gig windows,jetbrains,csharp,macos,sonarqube

# Replace specific ignore patterns
$(Get-Content $gitIgnorePath) `
    -replace '^\.idea', '**/.idea' `
| Set-Content -Path $gitIgnorePath