/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
2052.3.2 by John Arbash Meinel
Change Copyright .. by Canonical to Copyright ... Canonical
1
# Copyright (C) 2004, 2005 Canonical Ltd
1887.1.1 by Adeodato Simó
Do not separate paragraphs in the copyright statement with blank lines,
2
#
1163 by Martin Pool
- split ExternalCommand class into its own file
3
# This program is free software; you can redistribute it and/or modify
4
# it under the terms of the GNU General Public License as published by
5
# the Free Software Foundation; either version 2 of the License, or
6
# (at your option) any later version.
1887.1.1 by Adeodato Simó
Do not separate paragraphs in the copyright statement with blank lines,
7
#
1163 by Martin Pool
- split ExternalCommand class into its own file
8
# This program is distributed in the hope that it will be useful,
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
# GNU General Public License for more details.
1887.1.1 by Adeodato Simó
Do not separate paragraphs in the copyright statement with blank lines,
12
#
1163 by Martin Pool
- split ExternalCommand class into its own file
13
# You should have received a copy of the GNU General Public License
14
# along with this program; if not, write to the Free Software
4183.7.1 by Sabin Iacob
update FSF mailing address
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
1163 by Martin Pool
- split ExternalCommand class into its own file
16
6379.6.3 by Jelmer Vernooij
Use absolute_import.
17
from __future__ import absolute_import
18
1164 by Martin Pool
- doc
19
# TODO: Perhaps rather than mapping options and arguments back and
20
# forth, we should just pass in the whole argv, and allow
21
# ExternalCommands to handle it differently to internal commands?
22
1163 by Martin Pool
- split ExternalCommand class into its own file
23
1170 by Martin Pool
- make external commands work again
24
import os
1185.1.41 by Robert Collins
massive patch from Alexander Belchenko - many PEP8 fixes, removes unused function uuid
25
6624 by Jelmer Vernooij
Merge Python3 porting work ('py3 pokes')
26
from .commands import Command
1163 by Martin Pool
- split ExternalCommand class into its own file
27
28
29
class ExternalCommand(Command):
1170 by Martin Pool
- make external commands work again
30
    """Class to wrap external commands."""
1163 by Martin Pool
- split ExternalCommand class into its own file
31
1164 by Martin Pool
- doc
32
    @classmethod
1163 by Martin Pool
- split ExternalCommand class into its own file
33
    def find_command(cls, cmd):
34
        import os.path
35
        bzrpath = os.environ.get('BZRPATH', '')
36
37
        for dir in bzrpath.split(os.pathsep):
7143.15.2 by Jelmer Vernooij
Run autopep8.
38
            # Empty directories are not real paths
1185.31.3 by John Arbash Meinel
Fix ExternalCommand to not run random files in the current directory, unless it is truly in BZRPATH
39
            if not dir:
40
                continue
1185.31.49 by John Arbash Meinel
Some corrections using the new osutils.rename. **ALL TESTS PASS**
41
            # This needs to be os.path.join() or windows cannot
42
            # find the batch file that you are wanting to execute
43
            path = os.path.join(dir, cmd)
1163 by Martin Pool
- split ExternalCommand class into its own file
44
            if os.path.isfile(path):
45
                return ExternalCommand(path)
46
47
        return None
48
49
    def __init__(self, path):
50
        self.path = path
51
52
    def name(self):
1185.31.34 by John Arbash Meinel
Removing instances of os.sep
53
        return os.path.basename(self.path)
1170 by Martin Pool
- make external commands work again
54
55
    def run(self, *args, **kwargs):
56
        raise NotImplementedError('should not be called on %r' % self)
57
2367.2.1 by Robert Collins
Remove bzrlib 0.8 compatability where it was making the code unclear or messy. (Robert Collins)
58
    def run_argv_aliases(self, argv, alias_argv=None):
1534.7.154 by Aaron Bentley
Removed changes from bzr.ab 1529..1536
59
        return os.spawnv(os.P_WAIT, self.path, [self.path] + argv)
1170 by Martin Pool
- make external commands work again
60
61
    def help(self):
62
        m = 'external command from %s\n\n' % self.path
63
        pipe = os.popen('%s --help' % self.path)
64
        return m + pipe.read()