Skip to content

Latest commit

 

History

History
47 lines (32 loc) · 1.48 KB

vcsrc.rst

File metadata and controls

47 lines (32 loc) · 1.48 KB

vcsrc

During commands execution, vcs tries to build a module specified at :setting:`VCSRC_PATH`. This would fail silently if module does not exist - user is responsible for creating own vcsrc file.

Creating own commands

User may create his own commands and add them dynamically by pointing them at vcs.cli.registry map. Here is very simple example of how vcsrc file could look like:

from vcs import cli

class AuthorsCommand(cli.ChangesetCommand):

    def pre_process(self, repo):
        self.authors = {}

    def handle_changeset(self, changeset, **options):
        if changeset.author not in self.authors:
            self.authors[changeset.author] = 0
        self.authors[changeset.author] += 1

    def post_process(self, repo, **options):
        for author, changesets_number in self.authors.iteritems():
            message = '%s : %s' % (author, changesets_number)
            self.stdout.write(message + '\n')

cli.registry['authors'] = AuthorsCommand

This would create AuthorsCommand that is mapped to authors subcommand. In order to run the command user would enter repository and type into terminal:

vcs authors

As we have subclassed :command:`ChangesetCommand`, we also got all the changesets specified options. User may see whole help with following command:

vcs authors -h

Note

Please refer to :ref:`api-cli` for more information about the basic commands.