Skip to content

speccy@1.34.84: Fix keep required dependencies#18175

Open
o-l-a-v wants to merge 6 commits into
ScoopInstaller:masterfrom
o-l-a-v:patch-43
Open

speccy@1.34.84: Fix keep required dependencies#18175
o-l-a-v wants to merge 6 commits into
ScoopInstaller:masterfrom
o-l-a-v:patch-43

Conversation

@o-l-a-v

@o-l-a-v o-l-a-v commented Jun 28, 2026

Copy link
Copy Markdown
Contributor

Closes #18167.

  • This is my suggestion for a fix at least. 😊
  • Use conventional PR title: <manifest-name[@version]|chore>: <general summary of the pull request>
  • I have read the Contributing Guide

@coderabbitai

coderabbitai Bot commented Jun 28, 2026

Copy link
Copy Markdown

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 785d07e2-c396-493a-8756-41e47325e092

📥 Commits

Reviewing files that changed from the base of the PR and between d71cabd and 6483c69.

📒 Files selected for processing (1)
  • bucket/speccy.json
🚧 Files skipped from review as they are similar to previous changes (1)
  • bucket/speccy.json

📝 Walkthrough

Walkthrough

bucket/speccy.json updates download fragments to #/spsetup.exe and rewrites pre_install to extract the installer, select architecture-specific files, preserve Lang, clean temporary contents, and initialize persistent settings. The manifest continues to expose Speccy.exe and corrects shortcut casing.

Estimated code review effort: 3 (Moderate) | ~20 minutes

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Out of Scope Changes check ⚠️ Warning The shortcut casing change is outside #18167's dependency-recovery scope and is not justified by the linked issue. Either remove the shortcut casing change or document it as part of the issue fix before merging.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title is concise and describes the main Speccy manifest fix for dependency recovery.
Description check ✅ Passed It links the issue and includes the required checklist, though the actual change summary is very minimal.
Linked Issues check ✅ Passed The manifest changes match #18167 by checking paths, preserving Lang, and recovering dependencies with warnings when extraction fails.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (1)
bucket/speccy.json (1)

6-39: 📐 Maintainability & Code Quality | 🔵 Trivial

Please rerun the local Scoop checks before merge.

scoop config debug true
scoop config gh_token <your-github-token>
.\bin\checkver.ps1 -App speccy -f
.\bin\formatjson.ps1 -App speccy
scoop install bucket/speccy.json -a 64bit
scoop install bucket/speccy.json -a 32bit

Contribution guide: https://github.com/ScoopInstaller/.github/blob/main/.github/CONTRIBUTING.md
Wiki: https://github.com/ScoopInstaller/Scoop/wiki/App-Manifests

As per path instructions, "Provide clear instructions for testing the manifest locally before submission."

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@bucket/speccy.json` around lines 6 - 39, The manifest needs local validation
before merge, so rerun the Scoop checks against the Speccy manifest using the
existing package entry and verify both architectures. Use the speccy manifest
workflow by running checkver, formatjson, and installation tests for 64bit and
32bit, then confirm the pre_install steps and shortcuts still resolve correctly
in the bucket/speccy.json definition before submitting.

Source: Path instructions

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@bucket/speccy.json`:
- Around line 19-24: The DLL/Lang recovery step is too brittle in the speccy
install flow: the cpuidsdk DLL lookup can silently do nothing and the language
folder move can fail outright when the expected path is missing. Update the
recovery logic in the speccy.json extraction script so the cpuidsdk.dll move and
the Lang move both check for the source’s existence, emit a warning when
recovery is partial or missing, and continue without failing the install. Use
the existing recovery block around the Get-ChildItem/Sort-Object/Move-Item
pipeline and the Move-Item for "$dir\\temp\\Lang" to make the
warning-and-continue behavior explicit.
- Around line 14-17: The Speccy extraction step in the JSON script should
validate the EXE path before moving it, because the current
`Get-ChildItem`/`ForEach-Object` flow can silently do nothing when the installer
layout changes. Update the logic around the `Get-ChildItem`, `ForEach-Object`,
and `Move-Item` sequence to resolve the candidate from `$dir\temp`, assert that
exactly one `Speccy.exe` is found, and only then move it to the final
destination. Keep the check close to the existing move operation so the script
fails fast if the file is missing or ambiguous.

