counter.py #1

  • //
  • guest/
  • matthew_janulewicz/
  • p4spam-1.1/
  • pylib/
  • p4spam/
  • perforce/
  • commands/
  • counter.py
  • View
  • Commits
  • Open Download .zip Download (2 KB)
##
## 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)

# Change User Description Committed
#1 7731 Matthew Janulewicz Adding P4Spam 1.1 code from http://p4spam.sourceforge.net/wiki/Main_Page

"P4Spam is a Perforce change review daemon which spits out sexy HTML-styled notification emails."