Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
67 changes: 67 additions & 0 deletions packaging/choco/resubmit-choco.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
<#
.SYNOPSIS
Rebuilds and pushes a specific taskmon Chocolatey package version for moderator resubmission.

.DESCRIPTION
Downloads the published SHA256 checksums from the GitHub Release for the specified version,
rebuilds the .nupkg via build-choco.ps1, then pushes it to the Chocolatey Community Repository.

Use this when a package has been rejected and needs to be resubmitted with the same version number.

.PARAMETER Version
The version number to resubmit (e.g. 1.7.7).

.PARAMETER ApiKey
Chocolatey API key. If omitted the CHOCO_API_KEY environment variable is used.

.EXAMPLE
./resubmit-choco.ps1 -Version 1.7.7
./resubmit-choco.ps1 -Version 1.7.8 -ApiKey "your-api-key"
#>
[CmdletBinding()]
param(
[Parameter(Mandatory)][string]$Version,
[string]$ApiKey = $env:CHOCO_API_KEY
)

$ErrorActionPreference = 'Stop'

if (-not $ApiKey) {
throw "Provide -ApiKey or set the CHOCO_API_KEY environment variable."
}

$baseUrl = "https://github.com/jchas2/taskmon/releases/download/v$Version"

function Get-PublishedSha256([string]$fileName) {
$url = "$baseUrl/$fileName"
Write-Host " Fetching $url"
$raw = (Invoke-WebRequest -Uri $url -UseBasicParsing).Content.Trim()
# Format: "<HASH> <filename>" - take the first token.
return ($raw -split '\s+')[0].ToLowerInvariant()
}

Write-Host "Fetching published checksums for v$Version..."
$x64Sha256 = Get-PublishedSha256 "taskmon-$Version-windows-x64.zip.sha256"
$arm64Sha256 = Get-PublishedSha256 "taskmon-$Version-windows-arm64.zip.sha256"

Write-Host " x64 : $x64Sha256"
Write-Host " arm64 : $arm64Sha256"

# Build the package into packaging/choco/dist/
$buildScript = Join-Path $PSScriptRoot 'build-choco.ps1'
& $buildScript -Version $Version -X64Sha256 $x64Sha256 -Arm64Sha256 $arm64Sha256
if ($LASTEXITCODE -ne 0) { throw "build-choco.ps1 failed." }

$nupkg = Get-ChildItem (Join-Path $PSScriptRoot "dist\taskmon.$Version.nupkg") -ErrorAction SilentlyContinue
if (-not $nupkg) {
$nupkg = Get-ChildItem (Join-Path $PSScriptRoot 'dist\*.nupkg') |
Where-Object { $_.Name -like "*$Version*" } |
Select-Object -First 1
}
if (-not $nupkg) { throw "Could not find .nupkg for version $Version in dist\." }

Write-Host "Pushing $($nupkg.Name) to Chocolatey Community Repository..."
choco push $nupkg.FullName --source https://push.chocolatey.org/ --api-key $ApiKey
if ($LASTEXITCODE -ne 0) { throw "choco push failed with exit code $LASTEXITCODE" }

Write-Host "Done. $($nupkg.Name) submitted for moderator review."
21 changes: 0 additions & 21 deletions packaging/choco/tools/LICENSE.txt

This file was deleted.

28 changes: 0 additions & 28 deletions packaging/choco/tools/VERIFICATION.txt

This file was deleted.

69 changes: 68 additions & 1 deletion tests/Task.Monitor.Tests/Configuration/ThemeTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,74 @@ public void Setters_Initialise_Successfully()

AssertThemeColours(theme);
}


