yt-downloader: Add version 0.2.1 - #18342
Conversation
📝 WalkthroughWalkthroughAdds a Scoop bucket manifest for YT Downloader version 0.2.1. The manifest includes package metadata, 64-bit and 32-bit installer URLs and hashes, quiet Estimated code review effort: 1 (Trivial) | ~2 minutes Suggested labels: 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
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. Comment |
There was a problem hiding this comment.
Actionable comments posted: 4
🧹 Nitpick comments (1)
bucket/yt-downloader.json (1)
1-28: 📐 Maintainability & Code Quality | 🔵 TrivialRun the required manifest checks before submission.
scoop config debug true scoop config gh_token <your-github-token> .\bin\checkver.ps1 -App yt-downloader -f .\bin\formatjson.ps1 -App yt-downloader scoop install bucket/yt-downloader.json -a 64bit scoop install bucket/yt-downloader.json -a 32bitAlso verify install, update, and uninstall behavior for both architectures.
https://github.com/ScoopInstaller/.github/blob/main/.github/CONTRIBUTING.md https://github.com/ScoopInstaller/Scoop/wiki/App-Manifests🤖 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/yt-downloader.json` around lines 1 - 28, Run the required manifest validation and formatting commands for yt-downloader, then install the manifest for both 64bit and 32bit architectures and verify install, update, and uninstall behavior for each. Resolve any checkver, formatting, or installation issues before submission.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/yt-downloader.json`:
- Around line 10-18: Add an uninstaller configuration to the manifest’s
installer definitions for both 64-bit and 32-bit packages, invoking msiexec with
the corresponding MSI product code or package identifier to remove the
application and registry entries. Keep the existing installer scripts unchanged
and ensure each architecture’s uninstaller targets its matching MSI.
- Around line 11-18: Update the package’s autoupdate configuration to use
architecture-specific URLs for 64bit and 32bit, substituting $version in both
the release path and MSI filename while preserving the x64/x86 variants. In both
architecture installer scripts, replace the hardcoded 0.2.1 MSI filename with
the package-manager-provided $fname variable.
- Around line 11-18: Update the 32bit installer script in the “installer”
configuration to invoke Start-Process with -PassThru, retain -Wait, and capture
the returned process before checking its ExitCode. Throw when the MSI exit code
is non-zero so installation failures propagate instead of being reported as
successful.
- Around line 3-5: Add the required package-request issue link to the manifest
metadata before merging, using the package-request URL specified by the
reviewer. Update the visible metadata near the description, homepage, and
license fields without changing the existing values.
---
Nitpick comments:
In `@bucket/yt-downloader.json`:
- Around line 1-28: Run the required manifest validation and formatting commands
for yt-downloader, then install the manifest for both 64bit and 32bit
architectures and verify install, update, and uninstall behavior for each.
Resolve any checkver, formatting, or installation issues before submission.
🪄 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: b4beb005-921d-417d-a0ac-600730f51795
📒 Files selected for processing (1)
bucket/yt-downloader.json
| "description": "YT Downloader - Téléchargement YouTube", | ||
| "homepage": "https://github.com/akaletekoffilevis/youtube-downloader", | ||
| "license": "MIT", |
There was a problem hiding this comment.
📐 Maintainability & Code Quality | 🟠 Major | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
set -euo pipefail
# Show the manifest with line numbers
if [ -f bucket/yt-downloader.json ]; then
cat -n bucket/yt-downloader.json
else
echo "bucket/yt-downloader.json not found"
fi
echo
echo "=== Repo files near manifest ==="
git ls-files 'bucket/*yt-downloader*' 'deprecated/*yt-downloader*' || true
echo
echo "=== Search for package-request links or issue references in the manifest ==="
rg -n '"description"|"homepage"|"license"|package-request|github.com/.*/issues/[0-9]+' bucket/yt-downloader.json || trueRepository: ScoopInstaller/Extras
Length of output: 1926
🏁 Script executed:
#!/bin/bash
set -euo pipefail
# Inspect whether the upstream project has a stable release / interface clues from repository metadata files
rg -n 'yt-downloader|youtube-downloader|English|release|pre-release|alpha|stars' -S . --glob '!**/.git/**' || trueRepository: ScoopInstaller/Extras
Length of output: 50378
🏁 Script executed:
#!/bin/bash
set -euo pipefail
cat -n bucket/yt-downloader.json | sed -n '1,200p'Repository: ScoopInstaller/Extras
Length of output: 1627
🌐 Web query:
site:github.com/akaletekoffilevis/youtube-downloader GitHub repository stars release English documentation
💡 Result:
I couldn’t verify a GitHub repo at akaletekoffilevis/youtube-downloader from the search results. The exact repository search returned no results, so I can’t reliably report its stars, releases, or English documentation. (gist.github.com)
If you want, I can help find the closest matching repo and compare its stars/releases/docs.
Citations:
- 1: https://gist.github.com/devinschumacher/7d1d8d644a765f3b854e544de4bb2d0d?utm_source=openai
Add a package-request issue link before merging. No package-request issue is linked here. New Scoop packages must include a request issue and meet the package-request criteria; use https://github.com/ScoopInstaller/Extras/issues/new?labels=package-request&template=package-request.yml&title=%5BRequest%5D%3A+ and see the contribution guide/wiki: https://github.com/ScoopInstaller/.github/blob/main/.github/CONTRIBUTING.md, https://github.com/ScoopInstaller/Scoop/wiki/App-Manifests.
🤖 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/yt-downloader.json` around lines 3 - 5, Add the required
package-request issue link to the manifest metadata before merging, using the
package-request URL specified by the reviewer. Update the visible metadata near
the description, homepage, and license fields without changing the existing
values.
Source: Path instructions
| "installer": { | ||
| "script": "Start-Process msiexec -ArgumentList '/i', \"$dir\\YouTube.Downloader_0.2.1_x64_en-US.msi\", '/qn' -Wait" | ||
| } | ||
| }, | ||
| "32bit": { | ||
| "url": "https://github.com/akaletekoffilevis/youtube-downloader/releases/download/v0.2.1/YouTube.Downloader_0.2.1_x86_en-US.msi", | ||
| "hash": "7643cc71414f03b338c9a6b3e5a0840a3e9907891390a3b19d52f8a7c64bfe80", | ||
| "installer": { | ||
| "script": "Start-Process msiexec -ArgumentList '/i', \"$dir\\YouTube.Downloader_0.2.1_x86_en-US.msi\", '/qn' -Wait" |
There was a problem hiding this comment.
🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
set -euo pipefail
git ls-files bucket/yt-downloader.json
echo "----"
ast-grep outline bucket/yt-downloader.json
echo "----"
cat -n bucket/yt-downloader.json | sed -n '1,220p'Repository: ScoopInstaller/Extras
Length of output: 1703
Add an MSI uninstaller in bucket/yt-downloader.json:10-18. scoop uninstall won’t remove the installed MSI app or its registry entries unless this manifest defines uninstaller (for example, an msiexec /x call using the product code). Scoop supports this field in app manifests. https://github.com/ScoopInstaller/Scoop/wiki/App-Manifests
🤖 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/yt-downloader.json` around lines 10 - 18, Add an uninstaller
configuration to the manifest’s installer definitions for both 64-bit and 32-bit
packages, invoking msiexec with the corresponding MSI product code or package
identifier to remove the application and registry entries. Keep the existing
installer scripts unchanged and ensure each architecture’s uninstaller targets
its matching MSI.
| "script": "Start-Process msiexec -ArgumentList '/i', \"$dir\\YouTube.Downloader_0.2.1_x64_en-US.msi\", '/qn' -Wait" | ||
| } | ||
| }, | ||
| "32bit": { | ||
| "url": "https://github.com/akaletekoffilevis/youtube-downloader/releases/download/v0.2.1/YouTube.Downloader_0.2.1_x86_en-US.msi", | ||
| "hash": "7643cc71414f03b338c9a6b3e5a0840a3e9907891390a3b19d52f8a7c64bfe80", | ||
| "installer": { | ||
| "script": "Start-Process msiexec -ArgumentList '/i', \"$dir\\YouTube.Downloader_0.2.1_x86_en-US.msi\", '/qn' -Wait" |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟠 Major | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
set -euo pipefail
wc -l bucket/yt-downloader.json
cat -n bucket/yt-downloader.json | sed -n '1,120p'Repository: ScoopInstaller/Extras
Length of output: 1656
🌐 Web query:
Scoop manifest autoupdate architecture-specific url $fname installer script MSI
💡 Result:
In Scoop, managing architecture-specific URLs and installers—including MSI files—within the autoupdate system is handled by nesting configurations under the autoupdate property [1]. Architecture-Specific Autoupdate Configuration To support multiple architectures (e.g., 64bit, 32bit, arm64) during an autoupdate, you define an architecture property within the autoupdate object in your manifest [1]. This allows the autoupdate system to substitute version variables separately for each architecture [2][1]. Example structure: "autoupdate": { "architecture": { "64bit": { "url": "https://example.org/app-v$version-x64.msi" }, "32bit": { "url": "https://example.org/app-v$version-x86.msi" } } } Installer Scripts and MSI Handling The msi property in Scoop manifests is deprecated; the recommended approach is to treat.msi files like other archives (e.g.,.zip) by letting Scoop extract them, or by using a custom installer script if full installation is required [3][4]. If you must use an installer script for an MSI or executable, use the installer.script property [3]. You can define this per architecture within your manifest [3][1]. Variables available in installer scripts include: - $fname: The filename of the last downloaded file [3]. - $dir: The installation directory [3]. - $architecture: The current architecture (e.g., 64bit, 32bit) [3]. - $version: The application version [5]. Example of an architecture-specific installer script: "architecture": { "64bit": { "installer": { "script": [ "Start-Process "$dir\$fname" -ArgumentList '/quiet', '/norestart' -Wait" ] } } } When using autoupdate, ensure your checkver property is configured to detect the latest version, which triggers the substitution of $version and other variables throughout your manifest, including within the architecture-specific URLs and installer paths [1][6].
Citations:
- 1: https://github.com/ScoopInstaller/Scoop/wiki/App-Manifest-Autoupdate
- 2: https://github.com/ScoopInstaller/Scoop/blob/b588a06e/lib/autoupdate.ps1
- 3: https://github.com/ScoopInstaller/Scoop/wiki/App-Manifests
- 4: installing a x32 .msi from local directory [Bug] Scoop#5812
- 5: https://github.com/ScoopInstaller/Scoop/blob/b588a06e/lib/install.ps1
- 6: https://deepwiki.com/ScoopInstaller/Scoop/4-manifest-system
🏁 Script executed:
#!/bin/bash
set -euo pipefail
rg -n '"autoupdate"|"\$fname"|architecture"' bucket -g '*.json' | sed -n '1,240p'Repository: ScoopInstaller/Extras
Length of output: 11828
Make autoupdate architecture-aware and remove versioned MSI names
autoupdate.url only targets the x64 MSI, so 32-bit updates will download the wrong file. The installer scripts also hardcode 0.2.1, so they’ll break on the next release unless they use $fname.
Suggested shape
"autoupdate": {
"architecture": {
"64bit": {
"url": "https://github.com/akaletekoffilevis/youtube-downloader/releases/download/v$version/YouTube.Downloader_$version_x64_en-US.msi"
},
"32bit": {
"url": "https://github.com/akaletekoffilevis/youtube-downloader/releases/download/v$version/YouTube.Downloader_$version_x86_en-US.msi"
}
}
}🤖 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/yt-downloader.json` around lines 11 - 18, Update the package’s
autoupdate configuration to use architecture-specific URLs for 64bit and 32bit,
substituting $version in both the release path and MSI filename while preserving
the x64/x86 variants. In both architecture installer scripts, replace the
hardcoded 0.2.1 MSI filename with the package-manager-provided $fname variable.
🩺 Stability & Availability | 🟠 Major | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
set -euo pipefail
# Inspect the manifest and find similar installer scripts in the repo.
git ls-files bucket/yt-downloader.json
echo '---'
cat -n bucket/yt-downloader.json
echo '--- similar installer scripts ---'
rg -n 'Start-Process msiexec|installer":\s*\{' bucket -g '*.json' -A 3 -B 2Repository: ScoopInstaller/Extras
Length of output: 50378
🌐 Web query:
PowerShell Start-Process -Wait does not throw on non-zero exit code PassThru ExitCode documentation
💡 Result:
By design, the Start-Process cmdlet in PowerShell does not throw an exception or generate an error record when a started process terminates with a non-zero exit code [1][2][3]. It treats the completion of the process execution as a successful operation, regardless of the exit code returned by the process itself [1]. To handle non-zero exit codes when using Start-Process, you must manually inspect the process status [1][4]. When using the -PassThru parameter, Start-Process returns a System.Diagnostics.Process object [4][5]. You can check this object's ExitCode property after ensuring the process has finished (typically by using the -Wait parameter or calling the WaitForExit method) [5][6][7]. Example of manual checking: $process = Start-Process -FilePath "your_executable.exe" -PassThru -Wait if (
Citations:
- 1: https://forums.powershell.org/t/start-process-error-handling/3803
- 2: https://www.reddit.com/r/PowerShell/comments/1luzt11/just_nailed_a_tricky_powershellintune_deployment/
- 3: https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_error_handling?view=powershell-7.6
- 4: New Rule: Calling Start-Process without checking ExitCode PowerShell/PSScriptAnalyzer#1062
- 5: https://learn.microsoft.com/en-us/dotnet/api/system.diagnostics.process.exitcode?view=net-10.0
- 6: https://stackoverflow.com/questions/39554132/how-to-write-process-start-and-get-the-exitcode-in-one-line
- 7: Start-Process does not populate the process object's exit code with NoNewWindow switch PowerShell/PowerShell#20400
- 8: Native Command Error Handling PowerShell/PowerShell-RFC#277
- 9: $PSNativeCommandUseErrorActionPreference does not work when error stream is discarded PowerShell/PowerShell#27543
Propagate MSI exit codes in the installer script. Start-Process -Wait will not raise on a non-zero msiexec exit code, so a failed install can still be reported as successful. Use -PassThru and throw when .ExitCode is non-zero.
🤖 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/yt-downloader.json` around lines 11 - 18, Update the 32bit installer
script in the “installer” configuration to invoke Start-Process with -PassThru,
retain -Wait, and capture the returned process before checking its ExitCode.
Throw when the MSI exit code is non-zero so installation failures propagate
instead of being reported as successful.
|
The project looks quite new and doesn't fit criteria for Extras bucket, at least in terms
Guess you could try to contribute to any community bucket or create your own instead, or come back at a later time when the Extras bucket requirements will be met (it's more preferable to open package request first). Closing this for now. |
<manifest-name[@version]|chore>: <general summary of the pull request>