russellbanks / Komac

The Community Manifest Creator for WinGet

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Komac logoKomac - Another WinGet Manifest Creator Komac banner

GitHub release (release name instead of tag name) GitHub Repo stars Issues License

Komac is an advanced CLI designed to create manifests for the WinGet Community Repository.

Komac is both blazingly fast πŸ”₯ and incredibly low on memory, using just ~3.5MB of memory on my machine.

Komac-demo

Installation

Komac is cross-platform and binaries are built for Windows, Linux, and macOS.

Windows

Both portable EXEs and installers are available from the releases.

WinGet

winget install komac

Scoop

scoop install komac

Linux

Portable binaries are available from the releases. Debian installers (.deb) are also available.

macOS

Portable binaries for macOS are available from the releases.

Homebrew

brew install russellbanks/tap/komac

GitHub Token

Komac is currently only able to use a classic token. Whilst Komac can fully create manifests and commit with a fine-grained token, it fails to create a pull request to winget-pkgs. This may change as fine-grained tokens improve. See #310.

Classic

A classic token with the public_repo scope.

firefox_IYiqtsd0Nl

Commands

Command Description Usage
New Create a package from scratch new
Update Update a pre-existing package in winget-pkgs update
Remove Remove a version from winget-pkgs remove
Branch Cleanup Deletes branches that have had a merged or closed pull request to winget-pkgs cleanup
Token update Update stored GitHub OAuth token token update
Token remove Delete stored GitHub OAuth token token remove

Update an existing package with a new version

komac update -i Package.Identifier -v 1.2.3 --urls https://www.firstUrl.com https://www.secondUrl.com --submit
Parameter Usage Notes
Package Identifier --identifier
Version --version
URLs --urls URLs are delimited by a space
Automatically submit --submit
Token (if one is not already stored) --token Komac will check for a GITHUB_TOKEN environment variable

Komac vs other tools πŸ†

While other manifest creation tools have made remarkable strides in the winget-pkgs community, their development pace is notably slow and lacks the advanced detection capabilities that come with Komac.

Komac WingetCreate YamlCreate
Parameters βœ… βœ… ❌
Works without Git βœ… βœ… ❌
Optimised manifest ordering 1 βœ… βœ…οΈ βœ…
Fully cross-platform βœ… ❌ Limited
Full MSI value retrieval βœ… Partial Partial
Linux & macOS MSI support βœ… ❌ ❌
Full MSIX value retrieval βœ… Partial Partial - Trenly/winget-pkgs#180
Get information from GitHub βœ… ❌ ❌
Formatted GitHub release notes retrieval βœ… ❌ ❌
Release date identification βœ… ❌ ❌
No telemetry βœ… β­• 2 βœ…
Fully standalone (w/o winget-pkgs clone) βœ… βœ… ❌
Type-safety βœ… βœ… ❌
Inno setup detection βœ… 3 βœ… βœ… 4
Nullsoft detection βœ… 3 βœ… βœ… 4
Burn installer detection βœ… 3 βœ… Opt-in feature (not enabled by default due to slow processing)
Progress bar & ETA while downloading βœ… ❌ ❌
Programming Language Rust C# PowerShell

Usage with GitHub Actions: WinGet Releaser 🌟

WinGet Releaser is a GitHub Action that invokes Komac, passing in your release's URLs. This completely automates publishing to WinGet.

Example πŸ“

name: Publish to WinGet
on:
  release:
    types: [released]
jobs:
  publish:
    runs-on: windows-latest
    steps:
      - uses: vedantmgoyal2009/winget-releaser@v2
        with:
          identifier: Package.Identifier
          token: ${{ secrets.WINGET_TOKEN }}
          # installers-regex: '\.exe$' # Only .exe files

Alternative actions πŸ”„

How can I support Komac? ❀️

  • 🀝 Sponsor this project through GitHub Sponsors
  • ⭐ Star this project! :)
  • πŸ§‘β€πŸ’» Use Komac and create an issue for feature requests or bugs.

Star History ⭐

Star History Chart

License

GNU GPLv3 Logo

Komac is Free Software: You can use, study share and improve it at your will. Specifically you can redistribute and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

Footnotes

  1. If all installers have the same value, that value is put at the root of the manifest to reduce redundancy. ↩

  2. Telemetry is enabled by default in WingetCreate. Use wingetcreate settings to manually disable telemetry. ↩

  3. There is much more accurate detection for Inno, Nullsoft, and Burn installers since Komac v2. ↩ ↩2 ↩3

  4. The logic for this was contributed by me :) Check issues that I've opened to request this feature for YamlCreate. ↩ ↩2

About

The Community Manifest Creator for WinGet

License:GNU General Public License v3.0


Languages

Language:Rust 86.3%Language:Inno Setup 13.7%