[Fact]
public void Setters_ReadBack_All_Colour_Properties_Successfully()
{
// Arrange – use a distinct colour per property so a mis-mapped setter is caught.
ConfigSection section = new("Read-Back Theme");

Theme theme = new(section);

// Act – write every colour property through its setter.
theme.Background = ColorTranslator.FromHtml("#010101");
theme.BackgroundHighlight = ColorTranslator.FromHtml("#020202");
theme.ColumnCommandNormalUserSpace = ColorTranslator.FromHtml("#030303");
theme.ColumnCommandLowPriority = ColorTranslator.FromHtml("#040404");
theme.ColumnCommandHighCpu = ColorTranslator.FromHtml("#050505");
theme.ColumnCommandIoBound = ColorTranslator.FromHtml("#060606");
theme.ColumnCommandScript = ColorTranslator.FromHtml("#070707");
theme.ColumnUserCurrentNonRoot = ColorTranslator.FromHtml("#080808");
theme.ColumnUserOtherNonRoot = ColorTranslator.FromHtml("#090909");
theme.ColumnUserSystem = ColorTranslator.FromHtml("#0a0a0a");
theme.ColumnUserRoot = ColorTranslator.FromHtml("#0b0b0b");
theme.CommandBackground = ColorTranslator.FromHtml("#0c0c0c");
theme.CommandForeground = ColorTranslator.FromHtml("#0d0d0d");
theme.DeltaHighlightColour = ColorTranslator.FromHtml("#0e0e0e");
theme.Error = ColorTranslator.FromHtml("#0f0f0f");
theme.Foreground = ColorTranslator.FromHtml("#101010");
theme.ForegroundHighlight = ColorTranslator.FromHtml("#111111");
theme.HeaderBackground = ColorTranslator.FromHtml("#121212");
theme.HeaderForeground = ColorTranslator.FromHtml("#131313");
theme.MenubarBackground = ColorTranslator.FromHtml("#141414");
theme.MenubarForeground = ColorTranslator.FromHtml("#151515");
theme.RangeHighBackground = ColorTranslator.FromHtml("#161616");
theme.RangeLowBackground = ColorTranslator.FromHtml("#171717");
theme.RangeMidBackground = ColorTranslator.FromHtml("#181818");
theme.RangeHighForeground = ColorTranslator.FromHtml("#191919");
theme.RangeLowForeground = ColorTranslator.FromHtml("#1a1a1a");
theme.RangeMidForeground = ColorTranslator.FromHtml("#1b1b1b");

// Assert – read every colour property back through its getter.
Assert.Equal(ColorTranslator.FromHtml("#010101"), theme.Background);
Assert.Equal(ColorTranslator.FromHtml("#020202"), theme.BackgroundHighlight);
Assert.Equal(ColorTranslator.FromHtml("#030303"), theme.ColumnCommandNormalUserSpace);
Assert.Equal(ColorTranslator.FromHtml("#040404"), theme.ColumnCommandLowPriority);
Assert.Equal(ColorTranslator.FromHtml("#050505"), theme.ColumnCommandHighCpu);
Assert.Equal(ColorTranslator.FromHtml("#060606"), theme.ColumnCommandIoBound);
Assert.Equal(ColorTranslator.FromHtml("#070707"), theme.ColumnCommandScript);
Assert.Equal(ColorTranslator.FromHtml("#080808"), theme.ColumnUserCurrentNonRoot);
Assert.Equal(ColorTranslator.FromHtml("#090909"), theme.ColumnUserOtherNonRoot);
Assert.Equal(ColorTranslator.FromHtml("#0a0a0a"), theme.ColumnUserSystem);
Assert.Equal(ColorTranslator.FromHtml("#0b0b0b"), theme.ColumnUserRoot);
Assert.Equal(ColorTranslator.FromHtml("#0c0c0c"), theme.CommandBackground);
Assert.Equal(ColorTranslator.FromHtml("#0d0d0d"), theme.CommandForeground);
Assert.Equal(ColorTranslator.FromHtml("#0e0e0e"), theme.DeltaHighlightColour);
Assert.Equal(ColorTranslator.FromHtml("#0f0f0f"), theme.Error);
Assert.Equal(ColorTranslator.FromHtml("#101010"), theme.Foreground);
Assert.Equal(ColorTranslator.FromHtml("#111111"), theme.ForegroundHighlight);
Assert.Equal(ColorTranslator.FromHtml("#121212"), theme.HeaderBackground);
Assert.Equal(ColorTranslator.FromHtml("#131313"), theme.HeaderForeground);
Assert.Equal(ColorTranslator.FromHtml("#141414"), theme.MenubarBackground);
Assert.Equal(ColorTranslator.FromHtml("#151515"), theme.MenubarForeground);
Assert.Equal(ColorTranslator.FromHtml("#161616"), theme.RangeHighBackground);
Assert.Equal(ColorTranslator.FromHtml("#171717"), theme.RangeLowBackground);
Assert.Equal(ColorTranslator.FromHtml("#181818"), theme.RangeMidBackground);
Assert.Equal(ColorTranslator.FromHtml("#191919"), theme.RangeHighForeground);
Assert.Equal(ColorTranslator.FromHtml("#1a1a1a"), theme.RangeLowForeground);
Assert.Equal(ColorTranslator.FromHtml("#1b1b1b"), theme.RangeMidForeground);
}

private void AssertThemeColours(Theme theme)
{
Assert.Equal(ColorTranslator.FromHtml("#0f1610"), theme.Background);
Expand Down
Loading