def make_version(static_map, fingerprint_map, reverse=True): """ return version expression. compare to each version fingerprint. make compare expressions. like [(">=", 'v2.3.3.3')] """ version_compare_set = set() key_lst = fingerprint_map.keys() version_lst = sorted([str2version(ver_) for ver_ in key_lst], reverse=reverse) # head version in reverse version list is different head_version_str = version_lst[0].vstring fingerprint = head_fingerprint = fingerprint_map.get(head_version_str) match_head = match(static_map, head_fingerprint) if match_head and reverse: version_compare_set.add(('>', version_lst[1].vstring)) elif match_head and not reverse: version_compare_set.add(('>=', head_version_str)) for version in version_lst[1:]: logger.debug('create operator in version: %s', version.vstring) fingerprint.update(fingerprint_map.get(version.vstring)) if match(static_map, fingerprint): operator = OPERATOR_MAP.get(reverse) version_compare_set.add((operator, version.vstring)) logger.verbose('create version opreator: %s %s', operator, version.vstring) logger.debug("operator: %s", version_compare_set) return version_compare_set
def _git_exec(self, *args, decode=True): """Done 'git' command.""" master_program = 'git' command_tup = (master_program, *args) logger.debug('runing command: %s', ' '.join(command_tup)) output = subprocess.check_output(command_tup, cwd=self.target_project_path, stderr=subprocess.STDOUT) return output.decode() if decode else output