/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
1164 by Martin Pool
- doc
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
1163 by Martin Pool
- split ExternalCommand class into its own file
21
1170 by Martin Pool
- make external commands work again
22
import os
1185.1.41 by Robert Collins
massive patch from Alexander Belchenko - many PEP8 fixes, removes unused function uuid
23
6624 by Jelmer Vernooij
Merge Python3 porting work ('py3 pokes')
24
from .commands import Command
1163 by Martin Pool
- split ExternalCommand class into its own file
25
26
27
class ExternalCommand(Command):
1170 by Martin Pool
- make external commands work again
28
    """Class to wrap external commands."""
1163 by Martin Pool
- split ExternalCommand class into its own file
29
1164 by Martin Pool
- doc
30
    @classmethod
1163 by Martin Pool
- split ExternalCommand class into its own file
31
    def find_command(cls, cmd):
32
        import os.path
33
        bzrpath = os.environ.get('BZRPATH', '')
34
35
        for dir in bzrpath.split(os.pathsep):
7143.15.2 by Jelmer Vernooij
Run autopep8.
36
            # 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
37
            if not dir:
38
                continue
1185.31.49 by John Arbash Meinel
Some corrections using the new osutils.rename. **ALL TESTS PASS**
39
            # This needs to be os.path.join() or windows cannot
40
            # find the batch file that you are wanting to execute
41
            path = os.path.join(dir, cmd)
1163 by Martin Pool
- split ExternalCommand class into its own file
42
            if os.path.isfile(path):
43
                return ExternalCommand(path)
44
45
        return None
46
47
    def __init__(self, path):
48
        self.path = path
49
50
    def name(self):
1185.31.34 by John Arbash Meinel
Removing instances of os.sep
51
        return os.path.basename(self.path)
1170 by Martin Pool
- make external commands work again
52
53
    def run(self, *args, **kwargs):
54
        raise NotImplementedError('should not be called on %r' % self)
55
2367.2.1 by Robert Collins
Remove bzrlib 0.8 compatability where it was making the code unclear or messy. (Robert Collins)
56
    def run_argv_aliases(self, argv, alias_argv=None):
1534.7.154 by Aaron Bentley
Removed changes from bzr.ab 1529..1536
57
        return os.spawnv(os.P_WAIT, self.path, [self.path] + argv)
1170 by Martin Pool
- make external commands work again
58
59
    def help(self):
60
        m = 'external command from %s\n\n' % self.path
61
        pipe = os.popen('%s --help' % self.path)
62
        return m + pipe.read()