This repository has been archived on 2021-09-15. You can view files and clone it, but cannot push or open issues or pull requests.
RepoApi/utils/PackageFinder.py

38 lines
1.3 KiB
Python

import os
import re
class PackageFinder:
def __init__(self, regex_package_name=r"^(?P<package_name>[^-]*)-(?P<version_major>\d+)(\.("
r"?P<version_minor>\d+)|\.apk)(\.(?P<version_release>\d+)\.apk|\.apk)?$"):
self.pattern_package_name = re.compile(regex_package_name)
def find_packages(self, directory_path):
return [f for f in os.listdir(directory_path)
if os.path.isfile(os.path.join(directory_path, f)) and self.is_valid_filename(f)]
def get_package_name(self, filename):
return self.pattern_package_name.match(filename).group("package_name")
def get_version_major(self, filename):
return self.__match_int("version_major", filename)
def get_version_minor(self, filename):
return self.__match_int("version_minor", filename)
def get_version_release(self, filename):
return self.__match_int("version_release", filename)
def is_valid_filename(self, filename):
return self.pattern_package_name.match(filename)
def __match_int(self, group, filename):
match = self.pattern_package_name.match(filename).group(group)
if match is None:
return 0
return int(match)
class InvalidPackageName(Exception):
pass