Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

Quelle  fetch_github_release.py

  Sprache: Python
 

# Copyright 2023 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 hashlib
import json
import os
import pathlib
import re
import urllib.request


def _fetch_json(url):
    return json.load(urllib.request.urlopen(url))


def _latest(api_url, install_scripts=None):
    # Make the version change every time this file changes.
    md5 = hashlib.md5()
    md5.update(pathlib.Path(__file__).read_bytes())
    import __main__
    md5.update(pathlib.Path(__main__.__file__).read_bytes())

    if install_scripts:
        for path in install_scripts:
            md5.update(pathlib.Path(path).read_bytes())
    file_hash = md5.hexdigest()[:10]

    release = _fetch_json(f'{api_url}/releases/latest')['tag_name']
    print('{}.{}'.format(release, file_hash))


def _get_url(api_url,
             artifact_filename=None,
             artifact_extension=None,
             artifact_regex=None):
    # Split off our md5 hash.
    version = os.environ['_3PP_VERSION'].rsplit('.'1)[0]
    json_dict = _fetch_json(f'{api_url}/releases/tags/{version}')
    urls = [x['browser_download_url'for x in json_dict['assets']]

    if artifact_regex:
        urls = [x for x in urls if re.search(artifact_regex, x)]

    if len(urls) != 1:
        raise Exception('len(urls) != 1: \n' + '\n'.join(urls))

    partial_manifest = {
        'url': urls,
        'ext': artifact_extension or '',
    }
    if artifact_filename:
        partial_manifest['name'] = [artifact_filename]

    print(json.dumps(partial_manifest))


def main(*,
         project,
         artifact_filename=None,
         artifact_extension=None,
         artifact_regex=None,
         install_scripts=None,
         extract_extension=None):
    """The fetch.py script for a 3pp module.

    Args:
      project: GitHub username for the repo. e.g. "google/protobuf".
      artifact_filename: The name for the downloaded file. Required when not
          setting "unpack_archive: true" in 3pp.pb.
      artifact_extension: File extension of file being downloaded. Required when
          setting "unpack_archive: true" in 3pp.pb.
      artifact_regex: A regex to use to identify the desired artifact from the
          list of artifacts on the release.
      install_scripts: List of script to add to the md5 of the version. The main
          module and this module are always included.
    """
    parser = argparse.ArgumentParser()
    parser.add_argument('action', choices=('latest''get_url'))
    args = parser.parse_args()

    api_url = f'https://api.github.com/repos/{project}'
    if args.action == 'latest':
        _latest(api_url, install_scripts=install_scripts)
    else:
        _get_url(api_url,
                 artifact_filename=artifact_filename,
                 artifact_extension=artifact_extension,
                 artifact_regex=artifact_regex)


if __name__ == '__main__':
    main()

Messung V0.5 in Prozent
C=91 H=83 G=86

¤ Dauer der Verarbeitung: 0.11 Sekunden  (vorverarbeitet am  2026-08-28) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Open Source Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Statistik
#Sources=476070
#Domains=661743