~abentley/bzrtools/bzrtools.dev

« back to all changes in this revision

Viewing changes to shell.py

  • Committer: Aaron Bentley
  • Date: 2007-12-21 04:24:57 UTC
  • Revision ID: aaron.bentley@utoronto.ca-20071221042457-hermd6u3h4l0rhb4
Update NEWS

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
# Copyright (C) 2004, 2005 Aaron Bentley
2
 
# <aaron@aaronbentley.com>
 
2
# <aaron.bentley@utoronto.ca>
3
3
#
4
4
#    This program is free software; you can redistribute it and/or modify
5
5
#    it under the terms of the GNU General Public License as published by
24
24
import string
25
25
import sys
26
26
 
27
 
from bzrlib import osutils
28
27
from bzrlib.branch import Branch
29
 
from bzrlib.config import config_dir, ensure_config_dir_exists
30
 
from bzrlib.commands import get_cmd_object, all_command_names, get_alias
 
28
from bzrlib.commands import get_cmd_object, get_all_cmds, get_alias
31
29
from bzrlib.errors import BzrError
32
30
from bzrlib.workingtree import WorkingTree
33
31
 
86
84
 
87
85
 
88
86
class PromptCmd(cmd.Cmd):
89
 
 
90
87
    def __init__(self):
91
88
        cmd.Cmd.__init__(self)
92
89
        self.prompt = "bzr> "
97
94
        self.set_title()
98
95
        self.set_prompt()
99
96
        self.identchars += '-'
100
 
        ensure_config_dir_exists()
101
 
        self.history_file = osutils.pathjoin(config_dir(), 'shell-history')
102
 
        whitespace = ''.join(c for c in string.whitespace if c < chr(127))
103
 
        readline.set_completer_delims(whitespace)
 
97
        self.history_file = os.path.expanduser("~/.bazaar/shell-history")
 
98
        readline.set_completer_delims(string.whitespace)
104
99
        if os.access(self.history_file, os.R_OK) and \
105
100
            os.path.isfile(self.history_file):
106
101
            readline.read_history_file(self.history_file)
169
164
        self.default("help "+line)
170
165
 
171
166
    def default(self, line):
172
 
        try:
173
 
            args = shlex.split(line)
174
 
        except ValueError, e:
175
 
            print 'Parse error:', e
176
 
            return
177
 
 
 
167
        args = shlex.split(line)
178
168
        alias_args = get_alias(args[0])
179
169
        if alias_args is not None:
180
170
            args[0] = alias_args.pop(0)
229
219
def run_shell():
230
220
    try:
231
221
        prompt = PromptCmd()
232
 
        while True:
233
 
            try:
234
 
                try:
235
 
                    prompt.cmdloop()
236
 
                except KeyboardInterrupt:
237
 
                    print
238
 
            finally:
239
 
                prompt.write_history()
 
222
        try:
 
223
            prompt.cmdloop()
 
224
        finally:
 
225
            prompt.write_history()
240
226
    except StopIteration:
241
227
        pass
242
228
 
290
276
 
291
277
 
292
278
def iter_command_names(hidden=False):
293
 
    for real_cmd_name in all_command_names():
294
 
        cmd_obj = get_cmd_object(real_cmd_name)
295
 
        if not hidden and cmd_obj.hidden:
 
279
    for real_cmd_name, cmd_class in get_all_cmds():
 
280
        if not hidden and cmd_class.hidden:
296
281
            continue
297
 
        for name in [real_cmd_name] + cmd_obj.aliases:
 
282
        for name in [real_cmd_name] + cmd_class.aliases:
298
283
            # Don't complete on aliases that are prefixes of the canonical name
299
284
            if name == real_cmd_name or not real_cmd_name.startswith(name):
300
285
                yield name