|
16 | 16 | import logging
|
17 | 17 | import os
|
18 | 18 | import sys
|
19 |
| -from json import load, loads, dump, JSONDecodeError |
| 19 | +from json import load, loads, dump, JSONDecodeError, JSONEncoder |
20 | 20 | import tarfile
|
21 | 21 | from tempfile import mkdtemp
|
22 | 22 | from typing import List, Set, Tuple
|
|
32 | 32 | from charon.pkgs.pkg_utils import upload_post_process, rollback_post_process
|
33 | 33 | from charon.utils.strings import remove_prefix
|
34 | 34 | from charon.utils.files import write_manifest
|
35 |
| -from charon.utils.map import del_none |
| 35 | +from charon.utils.map import del_none, replace_field |
36 | 36 |
|
37 | 37 | logger = logging.getLogger(__name__)
|
38 | 38 |
|
@@ -61,10 +61,15 @@ def __init__(self, metadata, is_version):
|
61 | 61 | self.dist_tags = {'latest': metadata.get('version')}
|
62 | 62 | self.versions = {metadata.get('version'): metadata}
|
63 | 63 | else:
|
64 |
| - self.dist_tags = metadata.get('dist_tags', None) |
| 64 | + self.dist_tags = metadata.get('dist-tags', None) |
65 | 65 | self.versions = metadata.get('versions', None)
|
66 | 66 |
|
67 | 67 |
|
| 68 | +class NPMPackageMetadataEncoder(JSONEncoder): |
| 69 | + def default(self, o): |
| 70 | + return replace_field(del_none(o.__dict__.copy()), "dist_tags", "dist-tags") |
| 71 | + |
| 72 | + |
68 | 73 | def handle_npm_uploading(
|
69 | 74 | tarball_path: str,
|
70 | 75 | product: str,
|
@@ -549,7 +554,7 @@ def _write_package_metadata_to_file(package_metadata: NPMPackageMetadata, root='
|
549 | 554 | final_package_metadata_path = os.path.join(root, package_metadata.name, PACKAGE_JSON)
|
550 | 555 | try:
|
551 | 556 | with open(final_package_metadata_path, mode='w', encoding='utf-8') as f:
|
552 |
| - dump(del_none(package_metadata.__dict__.copy()), f) |
| 557 | + dump(obj=package_metadata, cls=NPMPackageMetadataEncoder, fp=f) |
553 | 558 | return final_package_metadata_path
|
554 | 559 | except FileNotFoundError:
|
555 | 560 | logger.error(
|
|
0 commit comments