~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/builtins.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2008-06-05 04:05:05 UTC
  • mfrom: (3473.1.1 ianc-integration)
  • Revision ID: pqm@pqm.ubuntu.com-20080605040505-i9kqxg2fps2qjdi0
Add the 'alias' command (Tim Penhey)

Show diffs side-by-side

added added

removed removed

Lines of Context:
2541
2541
        print branch.nick
2542
2542
 
2543
2543
 
 
2544
class cmd_alias(Command):
 
2545
    """Set/unset and display aliases.
 
2546
 
 
2547
    :Examples:
 
2548
        Show the current aliases::
 
2549
 
 
2550
            bzr alias
 
2551
 
 
2552
        Show the alias specified for 'll'::
 
2553
 
 
2554
            bzr alias ll
 
2555
 
 
2556
        Set an alias for 'll'::
 
2557
 
 
2558
            bzr alias ll="log --line -r-10..-1"
 
2559
 
 
2560
        To remove an alias for 'll'::
 
2561
 
 
2562
            bzr alias --remove ll
 
2563
 
 
2564
    """
 
2565
    takes_args = ['name?']
 
2566
    takes_options = [
 
2567
        Option('remove', help='Remove the alias.'),
 
2568
        ]
 
2569
 
 
2570
    def run(self, name=None, remove=False):
 
2571
        if remove:
 
2572
            self.remove_alias(name)
 
2573
        elif name is None:
 
2574
            self.print_aliases()
 
2575
        else:
 
2576
            equal_pos = name.find('=')
 
2577
            if equal_pos == -1:
 
2578
                self.print_alias(name)
 
2579
            else:
 
2580
                self.set_alias(name[:equal_pos], name[equal_pos+1:])
 
2581
 
 
2582
    def remove_alias(self, alias_name):
 
2583
        if alias_name is None:
 
2584
            raise errors.BzrCommandError(
 
2585
                'bzr alias --remove expects an alias to remove.')
 
2586
        # If alias is not found, print something like:
 
2587
        # unalias: foo: not found
 
2588
        c = config.GlobalConfig()
 
2589
        c.unset_alias(alias_name)
 
2590
 
 
2591
    @display_command
 
2592
    def print_aliases(self):
 
2593
        """Print out the defined aliases in a similar format to bash."""
 
2594
        aliases = config.GlobalConfig().get_aliases()
 
2595
        for key, value in sorted(aliases.iteritems()):
 
2596
            self.outf.write('bzr alias %s="%s"\n' % (key, value))
 
2597
 
 
2598
    @display_command
 
2599
    def print_alias(self, alias_name):
 
2600
        from bzrlib.commands import get_alias
 
2601
        alias = get_alias(alias_name)
 
2602
        if alias is None:
 
2603
            self.outf.write("bzr alias: %s: not found\n" % alias_name)
 
2604
        else:
 
2605
            self.outf.write(
 
2606
                'bzr alias %s="%s"\n' % (alias_name, ' '.join(alias)))
 
2607
 
 
2608
    def set_alias(self, alias_name, alias_command):
 
2609
        """Save the alias in the global config."""
 
2610
        c = config.GlobalConfig()
 
2611
        c.set_alias(alias_name, alias_command)
 
2612
 
 
2613
 
2544
2614
class cmd_selftest(Command):
2545
2615
    """Run internal test suite.
2546
2616