@@ -49,10 +49,10 @@ def __init__(self, template_path: Optional[Path] = None):
49
49
self ._templates = templates .Templates (self ._template_root )
50
50
self .excludes = [] # type: List[str]
51
51
52
- def _generic_library (self , directory : str , ** kwargs ) -> Path :
52
+ def _generic_library (self , directory : str , relative_dir = None , ** kwargs ) -> Path :
53
53
# load common repo meta information (metadata that's not language specific).
54
54
if "metadata" in kwargs :
55
- self ._load_generic_metadata (kwargs ["metadata" ])
55
+ self ._load_generic_metadata (kwargs ["metadata" ], relative_dir = relative_dir )
56
56
# if no samples were found, don't attempt to render a
57
57
# samples/README.md.
58
58
if "samples" not in kwargs ["metadata" ] or not kwargs ["metadata" ]["samples" ]:
@@ -330,7 +330,7 @@ def node_library(self, **kwargs) -> Path:
330
330
def node_mono_repo_library (self , relative_dir , ** kwargs ) -> Path :
331
331
# TODO: once we've migrated all Node.js repos to either having
332
332
# .repo-metadata.json, or excluding README.md, we can remove this.
333
- if not os .path .exists (Path (relative_dir , "/ .repo-metadata.json" ).resolve ()):
333
+ if not os .path .exists (Path (relative_dir , ".repo-metadata.json" ).resolve ()):
334
334
self .excludes .append ("README.md" )
335
335
if "samples/README.md" not in self .excludes :
336
336
self .excludes .append ("samples/README.md" )
@@ -353,7 +353,9 @@ def node_mono_repo_library(self, relative_dir, **kwargs) -> Path:
353
353
year = str (date .today ().year ),
354
354
)
355
355
356
- return self ._generic_library ("node_mono_repo_library" , ** kwargs )
356
+ return self ._generic_library (
357
+ "node_mono_repo_library" , relative_dir = relative_dir , ** kwargs
358
+ )
357
359
358
360
def php_library (self , ** kwargs ) -> Path :
359
361
return self ._generic_library ("php_library" , ** kwargs )
@@ -369,7 +371,7 @@ def render(self, template_name: str, **kwargs) -> Path:
369
371
_tracked_paths .add (template )
370
372
return template
371
373
372
- def _load_generic_metadata (self , metadata : Dict ):
374
+ def _load_generic_metadata (self , metadata : Dict , relative_dir = None ):
373
375
"""
374
376
loads additional meta information from .repo-metadata.json.
375
377
"""
@@ -380,7 +382,7 @@ def _load_generic_metadata(self, metadata: Dict):
380
382
# metadata, so we don't need to do it again or overwrite it. Also, only
381
383
# set the "repo" key.
382
384
if "repo" not in metadata :
383
- metadata ["repo" ] = _load_repo_metadata ()
385
+ metadata ["repo" ] = _load_repo_metadata (relative_dir = relative_dir )
384
386
385
387
386
388
def detect_versions (
@@ -462,7 +464,9 @@ def decamelize(value: str):
462
464
return re .sub ("([a-z0-9])([A-Z])" , r"\1 \2" , str_decamelize ) # FooBar -> Foo Bar.
463
465
464
466
465
- def _load_repo_metadata (metadata_file : str = "./.repo-metadata.json" ) -> Dict :
467
+ def _load_repo_metadata (
468
+ relative_dir = None , metadata_file : str = "./.repo-metadata.json"
469
+ ) -> Dict :
466
470
"""Parse a metadata JSON file into a Dict.
467
471
468
472
Currently, the defined fields are:
@@ -487,7 +491,11 @@ def _load_repo_metadata(metadata_file: str = "./.repo-metadata.json") -> Dict:
487
491
Returns:
488
492
A dictionary of metadata. This may not necessarily include all the defined fields above.
489
493
"""
490
- if os .path .exists (metadata_file ):
494
+ if relative_dir is not None :
495
+ if os .path .exists (Path (relative_dir , metadata_file ).resolve ()):
496
+ with open (Path (relative_dir , metadata_file ).resolve ()) as f :
497
+ return json .load (f )
498
+ elif os .path .exists (metadata_file ):
491
499
with open (metadata_file ) as f :
492
500
return json .load (f )
493
501
return {}
0 commit comments