#!/usr/bin/env python3
# Copyright 2026 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import argparse
import json
import os
import urllib.request

PACKAGE_NAME = "Microsoft.Web.WebView2"

def get_latest_stable_version():
    url = (f"https://api.nuget.org/v3-flatcontainer/"
           f"{PACKAGE_NAME.lower()}/index.json")
    with urllib.request.urlopen(url) as response:
        data = json.loads(response.read().decode())
        versions = data['versions']

        # Filter out any pre-release versions.
        stable_versions = [v for v in versions if '-' not in v]

        if not stable_versions:
            raise Exception("No stable versions found for " + PACKAGE_NAME)

        return stable_versions[-1]

def get_download_url(version):
    download_url = (f"https://www.nuget.org/api/v2/package/"
                    f"{PACKAGE_NAME}/{version}")

    partial_manifest = {
        'url': [download_url],
        'ext': '.zip',
    }
    print(json.dumps(partial_manifest))

def main():
    ap = argparse.ArgumentParser()
    sub = ap.add_subparsers()

    latest = sub.add_parser("latest")
    latest.set_defaults(func=lambda _opts: print(get_latest_stable_version()))

    download = sub.add_parser("get_url")
    download.set_defaults(
        func=lambda _opts: get_download_url(os.environ['_3PP_VERSION']))

    opts = ap.parse_args()
    opts.func(opts)

if __name__ == '__main__':
    main()
