VCS/__init__.py

Mon, 25 Mar 2013 03:11:06 +0100

author
T.Rzepka <Tobias.Rzepka@gmail.com>
date
Mon, 25 Mar 2013 03:11:06 +0100
branch
Py2 comp.
changeset 2525
8b507a9a2d40
parent 2302
f29e9405c851
child 3057
10516539f238
permissions
-rw-r--r--

Script changes: Future import added, super calls modified and unicode behavior for str.

# -*- coding: utf-8 -*-

# Copyright (c) 2002 - 2013 Detlev Offenbach <detlev@die-offenbachs.de>
#

"""
Module implementing the general part of the interface to version control systems.

The general part of the VCS interface defines classes to implement common
dialogs. These are a dialog to enter command options, a dialog to display
some repository information and an abstract base class. The individual
interfaces (i.e. CVS) have to be subclasses of this base class.
"""

from __future__ import unicode_literals    # __IGNORE_WARNING__

from E5Gui.E5Application import e5App

######################################################################
## Below is the factory function to instantiate the appropriate
## vcs object depending on the project settings.
######################################################################


def factory(vcs):
    """
    Modul factory function to generate the right vcs object.
    
    @param vcs name of the VCS system to be used (string)
    @return the instantiated VCS object
    """
    pluginManager = e5App().getObject("PluginManager")
    if pluginManager is None:
        # that should not happen
        vc = None
    
    vc = pluginManager.getPluginObject("version_control", vcs, maybeActive=True)
    if vc is None:
        # try alternative vcs interfaces assuming, that there is a common
        # indicator for the alternatives
        found = False
        for indicator, vcsData in list(pluginManager.getVcsSystemIndicators().items()):
            for vcsSystem, vcsSystemDisplay in vcsData:
                if vcsSystem == vcs:
                    found = True
                    break
            
            if found:
                if len(vcsData) > 1:
                    for vcsSystem, vcsSystemDisplay in vcsData:
                        if vcsSystem != vcs:
                            vc = pluginManager.getPluginObject(
                                "version_control", vcsSystem, maybeActive=True)
                            if vc is not None:
                                break
                break
    return vc

eric ide

mercurial