/Komac

The Kotlin Manifest Creator for WinGet

Primary LanguageKotlinGNU General Public License v3.0GPL-3.0

Komac logo Komac - 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.

Installation

Komac is cross-platform and runs on Windows, Linux and macOS. A cross-platform JAR is available from the releases.

Windows

Windows EXEs are available from the releases.

WinGet

winget install komac

Scoop

scoop install komac

Linux & macOS

It is recommended to use the cross-platform JAR for Linux and macOS. Installers are although available for these platforms but there's no guarantee on their working state. The JAR can be used with the following command:

java -jar komac.jar

Commands

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

Update an existing package with a new version

# Without user interaction
komac update --id Package.Identifier --version 1.2.3 --urls https://www.firstUrl.com,https://www.secondUrl.com --submit

# With user interaction
komac update
Parameter Usage Notes
Package Identifier --id
Version --version
URLs --urls URLs are delimited by a comma (,)
Automatically submit --submit
Token (if one is not already stored) --token Komac will check for a GITHUB_TOKEN environment variable

Komac in Action 🎥

Komac-demo

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 comes 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 Limited - Trenly/winget-pkgs#180
Get information from GitHub
Formatted GitHub release notes retrieval
Release date identification
Webpage metadata scraping
Fully standalone (w/o winget-pkgs clone)
No telemetry
Type-safety
Inno setup detection 2
Nullsoft detection 2
Burn installer detection Opt-in feature 2 (not enabled by default, due to slow processing)
Progress bar & ETA while downloading
Language Kotlin/JVM C# PowerShell

How can I support Komac? ❤️

Powering GitHub Actions: WinGet Releaser 🌟

I'm happy to say that WinGet Releaser is powered by Komac, due to its advanced detection capabilities and ability to work cross-platform. The action is available on the GitHub Marketplace.

It can be used in CI/CD workflows to automatically create & publish WinGet manifests for your releases. Just make sure to add first version of your manifest manually, and the action will take care of the future versions. More information to set it up can be found on the action's repository here.

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. The logic for this was contributed by me :) Check issues that I've opened to request this feature for YamlCreate. 2 3