~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/plugin.py

  • Committer: Martin Pool
  • Date: 2005-07-07 10:31:36 UTC
  • Revision ID: mbp@sourcefrog.net-20050707103135-9b4d911d8df6e880
- fix pwk help

Show diffs side-by-side

added added

removed removed

Lines of Context:
24
24
 
25
25
 
26
26
import os
27
 
import bzrlib
28
 
from bzrlib.config import config_dir
 
27
from bzrlib.osutils import config_dir
29
28
DEFAULT_PLUGIN_PATH = os.path.join(config_dir(), 'plugins')
30
29
 
31
30
all_plugins = []
57
56
    _loaded = True
58
57
 
59
58
    import sys, os, imp
60
 
    
 
59
    try:
 
60
        set
 
61
    except NameError:
 
62
        from sets import Set as set         # python2.3
 
63
 
61
64
    from bzrlib.trace import log_error, mutter, log_exception
62
65
    from bzrlib.errors import BzrError
63
 
    from bzrlib import plugins
64
66
 
65
 
    dirs = os.environ.get('BZR_PLUGIN_PATH', DEFAULT_PLUGIN_PATH).split(":")
66
 
    dirs.insert(0, os.path.dirname(plugins.__file__))
 
67
    bzrpath = os.environ.get('BZR_PLUGIN_PATH', DEFAULT_PLUGIN_PATH)
67
68
 
68
69
    # The problem with imp.get_suffixes() is that it doesn't include
69
70
    # .pyo which is technically valid
73
74
    suffixes = imp.get_suffixes()
74
75
    suffixes.append(('.pyo', 'rb', imp.PY_COMPILED))
75
76
    package_entries = ['__init__.py', '__init__.pyc', '__init__.pyo']
76
 
    for d in dirs:
 
77
    for d in bzrpath.split(os.pathsep):
77
78
        # going through them one by one allows different plugins with the same
78
79
        # filename in different directories in the path
79
80
        mutter('looking for plugins in %s' % d)
111
112
                plugin_info = imp.find_module(name, [d])
112
113
                mutter('load plugin %r' % (plugin_info,))
113
114
                try:
114
 
                    plugin = imp.load_module('bzrlib.plugins.' + name,
 
115
                    plugin = imp.load_module('bzrlib.plugin.' + name,
115
116
                                             *plugin_info)
116
 
                    all_plugins.append(plugin)
117
 
                    setattr(bzrlib.plugins, name, plugin)
 
117
                    all_plugins.append(plugin_info)
118
118
                finally:
119
119
                    if plugin_info[0] is not None:
120
120
                        plugin_info[0].close()
121
 
 
122
 
                mutter('loaded succesfully')
123
 
            except:
 
121
            except Exception, e:
124
122
                log_error('Unable to load plugin %r from %r' % (name, d))
 
123
                log_error(str(e))
125
124
                log_exception()
126
125