From 752bc10ef0182daf3caef104731c3e27c416e7a5 Mon Sep 17 00:00:00 2001 From: Kris Borowinski Date: Sun, 7 Jul 2024 02:08:51 +0200 Subject: [PATCH 01/10] Update Humanizer package to latest version; Add support for PowerShell 5.1; Try ISO language name as last resort when adding resources --- build.ps1 | 7 +++++- src/PowerShellHumanizer.psm1 | 20 ++++++++++++++++-- src/dotnet/dependencies.csproj | 4 ++-- src/ps51/System.Buffers.4.0.2.0.dll | Bin 0 -> 27992 bytes ...untime.CompilerServices.Unsafe.4.0.4.1.dll | Bin 0 -> 16248 bytes 5 files changed, 26 insertions(+), 5 deletions(-) create mode 100644 src/ps51/System.Buffers.4.0.2.0.dll create mode 100644 src/ps51/System.Runtime.CompilerServices.Unsafe.4.0.4.1.dll diff --git a/build.ps1 b/build.ps1 index d344858..e97538f 100644 --- a/build.ps1 +++ b/build.ps1 @@ -45,11 +45,13 @@ $csproj = [System.IO.Path]::Combine($src, "dotnet", "dependencies.csproj") $bin = [System.IO.Path]::Combine($src, "dotnet", "bin") $obj = [System.IO.Path]::Combine($src, "dotnet", "obj") $lib = [System.IO.Path]::Combine($publish, "lib") +$ps51 = [System.IO.Path]::Combine($src, "ps51") Write-Host "src: $src" Write-Host "docs: $docs" Write-Host "publish: $publish" Write-Host "lib: $lib" +Write-Host "ps51: $ps51" Write-Host "dotnet: $([Environment]::Version)" Write-Host "ps: $($PSVersionTable.PSVersion)" @@ -64,7 +66,7 @@ $manifest = @{ FunctionsToExport = @() ModuleVersion = [version]::new($Major, $Minor, $Build, $Revision) - PowerShellVersion = '7.4' + PowerShellVersion = '5.1' ProjectUri = "https://github.com/dfinke/PowerShellHumanizer" LicenseUri = "https://github.com/dfinke/PowerShellHumanizer/blob/master/LICENSE.txt" RootModule = "$module.psm1" @@ -105,6 +107,9 @@ function Build { Get-ChildItem -Path $lib -filter "*.pdb" | Remove-Item -Force -ErrorAction SilentlyContinue Get-ChildItem -Path $lib -filter "System.Management.Automation.dll" | Remove-Item -Force -ErrorAction SilentlyContinue Get-ChildItem -Path $lib -filter "dependencies.dll" | Remove-Item -Force -ErrorAction SilentlyContinue + + # Copy PowerShell 5.1 dll's + Copy-Item -Path "$ps51/*.dll" -Destination "$publish/lib" Copy-Item -Path "$src/$module.psm1" -Destination $publish Copy-Item -Path @("$parent/README.md") -Destination $publish -ErrorAction SilentlyContinue diff --git a/src/PowerShellHumanizer.psm1 b/src/PowerShellHumanizer.psm1 index ae7c3fc..d78f6e5 100644 --- a/src/PowerShellHumanizer.psm1 +++ b/src/PowerShellHumanizer.psm1 @@ -1,9 +1,25 @@ # Load dlls +if ($PSVersionTable.PSVersion.Major -lt 6) { + Add-Type -Path "$PSScriptRoot/lib/System.Buffers.4.0.2.0.dll" + Add-Type -Path "$PSScriptRoot/lib/System.Runtime.CompilerServices.Unsafe.4.0.4.1.dll" +} Add-Type -Path "$PSScriptRoot/lib/Humanizer.dll" if ($PSCulture -ne 'en-US') { - if (Test-Path "$PSScriptRoot/lib/$PSCulture") { - Add-Type -Path "$PSScriptRoot/lib/$PSCulture/Humanizer.resources.dll" + $resourcePath = foreach ( + $culture in + $PSCulture, + [Globalization.CultureInfo]::CurrentCulture.TwoLetterISOLanguageName + ) { + $pathCandidate = "$PSScriptRoot/lib/$culture/Humanizer.resources.dll" + if (Test-Path $pathCandidate) { + $pathCandidate + break + } + } + + if ($resourcePath) { + Add-Type -Path $resourcePath } else { Write-Warning "Humanizer doesn't currently support '$PSCulture'." } diff --git a/src/dotnet/dependencies.csproj b/src/dotnet/dependencies.csproj index 088183d..9169b7a 100644 --- a/src/dotnet/dependencies.csproj +++ b/src/dotnet/dependencies.csproj @@ -2,11 +2,11 @@ netstandard2.0 - 3.0.0-beta.13 + 3.0.0-beta.54 - + diff --git a/src/ps51/System.Buffers.4.0.2.0.dll b/src/ps51/System.Buffers.4.0.2.0.dll new file mode 100644 index 0000000000000000000000000000000000000000..b6d9c7782d275b83f4d0883f9bfb2d65fc5c9e9f GIT binary patch literal 27992 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%0DV%GL-7lfv$jZq+l3F9+zd% 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 literal 0 HcmV?d00001 diff --git a/src/ps51/System.Runtime.CompilerServices.Unsafe.4.0.4.1.dll b/src/ps51/System.Runtime.CompilerServices.Unsafe.4.0.4.1.dll new file mode 100644 index 0000000000000000000000000000000000000000..e71751092a839bb4033e1abef77144e444dbb398 GIT binary patch literal 16248 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 D-T^%u literal 0 HcmV?d00001 From f88e62f3fe76a36ac99b43aadec0b3773219f4b0 Mon Sep 17 00:00:00 2001 From: Kris Borowinski Date: Sun, 7 Jul 2024 13:09:52 +0200 Subject: [PATCH 02/10] Fix ConvertTo-Quantity; Expand TimeSpan.types --- src/public/ConvertTo-Quantity.ps1 | 4 ++-- src/types/TimeSpan.types.ps1xml | 18 ++++++++++++++++-- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/src/public/ConvertTo-Quantity.ps1 b/src/public/ConvertTo-Quantity.ps1 index fe0b724..d9dbd86 100644 --- a/src/public/ConvertTo-Quantity.ps1 +++ b/src/public/ConvertTo-Quantity.ps1 @@ -26,10 +26,10 @@ function ConvertTo-Quantity { [CmdletBinding()] [OutputType('string')] param( - [Parameter(Mandatory, Position = 0, ValueFromPipeline)] + [Parameter(Mandatory, Position = 0)] [string]$String, - [Parameter(Mandatory, Position = 1)] + [Parameter(Mandatory, Position = 1, ValueFromPipeline)] [Alias('Count')] [int]$Quantity, diff --git a/src/types/TimeSpan.types.ps1xml b/src/types/TimeSpan.types.ps1xml index e7ee14e..aa3f83f 100644 --- a/src/types/TimeSpan.types.ps1xml +++ b/src/types/TimeSpan.types.ps1xml @@ -7,8 +7,22 @@ Humanize From 327a500ebd18cf81507933b8de8c2657ff6ea3c9 Mon Sep 17 00:00:00 2001 From: Kris Borowinski Date: Sun, 7 Jul 2024 13:32:45 +0200 Subject: [PATCH 03/10] Use CurrentUICulture rather that CurrentCulture; Fix indentation and casing in format files --- src/PowerShellHumanizer.psm1 | 4 +-- src/formats/FileInfo.format.ps1xml | 34 ++++++++++++------------- src/formats/FileInfoIcons.format.ps1xml | 11 ++++---- src/types/TimeSpan.types.ps1xml | 6 ++--- 4 files changed, 26 insertions(+), 29 deletions(-) diff --git a/src/PowerShellHumanizer.psm1 b/src/PowerShellHumanizer.psm1 index d78f6e5..f0341bc 100644 --- a/src/PowerShellHumanizer.psm1 +++ b/src/PowerShellHumanizer.psm1 @@ -8,8 +8,8 @@ Add-Type -Path "$PSScriptRoot/lib/Humanizer.dll" if ($PSCulture -ne 'en-US') { $resourcePath = foreach ( $culture in - $PSCulture, - [Globalization.CultureInfo]::CurrentCulture.TwoLetterISOLanguageName + [CultureInfo]::CurrentUICulture, + [CultureInfo]::CurrentUICulture.TwoLetterISOLanguageName ) { $pathCandidate = "$PSScriptRoot/lib/$culture/Humanizer.resources.dll" if (Test-Path $pathCandidate) { diff --git a/src/formats/FileInfo.format.ps1xml b/src/formats/FileInfo.format.ps1xml index f335a03..f69b9fa 100644 --- a/src/formats/FileInfo.format.ps1xml +++ b/src/formats/FileInfo.format.ps1xml @@ -1,3 +1,4 @@ + @@ -8,7 +9,6 @@ - @@ -22,12 +22,12 @@ - - $_.PSParentPath.Replace("Microsoft.PowerShell.Core\FileSystem::", "") - + + $_.PSParentPath.Replace("Microsoft.PowerShell.Core\FileSystem::", "") + - + @@ -35,26 +35,24 @@ - - - + children FileSystemTypes - PSParentPath - FileSystemTypes-GroupingFormat + PSParentPath + FileSystemTypes-GroupingFormat - - - 8 - left - + + + 8 + Left + 15 @@ -62,7 +60,7 @@ 10 - right + Right @@ -80,7 +78,7 @@ - if (-not $_.PSIsContainer) { [Humanizer.ByteSizeExtensions]::bytes($_.Length).ToString(0.00)} + if (-not $_.PSIsContainer) { [Humanizer.ByteSizeExtensions]::bytes($_.Length).ToString(0.00)} @@ -92,4 +90,4 @@ - \ No newline at end of file + diff --git a/src/formats/FileInfoIcons.format.ps1xml b/src/formats/FileInfoIcons.format.ps1xml index 48c60c3..7b9a4ce 100644 --- a/src/formats/FileInfoIcons.format.ps1xml +++ b/src/formats/FileInfoIcons.format.ps1xml @@ -1,5 +1,4 @@ - @@ -26,7 +25,7 @@ https://github.com/DHowett/DirColors --> - $_.PSParentPath.Replace("Microsoft.PowerShell.Core\FileSystem::", "") + $_.PSParentPath.Replace("Microsoft.PowerShell.Core\FileSystem::", "") @@ -54,17 +53,17 @@ https://github.com/DHowett/DirColors --> 7 - left + Left 25 - right + Right 14 - right + Right @@ -228,4 +227,4 @@ https://github.com/DHowett/DirColors --> - \ No newline at end of file + diff --git a/src/types/TimeSpan.types.ps1xml b/src/types/TimeSpan.types.ps1xml index aa3f83f..6a9b7dc 100644 --- a/src/types/TimeSpan.types.ps1xml +++ b/src/types/TimeSpan.types.ps1xml @@ -9,7 +9,7 @@ [OutputType([System.String])] param( [Int]$precision = 1, - [CultureInfo]$culture = [CultureInfo]::CurrentCulture, + [CultureInfo]$culture = [CultureInfo]::CurrentUICulture, [Humanizer.TimeUnit]$maxUnit = [Humanizer.TimeUnit]::Year, [String]$collectionSeparator = ', ', [Boolean]$toWords = $false @@ -24,7 +24,7 @@ $toWords ) - + - \ No newline at end of file + From 3f8a93b37227b875d8a9aff74bdadb1e624379a4 Mon Sep 17 00:00:00 2001 From: Kris Borowinski Date: Sun, 7 Jul 2024 13:49:16 +0200 Subject: [PATCH 04/10] Use CurrentUICulture rather that CurrentCulture when locating resource file --- src/PowerShellHumanizer.psm1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/PowerShellHumanizer.psm1 b/src/PowerShellHumanizer.psm1 index f0341bc..afe8824 100644 --- a/src/PowerShellHumanizer.psm1 +++ b/src/PowerShellHumanizer.psm1 @@ -5,7 +5,7 @@ if ($PSVersionTable.PSVersion.Major -lt 6) { } Add-Type -Path "$PSScriptRoot/lib/Humanizer.dll" -if ($PSCulture -ne 'en-US') { +if ([CultureInfo]::CurrentUICulture.Name -ne 'en-US') { $resourcePath = foreach ( $culture in [CultureInfo]::CurrentUICulture, From 6009fefedaf7c433830773f88d338e47cd158b58 Mon Sep 17 00:00:00 2001 From: Kris Borowinski Date: Sun, 7 Jul 2024 14:20:42 +0200 Subject: [PATCH 05/10] Resource files are imported automatically on latest Humanizer.dll --- src/PowerShellHumanizer.psm1 | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/PowerShellHumanizer.psm1 b/src/PowerShellHumanizer.psm1 index afe8824..73965c9 100644 --- a/src/PowerShellHumanizer.psm1 +++ b/src/PowerShellHumanizer.psm1 @@ -5,6 +5,7 @@ if ($PSVersionTable.PSVersion.Major -lt 6) { } Add-Type -Path "$PSScriptRoot/lib/Humanizer.dll" +<# Resource files are imported automatically on latest Humanizer.dll if ([CultureInfo]::CurrentUICulture.Name -ne 'en-US') { $resourcePath = foreach ( $culture in @@ -24,6 +25,7 @@ if ([CultureInfo]::CurrentUICulture.Name -ne 'en-US') { Write-Warning "Humanizer doesn't currently support '$PSCulture'." } } +#> if (Get-Module -Name Terminal-Icons -ListAvailable -ErrorAction SilentlyContinue) { Update-FormatData -PrependPath "$PSSCriptRoot/formats/FileInfoIcons.format.ps1xml" From 61b8bb162460a8acac7a730033c8a94ade2cf3d6 Mon Sep 17 00:00:00 2001 From: Kris Borowinski Date: Sun, 7 Jul 2024 14:34:33 +0200 Subject: [PATCH 06/10] Update timespan extension methods in help --- src/en-US/about_PowerShellHumanizer.help.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/en-US/about_PowerShellHumanizer.help.txt b/src/en-US/about_PowerShellHumanizer.help.txt index b71cea1..d3bf118 100644 --- a/src/en-US/about_PowerShellHumanizer.help.txt +++ b/src/en-US/about_PowerShellHumanizer.help.txt @@ -54,7 +54,7 @@ INTEGER EXTENSION PROPERTIES .Milliseconds TIMESPAN EXTENSION METHODS - .Humanize([int]Precision) + .Humanize([int]Precision, [CultureInfo]Culture, [Humanizer.TimeUnit]MaxUnit, [string]CollectionSeparator, [bool]ToWords) DATETIME EXTENSION METHODS .Humanize([bool]UTC) \ No newline at end of file From 4ce45725662a528a3b39e39d328bf403c02ad2aa Mon Sep 17 00:00:00 2001 From: Kris Borowinski Date: Sun, 7 Jul 2024 14:37:38 +0200 Subject: [PATCH 07/10] Remove extra whitespaces --- src/en-US/about_PowerShellHumanizer.help.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/en-US/about_PowerShellHumanizer.help.txt b/src/en-US/about_PowerShellHumanizer.help.txt index d3bf118..3c2174f 100644 --- a/src/en-US/about_PowerShellHumanizer.help.txt +++ b/src/en-US/about_PowerShellHumanizer.help.txt @@ -54,7 +54,7 @@ INTEGER EXTENSION PROPERTIES .Milliseconds TIMESPAN EXTENSION METHODS - .Humanize([int]Precision, [CultureInfo]Culture, [Humanizer.TimeUnit]MaxUnit, [string]CollectionSeparator, [bool]ToWords) + .Humanize([int]Precision, [CultureInfo]Culture, [Humanizer.TimeUnit]MaxUnit, [string]CollectionSeparator, [bool]ToWords) DATETIME EXTENSION METHODS .Humanize([bool]UTC) \ No newline at end of file From 24dd330a4ab36c2512dc1628cd2fbd3a2f852beb Mon Sep 17 00:00:00 2001 From: Kris Borowinski Date: Sun, 7 Jul 2024 14:47:39 +0200 Subject: [PATCH 08/10] Change variables case to be in line with other custom types in this module --- src/types/TimeSpan.types.ps1xml | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/types/TimeSpan.types.ps1xml b/src/types/TimeSpan.types.ps1xml index 6a9b7dc..c50158e 100644 --- a/src/types/TimeSpan.types.ps1xml +++ b/src/types/TimeSpan.types.ps1xml @@ -8,20 +8,20 @@ From 2505624cbd1fe5fea02a97025e86ba8434772a0b Mon Sep 17 00:00:00 2001 From: Kris Borowinski Date: Mon, 8 Jul 2024 19:12:37 +0200 Subject: [PATCH 09/10] PowerShell 5.1 range operator does not support characters --- tests/PowerShellHumanizer.Tests.ps1 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/PowerShellHumanizer.Tests.ps1 b/tests/PowerShellHumanizer.Tests.ps1 index 89821e7..cd6fd52 100644 --- a/tests/PowerShellHumanizer.Tests.ps1 +++ b/tests/PowerShellHumanizer.Tests.ps1 @@ -151,8 +151,8 @@ Describe 'Custom Formats' { Context 'FileSystem' { BeforeAll { - $listAlphaLower = 'a'..'z' - $listAlphaUpper = 'A'..'Z' + $listAlphaLower = [char[]](97..122) + $listAlphaUpper = [char[]](65..90) $listNumber = 0..9 $charset = $listAlphaLower + $listAlphaUpper + $listNumber From 4967c22c9a8f491802e0d57b26589bcc0262f44b Mon Sep 17 00:00:00 2001 From: Kris Borowinski Date: Mon, 8 Jul 2024 19:19:41 +0200 Subject: [PATCH 10/10] Remove resource import since Humanizer assembly auto-imports resources on demand --- src/PowerShellHumanizer.psm1 | 22 ---------------------- 1 file changed, 22 deletions(-) diff --git a/src/PowerShellHumanizer.psm1 b/src/PowerShellHumanizer.psm1 index 73965c9..3d6cc3e 100644 --- a/src/PowerShellHumanizer.psm1 +++ b/src/PowerShellHumanizer.psm1 @@ -5,28 +5,6 @@ if ($PSVersionTable.PSVersion.Major -lt 6) { } Add-Type -Path "$PSScriptRoot/lib/Humanizer.dll" -<# Resource files are imported automatically on latest Humanizer.dll -if ([CultureInfo]::CurrentUICulture.Name -ne 'en-US') { - $resourcePath = foreach ( - $culture in - [CultureInfo]::CurrentUICulture, - [CultureInfo]::CurrentUICulture.TwoLetterISOLanguageName - ) { - $pathCandidate = "$PSScriptRoot/lib/$culture/Humanizer.resources.dll" - if (Test-Path $pathCandidate) { - $pathCandidate - break - } - } - - if ($resourcePath) { - Add-Type -Path $resourcePath - } else { - Write-Warning "Humanizer doesn't currently support '$PSCulture'." - } -} -#> - if (Get-Module -Name Terminal-Icons -ListAvailable -ErrorAction SilentlyContinue) { Update-FormatData -PrependPath "$PSSCriptRoot/formats/FileInfoIcons.format.ps1xml" } else {