Allow creation of additional themes

This commit is contained in:
Manuel Thalmann 2024-09-23 00:10:05 +02:00
parent 9cc284e086
commit abb686c564

View file

@ -27,31 +27,41 @@ Start-SoftwareInstaller @PSBoundParameters `
$theme = Get-UserConfig "oh-my-posh.theme";
if ($theme) {
$varName = "POSH_THEME";
if ($theme -isnot [string]) {
function New-Theme {
param($info)
$root = "$($IsWindows ? $env:AppData : "~/.config")/oh-my-posh";
$path = Join-Path $root "$($theme.name).omp.json";
$path = Join-Path $root "$($info.name).omp.json";
$null = New-Item -Force -ItemType Directory $root;
Set-Content $path (
& {
if ($IsWindows) {
wsl cat $theme.source
wsl cat $info.source;
} else {
cat $theme.source
cat $info.source;
}
});
$theme = [string] $path;
return $path;
}
foreach ($additionalTheme in (Get-UserConfig "oh-my-posh.additionalThemes")) {
Write-Host "creating theme $additionalTheme"
$null = New-Theme $additionalTheme;
}
if ($theme) {
$varName = "POSH_THEME";
if ($theme -isnot [string]) {
$theme = [string](New-Theme $theme);
}
if ($IsWindows) {
[System.Environment]::SetEnvironmentVariable($varName, "%AppData%/$([System.IO.Path]::GetRelativePath($env:AppData, $path))", "User");
[System.Environment]::SetEnvironmentVariable($varName, "%AppData%/$([System.IO.Path]::GetRelativePath($env:AppData, $theme))", "User");
} else {
. "$PSScriptRoot/../aliae/Manage.ps1";
Add-EnvironmentVariable -User $Arguments.Name $varName ($path).Replace("~", "{{ .Home }}");
Add-EnvironmentVariable -User $Arguments.Name $varName ($theme).Replace("~", "{{ .Home }}");
}
}
};