Exemple #1
0
def resolve_dependencies(root_name):
    """Given the name of a dependency, return all dependencies and packages
    that require that dependency, directly or indirectly.
    """
    manager = PackageManager()

    all_packages = manager.list_packages()
    all_dependencies = manager.list_dependencies()

    recursive_dependencies = set()
    dependent_packages = set()

    dependency_relationships = {
        name: manager.get_dependencies(name)
        for name in all_packages + all_dependencies
    }

    def rec(name):
        if name in recursive_dependencies:
            return

        recursive_dependencies.add(name)

        for dep_name in all_dependencies:
            if name in dependency_relationships[dep_name]:
                rec(dep_name)

        for pkg_name in all_packages:
            if name in dependency_relationships[pkg_name]:
                dependent_packages.add(pkg_name)

    rec(root_name)
    return (recursive_dependencies, dependent_packages)
def resolve_dependencies(root_name):
    """Given the name of a dependency, return all dependencies and packages
    that require that dependency, directly or indirectly.
    """
    manager = PackageManager()

    all_packages = manager.list_packages()
    all_dependencies = manager.list_dependencies()

    recursive_dependencies = set()
    dependent_packages = set()

    dependency_relationships = {
        name: manager.get_dependencies(name)
        for name in all_packages + all_dependencies
    }

    def rec(name):
        if name in recursive_dependencies:
            return

        recursive_dependencies.add(name)

        for dep_name in all_dependencies:
            if name in dependency_relationships[dep_name]:
                rec(dep_name)

        for pkg_name in all_packages:
            if name in dependency_relationships[pkg_name]:
                dependent_packages.add(pkg_name)

    rec(root_name)
    return (recursive_dependencies, dependent_packages)
    def resolve_parents(root_name):
        """Given the name of a dependency, return all dependencies and packages
        that require that dependency, directly or indirectly.
        """
        manager = PackageManager()
        everything = manager.list_packages() + manager.list_dependencies()

        recursive_dependencies = set()

        dependency_relationships = {
            name: manager.get_dependencies(name)
            for name in everything
        }

        def rec(name):
            if name in recursive_dependencies:
                return

            recursive_dependencies.add(name)

            for pkg_name in everything:
                if name in dependency_relationships[pkg_name]:
                    rec(pkg_name)

        rec(root_name)

        recursive_dependencies.remove(root_name)

        return recursive_dependencies
class PHPIDE(threading.Thread):
    def __init__(self):
        self.manager = PackageManager()
        threading.Thread.__init__(self)

    def run(self):
        installed_packages = self.manager.list_packages()
        for plugin in Prefs.plugins:
            print "- checking plugin " + plugin
            if not plugin in installed_packages:
                self.manager.install_package(plugin)
class PackageController:
    user_dir = None

    def __init__(self):
        sublime_dir = os.path.dirname(sublime.packages_path())
        installed_packages_dir = os.path.join(sublime_dir,
                                              'Installed Packages')
        packages_dir = os.path.join(sublime_dir, 'Packages')

        self.user_dir = os.path.join(packages_dir, 'User')

        package_control = os.path.join(installed_packages_dir,
                                       "Package Control.sublime-package")
        sys.path.append(package_control)

        from package_control.package_manager import PackageManager
        self.package_control = PackageManager()

    def install_packages(self,
                         packages,
                         callback=lambda: True,
                         wipe_others=True):
        if wipe_others:
            installed_packages = self.package_control.list_packages()

            to_remove = []
            for pkg in installed_packages:
                if pkg not in packages:
                    to_remove.append(pkg)

        to_install = []
        for pkg in packages:
            if pkg in installed_packages:
                continue
            to_install.append(pkg)

        PackageResolver(self.package_control, to_install, to_remove,
                        callback).start()

    def reload(self):
        # We have to delete `Package Control.last-run` to not run into the cache
        last_run_file = os.path.join(self.user_dir, "Package Control.last-run")
        if os.path.isfile(last_run_file):
            os.remove(last_run_file)

        from package_control.package_cleanup import PackageCleanup
        sublime.set_timeout(lambda: PackageCleanup().start(), 2000)
