Skip to content

iTunes: Add version 12.13.10.3#17940

Open
arvdk wants to merge 1 commit into
ScoopInstaller:masterfrom
arvdk:add-iTunes-manifest
Open

iTunes: Add version 12.13.10.3#17940
arvdk wants to merge 1 commit into
ScoopInstaller:masterfrom
arvdk:add-iTunes-manifest

Conversation

@arvdk

@arvdk arvdk commented May 30, 2026

Copy link
Copy Markdown
Contributor

Closes #7141

Since I don't use iTunes myself, I don't know about any persistence and no persistence is implemented for now.

  • Use conventional PR title: <manifest-name[@version]|chore>: <general summary of the pull request>
  • I have read the Contributing Guide

@coderabbitai

coderabbitai Bot commented May 30, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

This pull request adds a new Scoop-style application manifest for Apple iTunes at bucket/itunes.json. The manifest defines version 12.13.10.3 with metadata including description, homepage, and proprietary license. It specifies 64-bit and 32-bit installer package URLs with corresponding SHA-256 checksums. The manifest includes a PowerShell installer script that extracts the MSI archive according to system architecture, moves extracted files to the installation directory, and performs cleanup. It defines a shortcut from iTunes.exe to the iTunes command, includes a checkver PowerShell script that downloads and parses the installer page to extract the product version, and provides autoupdate configuration that maps the Win64 and Win32 architecture URLs.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title 'iTunes: Add version 12.13.10.3' clearly and concisely describes the main change: adding an iTunes manifest with a specific version.
Description check ✅ Passed The PR description includes issue reference, conventional title confirmation, and contribution guide acknowledgment as required by the template.
Linked Issues check ✅ Passed The PR successfully implements the core requirement of #7141 by adding an iTunes manifest with appropriate metadata, installer configurations, and automated update mechanisms.
Out of Scope Changes check ✅ Passed All changes are directly related to adding the iTunes manifest as requested in #7141; no out-of-scope modifications are present.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.


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 and usage tips.

@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.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
bucket/itunes.json (2)

1-56: 🛠️ Refactor suggestion | 🟠 Major | ⚡ Quick win

Reminder: Ensure CRLF line endings.

Scoop manifests must use CRLF (Windows-style) line endings. Please verify your file uses CRLF before merging.

For more details, see the Scoop Contribution Guide.

🤖 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/itunes.json` around lines 1 - 56, The manifest currently uses LF line
endings; convert the file to CRLF (Windows-style) line endings before merging so
the scoop manifest (itunes.json) complies with the Scoop Contribution Guide;
edit the file in your editor or run a line-ending conversion (or set Git
core.eol to crlf) and re-save the manifest (ensure preserved JSON keys like
"version", "installer", "checkver", and "autoupdate" remain unchanged) and
recommit the updated file.

1-56: 🛠️ Refactor suggestion | 🟠 Major | 🏗️ Heavy lift

Test the manifest before merging.

Please test the manifest locally to ensure installation, version detection, and autoupdate work correctly:

Optional: Enable debug mode and set GitHub token (for GitHub API access only):

scoop config debug true
scoop config gh_token <your-github-token>  # Read access only

Force version detection and autoupdate:

.\bin\checkver.ps1 -App itunes -f

Auto-format (Lint) the JSON manifest:

.\bin\formatjson.ps1 -App itunes

Test installation for each architecture:

# 64-bit
scoop install bucket/itunes.json -a 64bit

# 32-bit (on a clean environment or after uninstall)
scoop uninstall itunes
scoop install bucket/itunes.json -a 32bit

For more details, see the Contribution Guide.

🤖 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/itunes.json` around lines 1 - 56, The manifest needs local testing and
formatting: run .\bin\formatjson.ps1 -App itunes to lint the bucket/itunes.json,
then enable debug (scoop config debug true) and optionally set gh_token for API
access; force version detection using .\bin\checkver.ps1 -App itunes -f to
validate the checkver block (the $dl_url/cache_path logic and regex) and confirm
$ver is correct; test installation of both architectures (scoop install
bucket/itunes.json -a 64bit and then -a 32bit after uninstall) to validate the
installer script paths (iTunes64.msi / iTunes.msi, Expand-MsiArchive, Move-Item,
Remove-Item) and verify autoupdate URLs in the autoupdate block work as
expected; fix any issues found and re-run the checks before merging.
🧹 Nitpick comments (1)
bucket/itunes.json (1)

34-44: 💤 Low value

Checkver downloads entire installer for version detection.

The checkver script downloads the full iTunes installer (~300MB+) to extract the version number. While this is resource-intensive, it may be the only reliable method since Apple doesn't provide a lightweight version API endpoint. The implementation correctly caches the downloaded file for reuse.

🤖 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/itunes.json` around lines 34 - 44, The checkver currently always
downloads the entire iTunes installer via Invoke-WebRequest which is heavy;
modify the checkver script to first attempt a lightweight HEAD request to
$dl_url (Invoke-WebRequest -Method Head) and try to extract a version from
response headers (e.g., Content-Disposition or any version-related header), and
only if that fails fall back to the full download flow using the existing
Invoke-WebRequest download, $dl, Get-Item and Move-Item logic; ensure caching
behavior remains (only download when necessary) and that the Move-Item uses the
resolved $ver after a full download.
🤖 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.

Outside diff comments:
In `@bucket/itunes.json`:
- Around line 1-56: The manifest currently uses LF line endings; convert the
file to CRLF (Windows-style) line endings before merging so the scoop manifest
(itunes.json) complies with the Scoop Contribution Guide; edit the file in your
editor or run a line-ending conversion (or set Git core.eol to crlf) and re-save
the manifest (ensure preserved JSON keys like "version", "installer",
"checkver", and "autoupdate" remain unchanged) and recommit the updated file.
- Around line 1-56: The manifest needs local testing and formatting: run
.\bin\formatjson.ps1 -App itunes to lint the bucket/itunes.json, then enable
debug (scoop config debug true) and optionally set gh_token for API access;
force version detection using .\bin\checkver.ps1 -App itunes -f to validate the
checkver block (the $dl_url/cache_path logic and regex) and confirm $ver is
correct; test installation of both architectures (scoop install
bucket/itunes.json -a 64bit and then -a 32bit after uninstall) to validate the
installer script paths (iTunes64.msi / iTunes.msi, Expand-MsiArchive, Move-Item,
Remove-Item) and verify autoupdate URLs in the autoupdate block work as
expected; fix any issues found and re-run the checks before merging.

---

Nitpick comments:
In `@bucket/itunes.json`:
- Around line 34-44: The checkver currently always downloads the entire iTunes
installer via Invoke-WebRequest which is heavy; modify the checkver script to
first attempt a lightweight HEAD request to $dl_url (Invoke-WebRequest -Method
Head) and try to extract a version from response headers (e.g.,
Content-Disposition or any version-related header), and only if that fails fall
back to the full download flow using the existing Invoke-WebRequest download,
$dl, Get-Item and Move-Item logic; ensure caching behavior remains (only
download when necessary) and that the Move-Item uses the resolved $ver after a
full download.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 1ad69ecd-a5e1-4482-b45a-466efdf34a4b

📥 Commits

Reviewing files that changed from the base of the PR and between b3302a5 and 3287efe.

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

@arvdk

arvdk commented May 30, 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.

itunes

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

Check the full log for details.

arvdk added a commit to arvdk/Extras that referenced this pull request Jun 9, 2026
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.

(Request) add Itunes

1 participant