def _ComputeRules(cls, targets, ignore_list=[]): """Computes the rules to be run given the input targets. Args: targets: list: List of input targets. Return: list: List of actual rules to be run. """ rules = [] for target in targets: ignore = Utils.IgnoreRule(target, ignore_list) if ignore: TermColor.Warning( 'Ignored target %s as anything with [%s] is ignored.' % (target, ignore)) continue if os.path.isdir(target): target = os.getcwd() if target == '.' else target rule = os.path.join(target, 'RULES') if os.path.isfile(rule): rules += [Utils.RuleNormalizedName(rule)] else: TermColor.Warning('No RULES file in directory: %s' % target) elif os.path.isfile(target): rules += [ Utils.RuleNormalizedName(os.path.splitext(target)[0]) ] elif os.path.basename(target) == '...': dir = os.path.dirname(target) if not dir: dir = os.getcwd() dir = os.path.dirname( Utils.RuleNormalizedName(os.path.join(dir, 'RULES'))) rules += Utils.GetRulesFilesFromSubdirs(dir, ignore_list) else: rules += [Utils.RuleNormalizedName(target)] temp_list = [] seen = set() for rule in rules: if rule in seen: continue temp_list += [rule] seen |= set([rule]) rules = [] for rule in temp_list: if ((os.path.basename(rule) != 'RULES') and (os.path.join(os.path.dirname(rule), 'RULES') in seen)): continue rules += [rule] return rules
def Expand(cls, name): """Expand a file sname based on basedir. Args: name: string: The name of the rule. Exceptions: RulesParseError: Raises exception if parsing fails. """ sname = name.strip() if not sname: err_str = 'Empty names are not allowed in RULES specification' TermColor.Error(err_str) raise RulesParseError(err_str) if not cls.basedir: # no basedir specified return sname elif sname[0] == '/': # absolute path return Utils.RuleNormalizedName(sname) else: # relative path return Utils.RuleNormalizedName(os.path.join(cls.basedir, sname))
def __init__(self, rule_name): """initializes the state Args: rule_name (string) - the rule name Raises: UnsupportedRuleError: raises exception if the rule type is not yet supported. add to the RULE_TYPES lists """ # Create the user friendly link to bin dir if it doesn't already exist. FileUtils.CreateLink(FileUtils.GetEDir(), FileUtils.GetBinDir()) rule_name = Utils.RuleNormalizedName(rule_name) Rules.LoadRule(rule_name) self._rule = Rules.GetRule(rule_name) if not self._rule['_type'] in Packager.RULE_PACKAGER: err = 'Rule type %s not supported' % self._rule._type TermColor.Error(err) raise UnsupportedRuleError(err) self._packager = Packager.RULE_PACKAGER[self._rule['_type']]