@@ -37,6 +37,7 @@ def run(self):
37
37
found_dependencies = []
38
38
39
39
installed_packages = list (self .original_installed_packages )
40
+ installed_dependencies = list (self .original_installed_dependencies )
40
41
41
42
for package_name in os .listdir (sublime .packages_path ()):
42
43
found = True
@@ -161,13 +162,20 @@ def show_still_locked():
161
162
invalid_packages = []
162
163
invalid_dependencies = []
163
164
164
- # Check metadata to verify packages were not improperly installed
165
+ # Check metadata to verify packages were not improperly installed, and
166
+ # also make sure we have all dependencies we need
165
167
for package in found_packages :
166
168
if package == 'User' :
167
169
continue
170
+
168
171
metadata = self .manager .get_metadata (package )
169
- if metadata and not self .is_compatible (metadata ):
170
- invalid_packages .append (package )
172
+ if metadata :
173
+ if not self .is_compatible (metadata ):
174
+ invalid_packages .append (package )
175
+
176
+ for dependency in self .manager .get_dependencies (package ):
177
+ if dependency not in installed_dependencies :
178
+ installed_dependencies .append (dependency )
171
179
172
180
for dependency in found_dependencies :
173
181
metadata = self .manager .get_metadata (dependency , is_dependency = True )
@@ -198,7 +206,7 @@ def show_sync_error():
198
206
show_error (message )
199
207
sublime .set_timeout (show_sync_error , 100 )
200
208
201
- sublime .set_timeout (lambda : self .finish (installed_packages , found_packages , found_dependencies ), 10 )
209
+ sublime .set_timeout (lambda : self .finish (installed_packages , installed_dependencies , found_packages , found_dependencies ), 10 )
202
210
203
211
def is_compatible (self , metadata ):
204
212
"""
@@ -237,7 +245,7 @@ def is_compatible(self, metadata):
237
245
238
246
return True
239
247
240
- def finish (self , installed_packages , found_packages , found_dependencies ):
248
+ def finish (self , installed_packages , installed_dependencies , found_packages , found_dependencies ):
241
249
"""
242
250
A callback that can be run the main UI thread to perform saving of the
243
251
Package Control.sublime-settings file. Also fires off the
@@ -247,6 +255,10 @@ def finish(self, installed_packages, found_packages, found_dependencies):
247
255
A list of the string package names of all "installed" packages,
248
256
even ones that do not appear to be in the filesystem.
249
257
258
+ :param installed_dependencies:
259
+ A list of the string dependency names of all "installed"
260
+ dependencies, even ones that do not appear to be in the filesystem.
261
+
250
262
:param found_packages:
251
263
A list of the string package names of all packages that are
252
264
currently installed on the filesystem.
@@ -276,6 +288,9 @@ def finish(self, installed_packages, found_packages, found_dependencies):
276
288
save_list_setting (settings , filename , 'ignored_packages' , new_ignored , ignored )
277
289
save_list_setting (pc_settings , pc_filename , 'in_process_packages' , [])
278
290
291
+ save_list_setting (pc_settings , pc_filename , 'installed_dependencies' ,
292
+ installed_dependencies , self .original_installed_dependencies )
293
+
279
294
save_list_setting (pc_settings , pc_filename , 'installed_packages' ,
280
295
installed_packages , self .original_installed_packages )
281
296
AutomaticUpgrader (found_packages , found_dependencies ).start ()
0 commit comments