$checkSpice = Get-Command spicetify -ErrorAction Silent
if ($null -eq $checkSpice) {
    Write-Host -ForegroundColor Red "Spicetify not found"
    Write-Host "Follow instruction on:", "https://spicetify.app/docs/getting-started/simple-installation#windows"
    return
}

Write-Host "Downloading themes package:" -ForegroundColor Green
$zipFile = "$env:TEMP\spicetify-themes.zip"
Invoke-WebRequest "https://github.com/spicetify/spicetify-themes/archive/refs/heads/master.zip" -OutFile $zipFile

Write-Host "Extracting themes package:" -ForegroundColor Green
$extractPath = "$env:TEMP\spicetify-themes-master"
if (Test-Path $extractPath) {
    Remove-Item $extractPath -Recurse -Force
}
Expand-Archive $zipFile -DestinationPath $env:TEMP

# Copy to personal Themes folder
$spicePath = spicetify -c | Split-Path
$dribPath = "$extractPath\Dribbblish"

$destPath = "$spicePath\Themes\Dribbblish"
if (Test-Path $destPath) {
    Remove-Item $destPath -Recurse -Force
}
Copy-Item $dribPath $destPath -Recurse

# Copy extension file
New-Item -ItemType Directory -Force "$spicePath\Extensions"
Copy-Item "$destPath\dribbblish.js" "$spicePath\Extensions"

Write-Host "Configuring:" -ForegroundColor Green
spicetify
spicetify config inject_css 1 replace_colors 1 overwrite_assets 1 current_theme Dribbblish extensions dribbblish.js

# Add patch
$configFile = Get-Content "$spicePath\config-xpui.ini"
if (-not ($configFile -match "xpui.js_find_8008")) {
    $rep = @"
[Patch]
xpui.js_find_8008=,(\w+=)32,
xpui.js_repl_8008=,`${1}56,
"@
    # In case missing Patch section
    if (-not ($configFile -match "\[Patch\]")) {
        $configFile += "`n[Patch]`n"
    }
    $configFile = $configFile -replace "\[Patch\]",$rep
    Set-Content "$spicePath\config-xpui.ini" $configFile
}

$backupVer = $configFile -match "^version"
$version = ConvertFrom-StringData $backupVer[0]
if ($version.version.Length -gt 0) {
    spicetify apply
} else {
    spicetify backup apply
}
