From 395cf6f84f35241eb16053ffe503b61bfddff552 Mon Sep 17 00:00:00 2001 From: MallyDev2 <239412472+MallyDev2@users.noreply.github.com> Date: Fri, 5 Jun 2026 05:21:55 -0400 Subject: [PATCH] Fix pnpm warning handling in installer --- dist/DiscordLyrics-Installer.exe | Bin 64000 -> 64000 bytes dist/DiscordLyrics-Installer.ps1 | 62 ++++++++++++++++++++++++---- dist/DiscordLyrics-release.zip | Bin 419640 -> 419953 bytes scripts/DiscordLyrics-Installer.ps1 | 62 ++++++++++++++++++++++++---- 4 files changed, 108 insertions(+), 16 deletions(-) diff --git a/dist/DiscordLyrics-Installer.exe b/dist/DiscordLyrics-Installer.exe index aa105767edb2fc6bf31924f82d8d8fc4f4c0a9a3..e9e1deffd880a902ff4dd400b8eb8a3d625938fe 100644 GIT binary patch delta 37 vcmV+=0NVe6^aFtO1CWRU4wbQrib)XBvh~iNOc_Up*cIYS7&1 - $ExitCode = $LASTEXITCODE - } finally { - $ErrorActionPreference = $PreviousErrorActionPreference - } + $ResolvedCommand = Resolve-NativeCommand -Command $Command + $CommandLine = Join-CommandLine -Command $ResolvedCommand -Arguments $Arguments + $Output = & cmd.exe /d /s /c $CommandLine 2>&1 + $ExitCode = $LASTEXITCODE $Text = ($Output | ForEach-Object { "$_" }) -join [Environment]::NewLine if ($Text) { @@ -109,6 +105,56 @@ function Invoke-CheckedCommand { } } +function Resolve-NativeCommand { + param( + [Parameter(Mandatory = $true)] + [string]$Command + ) + + $LookupNames = @($Command) + if ([System.IO.Path]::GetExtension($Command) -eq "") { + $LookupNames = @("$Command.cmd", "$Command.exe", "$Command.bat", $Command) + } + + foreach ($Name in $LookupNames) { + $Found = Get-Command $Name -CommandType Application -ErrorAction SilentlyContinue | Select-Object -First 1 + if ($Found) { + return $Found.Source + } + } + + return $Command +} + +function Join-CommandLine { + param( + [Parameter(Mandatory = $true)] + [string]$Command, + [string[]]$Arguments = @() + ) + + $Parts = @($Command) + $Arguments + return ($Parts | ForEach-Object { ConvertTo-CommandArgument $_ }) -join " " +} + +function ConvertTo-CommandArgument { + param( + [AllowNull()] + [string]$Value + ) + + if ($null -eq $Value) { + return '""' + } + + $Text = [string]$Value + if ($Text -notmatch '[\s"]') { + return $Text + } + + return '"' + ($Text -replace '"', '\"') + '"' +} + function Download-File { param( [Parameter(Mandatory = $true)] diff --git a/dist/DiscordLyrics-release.zip b/dist/DiscordLyrics-release.zip index e764c98c47c5b754f45b228c459a05cf1207f884..62bc519dcb29a4553ae5d006cb8ec4379d46cbb8 100644 GIT binary patch delta 17197 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 - $ExitCode = $LASTEXITCODE - } finally { - $ErrorActionPreference = $PreviousErrorActionPreference - } + $ResolvedCommand = Resolve-NativeCommand -Command $Command + $CommandLine = Join-CommandLine -Command $ResolvedCommand -Arguments $Arguments + $Output = & cmd.exe /d /s /c $CommandLine 2>&1 + $ExitCode = $LASTEXITCODE $Text = ($Output | ForEach-Object { "$_" }) -join [Environment]::NewLine if ($Text) { @@ -109,6 +105,56 @@ function Invoke-CheckedCommand { } } +function Resolve-NativeCommand { + param( + [Parameter(Mandatory = $true)] + [string]$Command + ) + + $LookupNames = @($Command) + if ([System.IO.Path]::GetExtension($Command) -eq "") { + $LookupNames = @("$Command.cmd", "$Command.exe", "$Command.bat", $Command) + } + + foreach ($Name in $LookupNames) { + $Found = Get-Command $Name -CommandType Application -ErrorAction SilentlyContinue | Select-Object -First 1 + if ($Found) { + return $Found.Source + } + } + + return $Command +} + +function Join-CommandLine { + param( + [Parameter(Mandatory = $true)] + [string]$Command, + [string[]]$Arguments = @() + ) + + $Parts = @($Command) + $Arguments + return ($Parts | ForEach-Object { ConvertTo-CommandArgument $_ }) -join " " +} + +function ConvertTo-CommandArgument { + param( + [AllowNull()] + [string]$Value + ) + + if ($null -eq $Value) { + return '""' + } + + $Text = [string]$Value + if ($Text -notmatch '[\s"]') { + return $Text + } + + return '"' + ($Text -replace '"', '\"') + '"' +} + function Download-File { param( [Parameter(Mandatory = $true)]