microsoft / microsoft/winget-cli

More package information in Exported JSON file

Open
#2,030 6 comments 2 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Command-Export Issue-Feature
Dominant language
C++
Stars
26.4k
Forks
1.8k
Avg merge
1d 11h
Merged PRs (30d)
15

Description

Description of the new feature / enhancement

It would be helpful if the "winget export" command would include a verbose option to include the full package information, rather than just the PackageIdentifier (and version if --include-versions is used).

For example for Windows Terminal the exported JSON includes only PackageIdentifier and optionally the current installed Version:
"PackageIdentifier" : "Microsoft.WindowsTerminal",
"Version" : "1.11.3471.0"

Winget can produce more information from other commands. e.g. "winget list" adds the Name and Source
Windows Terminal Microsoft.WindowsTerminal 1.11.3471.0 winget

Searching winget list for a single package adds the Available version.

winget list --id Microsoft.WindowsTerminal
Name             Id                        Version     Available    Source
--------------------------------------------------------------------------
Windows Terminal Microsoft.WindowsTerminal 1.11.3471.0 1.12.10393.0 winget

and Winget show has a lot more information:

winget show --id Microsoft.WindowsTerminal
Found Windows Terminal [Microsoft.WindowsTerminal]
Version: 1.12.10393.0
Publisher: Microsoft
Publisher Url: https://www.microsoft.com/
Moniker: terminal
Description: The new Windows Terminal, a tabbed command line experience for Windows.
Homepage: https://docs.microsoft.com/windows/terminal/
License: MIT
License Url: https://github.com/microsoft/terminal/blob/master/LICENSE
Privacy Url: https://privacy.microsoft.com/
Installer:
  Type: msix
  Download Url: https://github.com/microsoft/terminal/releases/download/v1.12.10393.0/Microsoft.WindowsTerminal_1.12.10393.0_8wekyb3d8bbwe.msixbundle
  SHA256: 23daf0b5a5783d07322b9fee3eef98d45b8d11d4d77f9dbd75a0eb13069592f1

Why can't all of that information be included in the exported JSON file?

Proposed technical implementation details

The "winget export" should have a new flag such as --detailed or --verbose that includes all the available information for each package.
For example the Windows Terminal section of the JSON file would look like:

      {
         "PackageIdentifier": "Microsoft.WindowsTerminal",
         "InstalledVersion": "1.11.3471.0",
         "AvailableVersion": "1.12.10393.0",
         "Publisher": "Microsoft",
         "PublisherUrl": "https://www.microsoft.com/",
         "Moniker": "terminal",
         "Description": "The new Windows Terminal, a tabbed command line experience for Windows.",
         "Homepage": "https://docs.microsoft.com/windows/terminal/",
         "License": "MIT",
         "LicenseUrl": "https://github.com/microsoft/terminal/blob/master/LICENSE",
         "PrivacyUrl": "https://privacy.microsoft.com/",
         "InstallerType": "msix",
         "InstallerDownloadUrl": "https://github.com/microsoft/terminal/releases/download/v1.12.10393.0/Microsoft.WindowsTerminal_1.12.10393.0_8wekyb3d8bbwe.msixbundle",
         "InstallerSHA256": "23daf0b5a5783d07322b9fee3eef98d45b8d11d4d77f9dbd75a0eb13069592f1"
       },

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the winget export command and compare its current JSON output with the metadata exposed by winget list and winget show. Determine the scope of a detailed or verbose flag and verify that exported package records include the requested installed and available versions and metadata. The payload names no source files or tests.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
cli
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.