~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/externalcommand.py

  • Committer: Martin Pool
  • Date: 2005-09-01 11:07:16 UTC
  • Revision ID: mbp@sourcefrog.net-20050901110716-8156a21d28c45f9d
- doc

Show diffs side-by-side

added added

removed removed

Lines of Context:
14
14
# along with this program; if not, write to the Free Software
15
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
16
 
 
17
# TODO: Perhaps rather than mapping options and arguments back and
 
18
# forth, we should just pass in the whole argv, and allow
 
19
# ExternalCommands to handle it differently to internal commands?
 
20
 
17
21
 
18
22
from bzrlib.commands import Command
19
23
 
21
25
class ExternalCommand(Command):
22
26
    """Class to wrap external commands.
23
27
 
24
 
    We cheat a little here, when get_cmd_class() calls us we actually
25
 
    give it back an object we construct that has the appropriate path,
26
 
    help, options etc for the specified command.
27
 
 
28
 
    When run_bzr() tries to instantiate that 'class' it gets caught by
29
 
    the __call__ method, which we override to call the Command.__init__
30
 
    method. That then calls our run method which is pretty straight
31
 
    forward.
32
 
 
33
 
    The only wrinkle is that we have to map bzr's dictionary of options
34
 
    and arguments back into command line options and arguments for the
35
 
    script.
 
28
    The only wrinkle is that we have to map bzr's dictionary of
 
29
    options and arguments back into command line options and arguments
 
30
    for the script.
36
31
    """
37
32
 
 
33
    @classmethod
38
34
    def find_command(cls, cmd):
39
35
        import os.path
40
36
        bzrpath = os.environ.get('BZRPATH', '')
46
42
 
47
43
        return None
48
44
 
49
 
    find_command = classmethod(find_command)
50
45
 
51
46
    def __init__(self, path):
52
47
        self.path = path