##
## Copyright (c) 2006 Jason Dillon
##
## Licensed under the Apache License, Version 2.0 (the "License");
## you may not use this file except in compliance with the License.
## You may obtain a copy of the License at
##
## http://www.apache.org/licenses/LICENSE-2.0
##
## Unless required by applicable law or agreed to in writing, software
## distributed under the License is distributed on an "AS IS" BASIS,
## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
## See the License for the specific language governing permissions and
## limitations under the License.
##
##
## $Id: //guest/jason_dillon/p4spam/main/pylib/perforce/commands/review.py#3 $ $Date: 2006/04/12 $
##
import re
from perforce import P4Field, P4Code, P4Exception
from perforce.commands import ResultSupport, StreamedResultCommand
COMMAND_NAME = "review"
##
## ReviewCommand
##
class ReviewCommand(StreamedResultCommand):
def __init__(this, p4):
StreamedResultCommand.__init__(this, COMMAND_NAME, p4)
def createResult(this, entry):
return ReviewInfo(entry)
class ReviewInfo(ResultSupport):
# Change 25080 jdillon <jason@planet57.com> (Jason Dillon)
DATA_RE = re.compile(r'^Change (\S+) (\S+) <(\S+)> \((.+)\)$')
def __init__(this, entry):
assert entry[P4Field.CODE] in (P4Code.INFO, P4Code.STAT)
if entry[P4Field.CODE] == P4Code.INFO:
(changenumber, this.user, this.email, this.fullname) = \
this.DATA_RE.match(entry[P4Field.DATA]).groups()
this.changenumber = int(changenumber)
elif entry[P4Field.CODE] == P4Code.STAT:
this.changenumber = int(entry['change'])
this.user = entry['user']
this.fullname = entry['name']
this.email = entry['email']
def toString(this):
return "@%s %s <%s> (%s)" % (this.changenumber, this.user, this.email, this.fullname)
def __str__(this):
return this.toString()
def __repr__(this):
return this.toString()
##
## perforce.commands factory interface
##
def create(p4):
return ReviewCommand(p4)