/winget-pkgs-automation

This project programmatically updates manifests of winget packages when the package has an update available.

Primary LanguagePowerShellMIT LicenseMIT

WinGet Manifests Auto-Updater

All Contributors

This project programmatically updates manifests of winget packages when the package has an update available.

You can see a list of PackageIdentifiers for packages currently auto-updated by this project in packages.txt (alphanumerically sorted).

Status

Automation Check Download Urls

How to add a package to the automation?

It's pretty simple.

  1. Use this link or head over to issues tab and click new issue. Make sure you select the "New Package" issue template.

  2. Fill in the details of the package. If known, please mention some details of an API/Source/etc. which can be used to fetch the latest version of the package.

  3. Submit the issue and wait for the package to be added to the automation.

How does this work?

Running automatically on GitHub workflows, this repo has two main components that keep winget packages up-to-date:

  1. PowerShell scripts: To update manifests of packages in the Windows Package Manager Community Repository, these scripts are executed by a cron job in every 8 hours.

    • The automation.ps1 script imports the JSON files and check if a new update is available for the package.
    • If yes, it calls YamlCreate.ps1 to update the manifest for the given package, and
    • Submits a pull request on the winget-pkgs repository.
  2. JSON files: Structured data containing the following vital information about each tracked package:

Key Description
pkgid PackageIdentifier of the package in the winget-pkgs repository
repo_uri URI of any API/Source/etc. or GitHub repository of the package in the form of owner/repo
last_checked_tag Version/Release ID of the last release of the package
asset_regex Regular expression to match the asset name of the package
is_prerelease Whether the package is a prerelease or not
version_method Method to get the version of the package, if the package doesn't follow semantic versioning
use_package_script If package uses a separate script for checking updates, then it is true
skip If the package has not been updated for a long time, it can be skipped instead of removing the JSON file (useful when keeping a record of skipped packages)
yamlcreate_autoupgrade If the package can be auto-updated using YamlCreate.ps1's AutoUpgrade feature, then it is true
check_existing_pr If the automation should check if there is an existing pull request for the update of the package, then it is true
previous_timestamp Timestamp when the package was last updated by the workflow
check_interval Custom check interval if the package is less frequently updated

Contributors 🎉

See CONTRIBUTING.md for more details.

Thanks goes to these wonderful people (emoji key):


All Contributors

📖

CodeDoctor

🤔

Esco

🤔

Jérémie Bertrand

🤔

Kaleb Luedtke

🐛 💻 🤔

Karan09

🤔

Mavaddat Javid

📖 🤔

SpecterShell

🤔

TaylorShi

🤔

Theophile Trunck

🐛

Vedant

🐛 💻 🤔 👀

hmmwhatsthisdo

🤔

This project follows the all-contributors specification. Contributions of any kind welcome!