Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: (nodejs) read repo_name and package_name from package.json #34

Merged
merged 9 commits into from
Aug 21, 2018
7 changes: 4 additions & 3 deletions synthtool/gcp/common.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@

from pathlib import Path

from synthtool.sources import templates
from synthtool.sources import templates, node_package
from synthtool import _tracked_paths

_TEMPLATES_DIR = Path(__file__).parent / "templates"
Expand All @@ -27,9 +27,10 @@ def __init__(self):
def py_library(self) -> Path:
raise NotImplemented()

def node_library(self, package_name, repo_name) -> Path:
def node_library(self, **kwargs) -> Path:
metadata = node_package.read_metadata()
t = templates.TemplateGroup(_TEMPLATES_DIR / "node_library")
result = t.render(package_name=package_name, repo_name=repo_name)
result = t.render(**{**metadata, **kwargs})

This comment was marked as spam.

_tracked_paths.add(result)
return result

Expand Down
37 changes: 37 additions & 0 deletions synthtool/sources/node_package.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# Copyright 2018 Google LLC

This comment was marked as spam.

#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

import json


def read_metadata():
"""
read package name and repository in package.json from a Node library.

Returns:
package_name: Name of the package (with scope)
repo_name: Name of the repository
"""
with open('./package.json') as f:
data = json.load(f)

package_name = data['name']

This comment was marked as spam.

This comment was marked as spam.

This comment was marked as spam.

repo_name = data['repository']

if package_name is None:
raise RuntimeError("package.json is missing name field")
if repo_name is None:
raise RuntimeError("package.json is missing repository field")

return {'package_name': package_name, 'repo_name': repo_name}