nixpkgs/pkgs/by-name/mi/microsoft-edge/update.py
2024-10-21 21:51:42 +13:00

45 lines
1.5 KiB
Python
Executable File

#! /usr/bin/env nix-shell
#! nix-shell -i python3 -p python3Packages.packaging python3Packages.debian common-updater-scripts
import base64
import textwrap
import os
from urllib import request
from collections import OrderedDict
from debian.deb822 import Packages
from debian.debian_support import Version
from os.path import abspath, dirname
PIN_PATH = dirname(abspath(__file__)) + '/default.nix'
def packages():
packages_url = 'https://packages.microsoft.com/repos/edge/dists/stable/main/binary-amd64/Packages'
handle = request.urlopen(packages_url)
return handle
def latest_packages(packages: bytes):
latest_packages: OrderedDict[str, Packages] = {}
for package in Packages.iter_paragraphs(packages, use_apt_pkg=False):
name: str = package['Package']
if not name.startswith('microsoft-edge-stable'):
continue
channel = name.replace('microsoft-edge-', '')
if channel not in latest_packages:
latest_packages[channel] = package
else:
old_package = latest_packages[channel]
if old_package.get_version() < package.get_version(): # type: ignore
latest_packages[channel] = package
return OrderedDict(sorted(latest_packages.items(), key=lambda x:x[0]))
def write_expression():
latest = latest_packages(packages())
version = Version.re_valid_version.match(latest['stable']['Version']).group('upstream_version')
os.system(f'update-source-version microsoft-edge "{version}"')
write_expression()