## ## 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: counter.py 26 2006-04-15 06:25:53Z user57 $ ## from p4spam.perforce import P4Field, P4Code, P4Exception from p4spam.perforce.commands import ResultSupport, SingleResultCommand COMMAND_NAME = "counter" ## ## CounterCommand ## class CounterCommand(SingleResultCommand): def __init__(this, p4): SingleResultCommand.__init__(this, COMMAND_NAME, p4) def createResult(this, entry): return CounterInfo(entry) ## ## CounterInfo ## class CounterInfo(ResultSupport): name = None value = None def __init__(this, entry): # STAT is for processing `counters` output if entry[P4Field.CODE] == P4Code.STAT: this.value = int(entry['value']) this.name = entry['counter'] # INFO is for processing `counter` output elif entry[P4Field.CODE] == P4Code.INFO: try: this.value = int(entry[P4Field.DATA]) except ValueError: # probably was a set pass else: raise "Unexpected data: %s" % str(entry) def toString(this): if this.name == None: return "%s" % this.value else: return "%s = %s" % (this.name, this.value) ## ## perforce.commands factory interface ## def create(p4): return CounterCommand(p4)