---

Nitpick comments:
In `@bucket/speccy.json`:
- Around line 6-39: The manifest needs local validation before merge, so rerun
the Scoop checks against the Speccy manifest using the existing package entry
and verify both architectures. Use the speccy manifest workflow by running
checkver, formatjson, and installation tests for 64bit and 32bit, then confirm
the pre_install steps and shortcuts still resolve correctly in the
bucket/speccy.json definition before submitting.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 4a993ce1-043f-449f-893c-71d6e015e259

📥 Commits

Reviewing files that changed from the base of the PR and between 3205014 and b39079e.

📒 Files selected for processing (1)
  • bucket/speccy.json

Comment thread bucket/speccy.json Outdated
Comment on lines 14 to 17
"Get-ChildItem -Recurse -File -Path \"$dir\" -Name $FileName -ErrorAction Stop |",
" ForEach-Object -Process {",
" Move-Item -Path \"$dir\\$_\" -Destination \"$dir\\Speccy.exe\"",
" }",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

Validate the extracted EXE before moving it.

Get-ChildItem ... -ErrorAction Stop does not throw on zero matches here, so an installer layout change will silently skip the move and leave bin pointing at a missing Speccy.exe. Resolve the candidate from $dir\temp, assert exactly one match, then move it. Based on PR objectives, the fix is supposed to "check the file location before moving".

