diff options
author | zaverden <zaverden@yandex-team.com> | 2023-09-20 13:35:35 +0300 |
---|---|---|
committer | zaverden <zaverden@yandex-team.com> | 2023-09-20 14:36:34 +0300 |
commit | f532407f20a4453b989a50dc33449c80ed0b1cd9 (patch) | |
tree | 0143dd59f13475a0a90dfa056e543ffbec052a02 /build/scripts | |
parent | f8e834958e9c011b74b0ec4a741b0b2eb82cf60d (diff) | |
download | ydb-f532407f20a4453b989a50dc33449c80ed0b1cd9.tar.gz |
feat(FROM_NPM): load packages by tarball url
Раньше FROM_NPM строил урл для скачивания по имени пакета. Изменил это на использование поля tarball, потому что это требуется для интеграции с `@yatool/prebuilder`
Diffstat (limited to 'build/scripts')
-rw-r--r-- | build/scripts/fetch_from_npm.py | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/build/scripts/fetch_from_npm.py b/build/scripts/fetch_from_npm.py index 3f87c1fefa8..e1db347841e 100644 --- a/build/scripts/fetch_from_npm.py +++ b/build/scripts/fetch_from_npm.py @@ -9,15 +9,14 @@ import sky import fetch_from -NPM_BASEURL = "http://npm.yandex-team.ru/" +NPM_BASEURL = "http://npm.yandex-team.ru" def parse_args(): parser = argparse.ArgumentParser() fetch_from.add_common_arguments(parser) - parser.add_argument("--name", required=True) - parser.add_argument("--version", required=True) + parser.add_argument("--tarball-url", required=True) parser.add_argument("--sky-id", required=True) parser.add_argument("--integrity", required=True) parser.add_argument("--integrity-algorithm", required=True) @@ -25,7 +24,7 @@ def parse_args(): return parser.parse_args() -def fetch(name, version, sky_id, integrity, integrity_algorithm, file_name, tries=5): +def fetch(tarball_url, sky_id, integrity, integrity_algorithm, file_name, tries=5): """ :param name: package name :type name: str @@ -50,7 +49,7 @@ def fetch(name, version, sky_id, integrity, integrity_algorithm, file_name, trie if 'NOTS_FETCH_FROM_SKY' in os.environ and sky.is_avaliable(): fetcher = lambda: sky.fetch(sky_id, file_name) else: - fetcher = lambda: _fetch_via_http(name, version, integrity, integrity_algorithm, file_name) + fetcher = lambda: _fetch_via_http(tarball_url, integrity, integrity_algorithm, file_name) fetched_file = None exc_info = None @@ -71,9 +70,10 @@ def fetch(name, version, sky_id, integrity, integrity_algorithm, file_name, trie return fetched_file -def _fetch_via_http(name, version, integrity, integrity_algorithm, file_name): - # Example: "http://npm.yandex-team.ru/@scope/name/-/name-0.0.1.tgz" for @scope/name v0.0.1. - url = NPM_BASEURL + "/".join([name, "-", "{}-{}.tgz".format(name.split("/").pop(), version)]) +def _fetch_via_http(tarball_url, integrity, integrity_algorithm, file_name): + is_abs_url = tarball_url.startswith("https://") or tarball_url.startswith("http://") + url_delim = "" if tarball_url.startswith("/") else "/" + url = tarball_url if is_abs_url else NPM_BASEURL + url_delim + tarball_url hashobj = hashlib.new(integrity_algorithm) fetched_file = fetch_from.fetch_url(url, False, file_name, tries=1, writers=[hashobj.update]) @@ -90,7 +90,7 @@ def _fetch_via_http(name, version, integrity, integrity_algorithm, file_name): def main(args): file_name = os.path.basename(args.copy_to) - fetched_file = fetch(args.name, args.version, args.sky_id, args.integrity, args.integrity_algorithm, file_name) + fetched_file = fetch(args.tarball_url, args.sky_id, args.integrity, args.integrity_algorithm, file_name) fetch_from.process(fetched_file, file_name, args) |