@@ -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