Index: scm.py |
diff --git a/scm.py b/scm.py |
index c06049cd73b060377f76281e16371ab848a28bfb..998f9fb2661cc4b2a932d8aa1c9bfdb51aed1198 100644 |
--- a/scm.py |
+++ b/scm.py |
@@ -68,6 +68,38 @@ class GIT(object): |
return results |
@staticmethod |
+ def RunAndFilterOutput(args, |
+ in_directory, |
+ print_messages, |
+ print_stdout, |
+ filter): |
+ """Runs a command, optionally outputting to stdout. |
+ |
+ stdout is passed line-by-line to the given filter function. If |
+ print_stdout is true, it is also printed to sys.stdout as in Run. |
+ |
+ Args: |
+ args: A sequence of command line parameters to be passed. |
+ in_directory: The directory where svn is to be run. |
+ print_messages: Whether to print status messages to stdout about |
+ which commands are being run. |
+ print_stdout: Whether to forward program's output to stdout. |
+ filter: A function taking one argument (a string) which will be |
+ passed each line (with the ending newline character removed) of |
+ program's output for filtering. |
+ |
+ Raises: |
+ gclient_utils.Error: An error occurred while running the command. |
+ """ |
+ command = [GIT.COMMAND] |
+ command.extend(args) |
+ gclient_utils.SubprocessCallAndFilter(command, |
+ in_directory, |
+ print_messages, |
+ print_stdout, |
+ filter=filter) |
+ |
+ @staticmethod |
def GetEmail(repo_root): |
"""Retrieves the user email address if known.""" |
# We could want to look at the svn cred when it has a svn remote but it |
@@ -333,31 +365,26 @@ class SVN(object): |
print_messages, |
print_stdout, |
filter): |
- """Runs svn checkout, update, status, or diff, optionally outputting |
- to stdout. |
- |
- The first item in args must be either "checkout", "update", |
- "status", or "diff". |
+ """Runs a command, optionally outputting to stdout. |
- svn's stdout is passed line-by-line to the given filter function. If |
+ stdout is passed line-by-line to the given filter function. If |
print_stdout is true, it is also printed to sys.stdout as in Run. |
Args: |
- args: A sequence of command line parameters to be passed to svn. |
+ args: A sequence of command line parameters to be passed. |
in_directory: The directory where svn is to be run. |
print_messages: Whether to print status messages to stdout about |
- which Subversion commands are being run. |
- print_stdout: Whether to forward Subversion's output to stdout. |
+ which commands are being run. |
+ print_stdout: Whether to forward program's output to stdout. |
filter: A function taking one argument (a string) which will be |
passed each line (with the ending newline character removed) of |
- Subversion's output for filtering. |
+ program's output for filtering. |
Raises: |
- Error: An error occurred while running the svn command. |
+ gclient_utils.Error: An error occurred while running the command. |
""" |
command = [SVN.COMMAND] |
command.extend(args) |
- |
gclient_utils.SubprocessCallAndFilter(command, |
in_directory, |
print_messages, |