diff --git a/npm/private/utils.bzl b/npm/private/utils.bzl index 211df428a..87c06c2ce 100644 --- a/npm/private/utils.bzl +++ b/npm/private/utils.bzl @@ -134,6 +134,41 @@ def _convert_v5_importers(importers): ) return result +def _convert_v5_v6_file_package(package_path, package_snapshot): + if "name" not in package_snapshot: + msg = "expected package {} to have a name field".format(package_path) + fail(msg) + + name = package_snapshot["name"] + version = package_path + if _is_vendored_tarfile(package_snapshot): + package = package_snapshot["name"] + if "version" in package_snapshot: + version = package_snapshot["version"] + package_key = "{}@{}".format(package, version) + friendly_version = version + else: + package = package_path + friendly_version = package_snapshot["version"] if "version" in package_snapshot else version + package_key = package + + return package_key, package, name, version, friendly_version + +def _convert_v5_v6_default_package(package_path, package_snapshot): + package = package_path + if "name" not in package_snapshot: + msg = "expected package {} to have a name field".format(package_path) + fail(msg) + if "version" not in package_snapshot: + msg = "expected package {} to have a version field".format(package_path) + fail(msg) + name = package_snapshot["name"] + version = package_path + friendly_version = package_snapshot["version"] + package_key = package + + return package_key, package, name, version, friendly_version + def _convert_v5_packages(packages): result = {} for package_path, package_snapshot in packages.items(): @@ -148,34 +183,10 @@ def _convert_v5_packages(packages): friendly_version = version package_key = "{}@{}".format(name, version) elif package_path.startswith("file:"): - if "name" not in package_snapshot: - msg = "expected package {} to have a name field".format(package_path) - fail(msg) - - name = package_snapshot["name"] - version = package_path - if _is_vendored_tarfile(package_snapshot): - package = package_snapshot["name"] - if "version" in package_snapshot: - version = package_snapshot["version"] - package_key = "{}@{}".format(package, version) - friendly_version = version - else: - package = package_path - friendly_version = package_snapshot["version"] if "version" in package_snapshot else version - package_key = package + # direct reference to file + package_key, package, name, version, friendly_version = _convert_v5_v6_file_package(package_path, package_snapshot) else: - package = package_path - if "name" not in package_snapshot: - msg = "expected package {} to have a name field".format(package_path) - fail(msg) - if "version" not in package_snapshot: - msg = "expected package {} to have a version field".format(package_path) - fail(msg) - name = package_snapshot["name"] - version = package_path - friendly_version = package_snapshot["version"] - package_key = package + package_key, package, name, version, friendly_version = _convert_v5_v6_default_package(package_path, package_snapshot) result[package_key] = _new_package_info( id = package_snapshot["id"] if "id" in package_snapshot else None, @@ -288,34 +299,10 @@ def _convert_v6_packages(packages): friendly_version = version package_key = "{}@{}".format(name, version) elif package_path.startswith("file:"): - if "name" not in package_snapshot: - msg = "expected package {} to have a name field".format(package_path) - fail(msg) - - name = package_snapshot["name"] - version = package_path - if _is_vendored_tarfile(package_snapshot): - package = package_snapshot["name"] - if "version" in package_snapshot: - version = package_snapshot["version"] - package_key = "{}@{}".format(package, version) - friendly_version = version - else: - package = package_path - friendly_version = package_snapshot["version"] if "version" in package_snapshot else version - package_key = package + # direct reference to file + package_key, package, name, version, friendly_version = _convert_v5_v6_file_package(package_path, package_snapshot) else: - package = package_path - if "name" not in package_snapshot: - msg = "expected package {} to have a name field".format(package_path) - fail(msg) - if "version" not in package_snapshot: - msg = "expected package {} to have a version field".format(package_path) - fail(msg) - name = package_snapshot["name"] - version = package_path - friendly_version = package_snapshot["version"] - package_key = package + package_key, package, name, version, friendly_version = _convert_v5_v6_default_package(package_path, package_snapshot) result[package_key] = _new_package_info( id = package_snapshot["id"] if "id" in package_snapshot else None,