blob: aea1bb121daaf94cddb0e064f7e097652f6dcde2 [file] [log] [blame]
# -*- coding:utf-8 -*-
class ScanBase(object):
'''Skeleton class for performing a scan for one or more items
to check in a pkg directory or ebuild.'''
def __init__(self, **kwargs):
'''Class init
@param kwargs: an optional dictionary of common repository
wide parameters that may be required.
'''
# Since no two checks are identicle as to what kwargs are needed,
# this does not define any from it here.
super(ScanBase, self).__init__()
""" # sample check
def check_foo(self, **kwargs):
'''Class check skeleton function. Define this for a
specific check to perform.
@param kwargs: an optional dictionary of dynamic package and or ebuild
specific data that may be required. Dynamic data can
vary depending what checks have run before it.
So execution order can be important.
'''
# Insert the code for the check here
# It should return a dictionary of at least {'continue': False}
# The continue attribute will default to False if not returned.
# This will allow the loop to continue with the next check in the list.
# Include any additional dynamic data that needs to be added or updated.
return False # used as a continue True/False value
"""
@property
def runInPkgs(self):
'''Package level scans'''
# default no run (False) and empty list of functions to run
# override this method to define a function or
# functions to run in this process loop
# return a tuple of a boolean or boolean result and an ordered list
# of functions to run. ie: return (True, [self.check_foo])
# in this way, it can be dynamically determined at run time, if
# later stage scans are to be run.
# This class instance is maintaned for all stages, so data can be
# carried over from stage to stage
# next stage is runInEbuilds
return (False, [])
@property
def runInEbuilds(self):
'''Ebuild level scans'''
# default empty list of functions to run
# override this method to define a function or
# functions to run in this process loop
# return a tuple of a boolean or boolean result and an ordered list
# of functions to run. ie: return (True, [self.check_bar])
# in this way, it can be dynamically determined at run time, if
# later stage scans are to be run.
# This class instance is maintaned for all stages, so data can be
# carried over from stage to stage
# next stage is runInFinal
return (False, [])
@property
def runInFinal(self):
'''Final scans at the package level'''
# default empty list of functions to run
# override this method to define a function or
# functions to run in this process loop
# return a tuple of a boolean or boolean result and an ordered list
# of functions to run. ie: return (True, [self.check_baz])
# in this way, it can be dynamically determined at run time, if
# later stage scans are to be run.
# This class instance is maintaned for all stages, so data can be
# carried over from stage to stage
# runInFinal is currently the last stage of scans performed.
return (False, [])