##
## 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/describe.py#2 $ $Date: 2006/04/12 $
##
from perforce import P4Field, P4Code, P4Exception
from perforce.commands import ResultSupport, SingleResultCommand
COMMAND_NAME = "describe"
##
## DescribeCommand
##
class DescribeCommand(SingleResultCommand):
def __init__(this, p4):
SingleResultCommand.__init__(this, COMMAND_NAME, p4)
def createResult(this, entry):
return DescriptionInfo(entry)
##
## DescriptionInfo
##
class DescriptionInfo(ResultSupport):
def __init__(this, entry):
assert entry[P4Field.CODE] == P4Code.STAT
this.status = entry['status']
this.client = entry['client']
this.user = entry['user']
this.change = entry['change']
this.desc = entry['desc']
this.time = int(entry['time'])
##
## TODO: Include jobstatus
##
##
## TODO: Inlcude job<n>
##
files = []
i = 0
try:
while True:
files.append(FileInfo(entry, i))
i = i + 1
except KeyError:
pass
this.files = files
def toString(this):
return "%s %s %s %s %s %s %s" % (
this.status,
this.client,
this.user,
this.change,
this.desc,
this.time,
this.files
)
##
## FileInfo
##
class FileInfo(ResultSupport):
def __init__(this, entry, i):
assert entry[P4Field.CODE] == P4Code.STAT
this.i = i
this.action = entry["action%s" % i]
this.path = entry["depotFile%s" % i]
this.rev = int(entry["rev%s" % i])
this.type = entry["type%s" % i]
def toString(this):
return "[%s] %s %s#%s (%s)" % (
this.i,
this.action,
this.path,
this.rev,
this.type
)
##
## perforce.commands factory interface
##
def create(p4):
return DescribeCommand(p4)