@@ -89,6 +89,47 @@ def file_path_check(package_info, pathname):
8989 return False
9090
9191
92+ def check_duplicate_package_names (work_root ):
93+ """Check whether any packages declare the same package name."""
94+
95+ package_names = {}
96+ duplicate_names = {}
97+
98+ for path , dir_list , file_list in os .walk (work_root ):
99+ dir_list .sort ()
100+ file_list .sort ()
101+
102+ if 'package.json' not in file_list :
103+ continue
104+
105+ json_pathname = os .path .join (path , 'package.json' )
106+ json_info = get_json_info (json_pathname )
107+ if not json_info :
108+ return False
109+
110+ package_name = json_info .get ('name' , '' )
111+ if not package_name :
112+ print ("The name of package %s is lost." % json_pathname )
113+ return False
114+
115+ if package_name in package_names :
116+ duplicate_names .setdefault (package_name , [package_names [package_name ]])
117+ duplicate_names [package_name ].append (json_pathname )
118+ else :
119+ package_names [package_name ] = json_pathname
120+
121+ if duplicate_names :
122+ print ("===========================================>" )
123+ print ("Error: duplicated package name found." )
124+ for package_name in sorted (duplicate_names ):
125+ print ("package name: %s" % package_name )
126+ for pathname in duplicate_names [package_name ]:
127+ print (" %s" % pathname )
128+ return False
129+
130+ return True
131+
132+
92133def check_json_file (work_root ):
93134 """Check the json file."""
94135
@@ -214,6 +255,9 @@ def main():
214255 try :
215256 work_root = os .getcwd ()
216257 print (work_root )
258+ if not check_duplicate_package_names (work_root ):
259+ sys .exit (1 )
260+
217261 if not check_json_file (work_root ):
218262 sys .exit (1 )
219263
0 commit comments