Exemple #6
0
def install_amxx_editor_menu_on_first_run():
    # https://packagecontrol.io/docs/events
    from package_control import events

    if events.install(CURRENT_PACKAGE_NAME):
        log(1, 'Installed %s!', events.install(CURRENT_PACKAGE_NAME))
        from package_control.package_manager import PackageManager

        package_manager = PackageManager()
        all_packages = set(package_manager.list_packages())

        if AMXX_CHANNEL in all_packages:
            amxx_channel_path = os.path.join(PACKAGE_ROOT_DIRECTORY,
                                             AMXX_CHANNEL)

            if not os.path.exists(amxx_channel_path):
                add_main_menu()
def get_installed_packages(exclusion_list=[],
                           list_default_packages=False,
                           list_dependencies=False):

    if PackageManager:
        packages = []
        package_manager = PackageManager()

        if list_default_packages:
            packages.extend(package_manager.list_default_packages())

        if list_dependencies:
            packages.extend(package_manager.list_dependencies())

        packages.extend(package_manager.list_packages())
        return list(set(packages) - set(exclusion_list))

    else:
        raise ImportError(
            "You can only use the Sublime Text API inside Sublime Text.")
class PackageController:
    user_dir = None

    def __init__(self):
        sublime_dir = os.path.dirname(sublime.packages_path())
        installed_packages_dir = os.path.join(sublime_dir, 'Installed Packages')
        packages_dir = os.path.join(sublime_dir, 'Packages')

        self.user_dir = os.path.join(packages_dir, 'User')

        package_control = os.path.join(installed_packages_dir, "Package Control.sublime-package")
        sys.path.append(package_control)

        from package_control.package_manager import PackageManager
        self.package_control = PackageManager()

    def install_packages(self, packages, callback=lambda: True, wipe_others=True):
        if wipe_others:
            installed_packages = self.package_control.list_packages()

            to_remove = []
            for pkg in installed_packages:
                if pkg not in packages:
                    to_remove.append(pkg)

        to_install = []
        for pkg in packages:
            if pkg in installed_packages:
                continue
            to_install.append(pkg)

        PackageResolver(self.package_control, to_install, to_remove, callback).start()

    def reload(self):
        # We have to delete `Package Control.last-run` to not run into the cache
        last_run_file = os.path.join(self.user_dir, "Package Control.last-run")
        if os.path.isfile(last_run_file):
            os.remove(last_run_file)

        from package_control.package_cleanup import PackageCleanup
        sublime.set_timeout(lambda: PackageCleanup().start(), 2000)
def reload_dependency(dependency_name, dummy=True, verbose=True):
    """
    Reload a Package Control dependency.

    Package Control dependencies aren't regular packages, so we don't want to
    call `sublime_plugin.unload_module` or `sublime_plugin.reload_plugin`.
    Instead, we manually unload all of the modules in the dependency and then
    `reload_package` any packages that use that dependency. (We have to manually
    unload the dependency's modules because calling `reload_package` on a
    dependent module will not unload the dependency.)
    """
    for name in get_package_modules(dependency_name):
        del sys.modules[name]

    manager = PackageManager()
    for package in manager.list_packages():
        if dependency_name in manager.get_dependencies(package):
            reload_package(package, dummy=False, verbose=verbose)

    if dummy:
        load_dummy(verbose)
def reload_dependency(dependency_name, dummy=True, verbose=True):
    """
    Package Control dependencies aren't regular packages, so we don't want to
    call `sublime_plugin.unload_module` or `sublime_plugin.reload_plugin`.
    Instead, we manually unload all of the modules in the dependency and then
    `reload_package` any packages that use that dependency. (We have to manually
    unload the dependency's modules because calling `reload_package` on a
    dependent module will not unload the dependency.)
    """
    dependency_base = os.path.join(sublime.packages_path(),
                                   dependency_name) + os.sep

    for module in list(sys.modules.values()):
        if getattr(module, '__file__', '').startswith(dependency_base):
            del sys.modules[module.__name__]

    manager = PackageManager()
    for package in manager.list_packages():
        if dependency_name in manager.get_dependencies(package):
            reload_package(package, dummy=False, verbose=verbose)

    if dummy:
        load_dummy(verbose)