mirror of
https://github.com/danbulant/dribbblish-dynamic-theme
synced 2026-05-19 04:08:53 +00:00
130 lines
4.3 KiB
PowerShell
130 lines
4.3 KiB
PowerShell
# Copyright 2019 khanhas. GPL license.
|
|
# Edited from project Denoland install script (https://github.com/denoland/deno_install)
|
|
param (
|
|
[string] $version
|
|
)
|
|
|
|
$PSMinVersion = 3
|
|
|
|
if ($v) {
|
|
$version = $v
|
|
}
|
|
|
|
# Helper functions for pretty terminal output.
|
|
function Write-Part ([string] $Text) {
|
|
Write-Host $Text -NoNewline
|
|
}
|
|
|
|
function Write-Emphasized ([string] $Text) {
|
|
Write-Host $Text -NoNewLine -ForegroundColor "Cyan"
|
|
}
|
|
|
|
function Write-Done {
|
|
Write-Host " > " -NoNewline
|
|
Write-Host "OK" -ForegroundColor "Green"
|
|
}
|
|
|
|
if ($PSVersionTable.PSVersion.Major -gt $PSMinVersion) {
|
|
$ErrorActionPreference = "Stop"
|
|
|
|
# Enable TLS 1.2 since it is required for connections to GitHub.
|
|
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
|
|
|
|
$checkSpice = Get-Command spicetify -ErrorAction Silent
|
|
if ($null -eq $checkSpice) {
|
|
Write-Host -ForegroundColor Red "Spicetify not found"
|
|
Invoke-WebRequest -UseBasicParsing "https://raw.githubusercontent.com/khanhas/spicetify-cli/master/install.ps1" | Invoke-Expression
|
|
}
|
|
|
|
if (-not $version) {
|
|
# Determine latest release via GitHub API.
|
|
$latest_release_uri =
|
|
"https://api.github.com/repos/JulienMaille/dribbblish-dynamic-theme/releases/latest"
|
|
Write-Part "DOWNLOADING "; Write-Emphasized $latest_release_uri
|
|
$latest_release_json = Invoke-WebRequest -Uri $latest_release_uri -UseBasicParsing
|
|
Write-Done
|
|
|
|
$version = ($latest_release_json | ConvertFrom-Json).tag_name -replace "v", ""
|
|
$download_uri = ($latest_release_json | ConvertFrom-Json).assets[0].browser_download_url
|
|
}
|
|
|
|
# Check ~\spicetify-cli\Themes directory already exists
|
|
$sp_dir = "${HOME}\spicetify-cli\Themes"
|
|
if (-not (Test-Path $sp_dir)) {
|
|
Write-Part "MAKING FOLDER "; Write-Emphasized $sp_dir
|
|
New-Item -Path $sp_dir -ItemType Directory | Out-Null
|
|
Write-Done
|
|
}
|
|
|
|
# Download release.
|
|
$zip_file = "${sp_dir}\${version}.zip"
|
|
Write-Part "DOWNLOADING "; Write-Emphasized $download_uri
|
|
Invoke-WebRequest -Uri $download_uri -UseBasicParsing -OutFile $zip_file
|
|
Write-Done
|
|
|
|
# Extract theme from .zip file.
|
|
Write-Part "EXTRACTING "; Write-Emphasized $zip_file
|
|
Write-Part " into "; Write-Emphasized ${sp_dir};
|
|
Expand-Archive -Path $zip_file -DestinationPath "${sp_dir}\dribbblish-dynamic-theme-${version}" -Force
|
|
Write-Done
|
|
|
|
# Remove .zip file.
|
|
Write-Part "REMOVING "; Write-Emphasized $zip_file
|
|
Remove-Item -Path $zip_file
|
|
Write-Done
|
|
|
|
# Check ~\.spicetify.\Themes directory already exists
|
|
$spicePath = spicetify -c | Split-Path
|
|
$sp_dot_dir = "$spicePath\Themes\DribbblishDynamic"
|
|
if (-not (Test-Path $sp_dot_dir)) {
|
|
Write-Part "MAKING FOLDER "; Write-Emphasized $sp_dot_dir
|
|
New-Item -Path $sp_dot_dir -ItemType Directory | Out-Null
|
|
Write-Done
|
|
}
|
|
|
|
# Copy to .spicetify.
|
|
Write-Part "COPYING "; Write-Emphasized $sp_dot_dir
|
|
Copy-Item -Path "${sp_dir}\dribbblish-dynamic-theme-${version}\*" -Destination $sp_dot_dir -Recurse -Force
|
|
Write-Done
|
|
|
|
# Installing.
|
|
Write-Part "INSTALLING";
|
|
cd $sp_dot_dir
|
|
Copy-Item dribbblish-dynamic.js ..\..\Extensions
|
|
spicetify config extensions default-dynamic.js- extensions dribbblish.js- extensions Vibrant.min.js- extensions dribbblish-dynamic.js
|
|
spicetify config current_theme DribbblishDynamic
|
|
spicetify config color_scheme base
|
|
spicetify config inject_css 1 replace_colors 1 overwrite_assets 1
|
|
Write-Done
|
|
|
|
# Add patch
|
|
Write-Part "PATCHING "; Write-Emphasized "config-xpui.ini"
|
|
$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}58,
|
|
"@
|
|
# 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
|
|
}
|
|
Write-Done
|
|
|
|
Write-Part "APPLYING";
|
|
$backupVer = $configFile -match "^version"
|
|
if ($backupVer.Length -gt 0) {
|
|
spicetify apply
|
|
} else {
|
|
spicetify backup apply
|
|
}
|
|
Write-Done
|
|
}
|
|
else {
|
|
Write-Part "`nYour Powershell version is less than "; Write-Emphasized "$PSMinVersion";
|
|
Write-Part "`nPlease, update your Powershell downloading the "; Write-Emphasized "'Windows Management Framework'"; Write-Part " greater than "; Write-Emphasized "$PSMinVersion"
|
|
}
|