Files
Iristyle a000ce8acc feat(ST2.UtilPackages): bump up all packages
- Refresh PackageCache with latest versions of everything
2013-09-16 22:35:46 -04:00

131 lines
3.7 KiB
Python

import sys
import sublime
st_version = 2
# With the way ST3 works, the sublime module is not "available" at startup
# which results in an empty version number
if sublime.version() == '' or int(sublime.version()) > 3000:
st_version = 3
from imp import reload
# Python allows reloading modules on the fly, which allows us to do live upgrades.
# The only caveat to this is that you have to reload in the dependency order.
#
# Thus is module A depends on B and we don't reload B before A, when A is reloaded
# it will still have a reference to the old B. Thus we hard-code the dependency
# order of the various Package Control modules so they get reloaded properly.
#
# There are solutions for doing this all programatically, but this is much easier
# to understand.
reload_mods = []
for mod in sys.modules:
if mod[0:15].lower().replace(' ', '_') == 'package_control' and sys.modules[mod] != None:
reload_mods.append(mod)
mod_prefix = 'package_control'
if st_version == 3:
mod_prefix = 'Package Control.' + mod_prefix
mods_load_order = [
'',
'.sys_path',
'.cache',
'.http_cache',
'.ca_certs',
'.clear_directory',
'.cmd',
'.console_write',
'.preferences_filename',
'.show_error',
'.unicode',
'.thread_progress',
'.package_io',
'.semver',
'.versions',
'.http',
'.http.invalid_certificate_exception',
'.http.debuggable_http_response',
'.http.debuggable_https_response',
'.http.debuggable_http_connection',
'.http.persistent_handler',
'.http.debuggable_http_handler',
'.http.validating_https_connection',
'.http.validating_https_handler',
'.clients',
'.clients.client_exception',
'.clients.bitbucket_client',
'.clients.github_client',
'.clients.readme_client',
'.clients.json_api_client',
'.providers',
'.providers.provider_exception',
'.providers.bitbucket_repository_provider',
'.providers.channel_provider',
'.providers.github_repository_provider',
'.providers.github_user_provider',
'.providers.repository_provider',
'.providers.release_selector',
'.download_manager',
'.downloaders',
'.downloaders.downloader_exception',
'.downloaders.rate_limit_exception',
'.downloaders.binary_not_found_error',
'.downloaders.non_clean_exit_error',
'.downloaders.non_http_error',
'.downloaders.caching_downloader',
'.downloaders.decoding_downloader',
'.downloaders.limiting_downloader',
'.downloaders.cert_provider',
'.downloaders.urllib_downloader',
'.downloaders.cli_downloader',
'.downloaders.curl_downloader',
'.downloaders.wget_downloader',
'.downloaders.wininet_downloader',
'.downloaders.background_downloader',
'.upgraders',
'.upgraders.vcs_upgrader',
'.upgraders.git_upgrader',
'.upgraders.hg_upgrader',
'.package_manager',
'.package_creator',
'.package_installer',
'.package_renamer',
'.commands',
'.commands.add_channel_command',
'.commands.add_repository_command',
'.commands.create_binary_package_command',
'.commands.create_package_command',
'.commands.disable_package_command',
'.commands.discover_packages_command',
'.commands.enable_package_command',
'.commands.existing_packages_command',
'.commands.grab_certs_command',
'.commands.install_package_command',
'.commands.list_packages_command',
'.commands.package_message_command',
'.commands.remove_package_command',
'.commands.upgrade_all_packages_command',
'.commands.upgrade_package_command',
'.package_cleanup',
'.automatic_upgrader'
]
for suffix in mods_load_order:
mod = mod_prefix + suffix
if mod in reload_mods:
reload(sys.modules[mod])