Skip to content

Commit 1f06210

Browse files
author
Benjamin E. Coe
authored
build(nodejs): make default_version optional (#1368)
1 parent 6489cdd commit 1f06210

3 files changed

Lines changed: 31 additions & 18 deletions

File tree

synthtool/gcp/templates/node_split_library/index.ts.j2

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@
1717
// ** All changes to this file may be overwritten. **
1818

1919
{% for version in versions %}import * as {{ version }} from './{{ version}}';{{ "\n" }}{% endfor %}
20-
{% for client in clients %}const {{ client }} = {{ default_version }}.{{ client }};
21-
type {{ client }} = {{ default_version }}.{{ client }};{{ "\n" }}{% endfor %}
22-
export {{ "{" }}{{ versions|join(', ')}}, {{ clients|join(', ')}}{{ "}" }};
23-
export default {{ "{" }}{{ versions|join(', ')}}, {{ clients|join(', ')}}{{ "}" }};
20+
{% if default_version is defined %}{% for client in clients %}const {{ client }} = {{ default_version }}.{{ client }};
21+
type {{ client }} = {{ default_version }}.{{ client }};{{ "\n" }}{% endfor %}{% endif %}
22+
export {{ "{" }}{{ versions|join(', ')}}{% if clients|length > 0 %}, {{ clients|join(', ')}}{% endif %}{{ "}" }};
23+
export default {{ "{" }}{{ versions|join(', ')}}{% if clients|length > 0 %}, {{ clients|join(', ')}}{% endif %}{{ "}" }};
2424
import * as protos from '../protos/protos';
2525
export {protos};

synthtool/languages/node.py

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -132,21 +132,23 @@ def generate_index_ts(versions: List[str], default_version: str) -> None:
132132
)
133133
logger.error(err_msg)
134134
raise AttributeError(err_msg)
135-
if default_version not in versions:
135+
if default_version and default_version not in versions:
136136
err_msg = f"Version {versions} must contain default version {default_version}."
137137
logger.error(err_msg)
138138
raise AttributeError(err_msg)
139139

140140
# To make sure the output is always deterministic.
141141
versions = sorted(versions)
142142

143-
# compose default version's index.ts file path
144-
versioned_index_ts_path = Path("src") / default_version / "index.ts"
145-
clients = extract_clients(versioned_index_ts_path)
146-
if not clients:
147-
err_msg = f"No client is exported in the default version's({default_version}) index.ts ."
148-
logger.error(err_msg)
149-
raise AttributeError(err_msg)
143+
# compose default version's index.ts file
144+
clients = []
145+
if default_version:
146+
versioned_index_ts_path = Path("src") / default_version / "index.ts"
147+
clients = extract_clients(versioned_index_ts_path)
148+
if not clients:
149+
err_msg = f"No client is exported in the default version's({default_version}) index.ts ."
150+
logger.error(err_msg)
151+
raise AttributeError(err_msg)
150152

151153
# compose template directory
152154
template_path = (
@@ -297,14 +299,14 @@ def owlbot_main(
297299
)
298300
staging = Path("owl-bot-staging")
299301
s_copy = transforms.move
300-
if default_version is None:
301-
logger.info("No default version found in .repo-metadata.json. Ok.")
302-
elif staging.is_dir():
302+
versions = []
303+
if staging.is_dir():
303304
logger.info(f"Copying files from staging directory ${staging}.")
304305
# Collect the subdirectories of the staging directory.
305306
versions = [v.name for v in staging.iterdir() if v.is_dir()]
306307
# Reorder the versions so the default version always comes last.
307-
versions = [v for v in versions if v != default_version] + [default_version]
308+
if default_version:
309+
versions = [v for v in versions if v != default_version] + [default_version]
308310
logger.info(f"Collected versions ${versions} from ${staging}")
309311

310312
# Copy each version directory into the root.
@@ -320,12 +322,13 @@ def owlbot_main(
320322
src = Path("src")
321323
versions = [v.name for v in src.iterdir() if v.is_dir()]
322324
# Reorder the versions so the default version always comes last.
323-
versions = [v for v in versions if v != default_version] + [default_version]
325+
if default_version:
326+
versions = [v for v in versions if v != default_version] + [default_version]
324327
logger.info(f"Collected versions ${versions} from ${src}")
325328

326329
common_templates = gcp.CommonTemplates(template_path)
327330
common_templates.excludes.extend(templates_excludes)
328-
if default_version:
331+
if len(versions) > 0:
329332
templates = common_templates.node_library(
330333
source_location="build/src",
331334
versions=versions,

tests/test_node.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,16 @@ def test_extract_multiple_clients():
102102
assert clients[1] == "VideoIntelligenceServiceClient"
103103

104104

105+
def test_generate_index_ts_no_default_version():
106+
# use a non-nodejs template directory
107+
with util.chdir(FIXTURES / "node_templates" / "index_samples"):
108+
versions = ["v1beta1"]
109+
node.generate_index_ts(versions, None)
110+
text = open("./src/index.ts", "rt").read()
111+
assert "export {v1beta1};" in text
112+
assert "export default {v1beta1};" in text
113+
114+
105115
def test_generate_index_ts():
106116
# use a non-nodejs template directory
107117
with util.chdir(FIXTURES / "node_templates" / "index_samples"):

0 commit comments

Comments
 (0)