@@ -109,6 +109,18 @@ def _parse_args():
109
109
nargs = "?" ,
110
110
help = "List all areas maintained by maintainer." )
111
111
112
+
113
+ area_parser = subparsers .add_parser (
114
+ "area" ,
115
+ help = "List area(s) by name" )
116
+ area_parser .add_argument (
117
+ "name" ,
118
+ metavar = "AREA" ,
119
+ nargs = "?" ,
120
+ help = "List all areas with the given name." )
121
+
122
+ area_parser .set_defaults (cmd_fn = Maintainers ._area_cmd )
123
+
112
124
# New arguments for filtering
113
125
areas_parser .add_argument (
114
126
"--without-maintainers" ,
@@ -220,6 +232,12 @@ def __init__(self, filename=None):
220
232
221
233
self .areas [area_name ] = area
222
234
235
+ def name2areas (self , name ):
236
+ """
237
+ Returns a list of Area instances for the areas that match 'name'.
238
+ """
239
+ return [area for area in self .areas .values () if area .name == name ]
240
+
223
241
def path2areas (self , path ):
224
242
"""
225
243
Returns a list of Area instances for the areas that contain 'path',
@@ -262,6 +280,14 @@ def __repr__(self):
262
280
# Command-line subcommands
263
281
#
264
282
283
+ def _area_cmd (self , args ):
284
+ # 'area' subcommand implementation
285
+
286
+ res = set ()
287
+ areas = self .name2areas (args .name )
288
+ res .update (areas )
289
+ _print_areas (res )
290
+
265
291
def _path_cmd (self , args ):
266
292
# 'path' subcommand implementation
267
293
0 commit comments