Suggested fix
-        "Get-ChildItem -Recurse -File -Path \"$dir\" -Name $FileName -ErrorAction Stop |",
-        "    ForEach-Object -Process {",
-        "        Move-Item -Path \"$dir\\$_\" -Destination \"$dir\\Speccy.exe\"",
-        "    }",
+        "$exe = Get-ChildItem -Path \"$dir\\temp\" -Recurse -File -Filter $FileName",
+        "if ($exe.Count -ne 1) { throw \"Unable to locate extracted $FileName\" }",
+        "Move-Item -Path $exe[0].FullName -Destination \"$dir\\Speccy.exe\"",
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"Get-ChildItem -Recurse -File -Path \"$dir\" -Name $FileName -ErrorAction Stop |",
" ForEach-Object -Process {",
" Move-Item -Path \"$dir\\$_\" -Destination \"$dir\\Speccy.exe\"",
" }",
"$exe = Get-ChildItem -Path \"$dir\\temp\" -Recurse -File -Filter $FileName",
"if ($exe.Count -ne 1) { throw \"Unable to locate extracted $FileName\" }",
"Move-Item -Path $exe[0].FullName -Destination \"$dir\\Speccy.exe\"",
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@bucket/speccy.json` around lines 14 - 17, The Speccy extraction step in the
JSON script should validate the EXE path before moving it, because the current
`Get-ChildItem`/`ForEach-Object` flow can silently do nothing when the installer
layout changes. Update the logic around the `Get-ChildItem`, `ForEach-Object`,
and `Move-Item` sequence to resolve the candidate from `$dir\temp`, assert that
exactly one `Speccy.exe` is found, and only then move it to the final
destination. Keep the check close to the existing move operation so the script
fails fast if the file is missing or ambiguous.

Comment thread bucket/speccy.json Outdated
Comment on lines +19 to +24
"Get-ChildItem -Path \"$dir\\temp\" -Include 'cpuidsdk*.dll' -Recurse |",
" Sort-Object -Property 'Length' -Descending:$(if($architecture -eq '64bit'){$true}else{$false}) |",
" Select-Object -First 1 |",
" ForEach-Object -Process {Move-Item -Path $_.FullName -Destination \"$dir\\cpuidsdk.dll\"}",
"# Keep language files",
"Move-Item -Path \"$dir\\temp\\Lang\" -Destination \"$dir\"",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🩺 Stability & Availability | 🟠 Major | ⚡ Quick win

Guard the DLL/Lang recovery path and warn on partial extraction failures.

When no cpuidsdk*.dll is found, this becomes a silent no-op, and Move-Item "$dir\\temp\\Lang" will hard-fail if the folder is missing or nested elsewhere. That still misses the #18167 failure path where dependency recovery should warn and continue. Based on PR objectives, the failure case should "trigger warnings ... but installation should still complete."

Suggested fix
-        "Get-ChildItem -Path \"$dir\\temp\" -Include 'cpuidsdk*.dll' -Recurse |",
-        "   Sort-Object -Property 'Length' -Descending:$(if($architecture -eq '64bit'){$true}else{$false}) |",
-        "   Select-Object -First 1 |",
-        "   ForEach-Object -Process {Move-Item -Path $_.FullName -Destination \"$dir\\cpuidsdk.dll\"}",
+        "$dll = Get-ChildItem -Path \"$dir\\temp\" -Include 'cpuidsdk*.dll' -Recurse |",
+        "   Sort-Object -Property 'Length' -Descending:$(if($architecture -eq '64bit'){$true}else{$false}) |",
+        "   Select-Object -First 1",
+        "if ($dll) {",
+        "   Move-Item -Path $dll.FullName -Destination \"$dir\\cpuidsdk.dll\"",
+        "} else {",
+        "   Write-Warning 'cpuidsdk.dll was not recovered from the installer; Speccy may have limited functionality.'",
+        "}",
         "# Keep language files",
-        "Move-Item -Path \"$dir\\temp\\Lang\" -Destination \"$dir\"",
+        "$lang = Get-ChildItem -Path \"$dir\\temp\" -Recurse -Directory -Filter 'Lang' | Select-Object -First 1",
+        "if ($lang) { Move-Item -Path $lang.FullName -Destination \"$dir\" }",
+        "else { Write-Warning 'Lang directory was not found in the extracted installer.' }",
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"Get-ChildItem -Path \"$dir\\temp\" -Include 'cpuidsdk*.dll' -Recurse |",
" Sort-Object -Property 'Length' -Descending:$(if($architecture -eq '64bit'){$true}else{$false}) |",
" Select-Object -First 1 |",
" ForEach-Object -Process {Move-Item -Path $_.FullName -Destination \"$dir\\cpuidsdk.dll\"}",
"# Keep language files",
"Move-Item -Path \"$dir\\temp\\Lang\" -Destination \"$dir\"",
"$dll = Get-ChildItem -Path \"$dir\\temp\" -Include 'cpuidsdk*.dll' -Recurse |",
" Sort-Object -Property 'Length' -Descending:$(if($architecture -eq '64bit'){$true}else{$false}) |",
" Select-Object -First 1",
"if ($dll) {",
" Move-Item -Path $dll.FullName -Destination \"$dir\\cpuidsdk.dll\"",
"} else {",
" Write-Warning 'cpuidsdk.dll was not recovered from the installer; Speccy may have limited functionality.'",
"}",
"# Keep language files",
"$lang = Get-ChildItem -Path \"$dir\\temp\" -Recurse -Directory -Filter 'Lang' | Select-Object -First 1",
"if ($lang) { Move-Item -Path $lang.FullName -Destination \"$dir\" }",
"else { Write-Warning 'Lang directory was not found in the extracted installer.' }",
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@bucket/speccy.json` around lines 19 - 24, The DLL/Lang recovery step is too
brittle in the speccy install flow: the cpuidsdk DLL lookup can silently do
nothing and the language folder move can fail outright when the expected path is
missing. Update the recovery logic in the speccy.json extraction script so the
cpuidsdk.dll move and the Lang move both check for the source’s existence, emit
a warning when recovery is partial or missing, and continue without failing the
install. Use the existing recovery block around the
Get-ChildItem/Sort-Object/Move-Item pipeline and the Move-Item for
"$dir\\temp\\Lang" to make the warning-and-continue behavior explicit.

@ExLei

ExLei commented Jul 16, 2026

Copy link
Copy Markdown
Contributor

/verify

@github-actions

Copy link
Copy Markdown
Contributor

All changes look good.

Wait for review from human collaborators.

speccy

  • Lint
  • Description
  • License
  • Hashes
  • Checkver
  • Autoupdate

Check the full log for details.

@o-l-a-v

o-l-a-v commented Jul 17, 2026

Copy link
Copy Markdown
Contributor Author

/verify

@github-actions

Copy link
Copy Markdown
Contributor

All changes look good.

Wait for review from human collaborators.

speccy

  • Lint
  • Description
  • License
  • Hashes
  • Checkver
  • Autoupdate

Check the full log for details.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants