Skip to content

Commit 1b46a6b

Browse files
committed
update options.py
1 parent 6410558 commit 1b46a6b

1 file changed

Lines changed: 28 additions & 5 deletions

File tree

packages/gapic-generator/gapic/utils/options.py

Lines changed: 28 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -190,14 +190,37 @@ def tweak_path(p):
190190
if len(proto_plus_deps):
191191
proto_plus_deps = tuple(proto_plus_deps[0].split("+"))
192192

193+
# Parse the resource name aliases dictionary (Format: "path/to/Resource:AliasName")
193194
resource_name_aliases = {}
194-
for alias_mapping in opts.pop("resource-name-alias", []):
195+
raw_aliases = opts.pop("resource-name-alias", [])
196+
197+
# Normalize: protoc can return a string (1 flag) or list (multiple flags)
198+
if not isinstance(raw_aliases, list):
199+
raw_aliases = [raw_aliases]
200+
201+
# Parse explicitly and safely
202+
for mapping in raw_aliases:
203+
if not mapping or not mapping.strip():
204+
continue
205+
195206
try:
196-
res_path, alias_name = alias_mapping.split(":", 1)
197-
resource_name_aliases[res_path.strip()] = alias_name.strip()
207+
# split(":", 1) ensures we only split on the FIRST colon
208+
res_path, alias_name = mapping.split(":", 1)
209+
210+
clean_path = res_path.strip()
211+
clean_alias = alias_name.strip()
212+
213+
if not clean_path or not clean_alias:
214+
raise ValueError()
215+
216+
resource_name_aliases[clean_path] = clean_alias
217+
198218
except ValueError:
199-
warnings.warn(f"Invalid format for resource-name-alias: '{alias_mapping}'. Expected format 'resource.path/Name:AliasName'")
200-
219+
warnings.warn(
220+
f"Ignored malformed resource-name-alias: '{mapping}'. "
221+
"Expected format is 'resource.path/Name:AliasName'."
222+
)
223+
201224
Options.resource_name_aliases_global = resource_name_aliases
202225

203226
answer = Options(

0 commit comments

Comments
 (0)