use pakage_regex_name from repos.json not a default value

This commit is contained in:
Quentin Rouland 2017-02-28 12:28:17 +01:00
parent f5bf91422a
commit 44f6b7fc17
3 changed files with 18 additions and 17 deletions

2
App.py
View File

@ -54,6 +54,6 @@ api.add_resource(
) )
if __name__ == '__main__': if __name__ == '__main__':
with PackageVersioning(PackageFinder(), json.load(open(app.config['REPOS_JSON_CONFIG_PATH']))) as pv: with PackageVersioning(json.load(open(app.config['REPOS_JSON_CONFIG_PATH']))) as pv:
pr.package_versioning = pv pr.package_versioning = pv
app.run() app.run()

View File

@ -3,8 +3,7 @@ import re
class PackageFinder: class PackageFinder:
def __init__(self, regex_package_name=r"^(?P<package_name>[^-]*)-(?P<version_major>\d+)(\.(" def __init__(self, regex_package_name):
r"?P<version_minor>\d+)|\.apk)(\.(?P<version_release>\d+)\.apk|\.apk)?$"):
self.pattern_package_name = re.compile(regex_package_name) self.pattern_package_name = re.compile(regex_package_name)
def find_packages(self, directory_path): def find_packages(self, directory_path):

View File

@ -7,7 +7,7 @@ import os
from flask import json from flask import json
from json import JSONDecodeError from json import JSONDecodeError
from utils.PackageFinder import InvalidPackageName from utils.PackageFinder import InvalidPackageName, PackageFinder
from utils.Tools import file_as_blockiter, hash_bytestr_iter from utils.Tools import file_as_blockiter, hash_bytestr_iter
from watchdog.events import FileSystemEventHandler from watchdog.events import FileSystemEventHandler
@ -40,10 +40,9 @@ class PackageVersioning(FileSystemEventHandler):
for o in self.__repos_obs: for o in self.__repos_obs:
o.join() o.join()
def __init__(self, package_finder, repos_json_conf, prefix_url_download="/download"): def __init__(self, repos_json_conf, prefix_url_download="/download"):
self.__repos_public = {} self.__repos_public = {}
self.__repos_private = {} self.__repos_private = {}
self.__package_finder = package_finder
self.__repos_json_conf = repos_json_conf self.__repos_json_conf = repos_json_conf
self.__repos_obs = [] self.__repos_obs = []
self.__prefix_url_download = prefix_url_download self.__prefix_url_download = prefix_url_download
@ -52,19 +51,22 @@ class PackageVersioning(FileSystemEventHandler):
def __update_directory(self): def __update_directory(self):
for p in self.__repos_json_conf: for p in self.__repos_json_conf:
self.__version_directory(p['directory_path'], p['name'], p['description']) self.__version_directory(p['directory_path'], p['name'], p['description'], p['package_regex_name'])
def __version_directory(self, directory_path, repo_name, repo_description): def __version_directory(self, directory_path, repo_name, repo_description, regex_package_name):
repo_public = {"repo_description": repo_description} repo_public = {"repo_description": repo_description, }
repo_private = {"directory_path": os.path.abspath(directory_path)} repo_private = {
"directory_path": os.path.abspath(directory_path),
"package_finder": PackageFinder(regex_package_name)
}
for filename in self.__package_finder.find_packages(directory_path): for filename in repo_private['package_finder'].find_packages(directory_path):
package_path = os.path.join(directory_path, filename) package_path = os.path.join(directory_path, filename)
package_name = self.__package_finder.get_package_name(filename) package_name = repo_private['package_finder'].get_package_name(filename)
version_major = self.__package_finder.get_version_major(filename) version_major = repo_private['package_finder'].get_version_major(filename)
version_minor = self.__package_finder.get_version_minor(filename) version_minor = repo_private['package_finder'].get_version_minor(filename)
version_release = self.__package_finder.get_version_release(filename) version_release = repo_private['package_finder'].get_version_release(filename)
version = (version_major, version_minor, version_release) version = (version_major, version_minor, version_release)
package_url = os.path.join(self.__prefix_url_download, repo_name, filename) package_url = os.path.join(self.__prefix_url_download, repo_name, filename)
pacakage_sha256 = hash_bytestr_iter(file_as_blockiter(open(package_path, "rb")), hashlib.sha256(), pacakage_sha256 = hash_bytestr_iter(file_as_blockiter(open(package_path, "rb")), hashlib.sha256(),
@ -138,9 +140,9 @@ class PackageVersioning(FileSystemEventHandler):
return package[str(last_version)] return package[str(last_version)]
def get_path_package(self, filename, repo_name=None): def get_path_package(self, filename, repo_name=None):
if not self.__package_finder.is_valid_filename(filename):
raise InvalidPackageName
_, _, repo_private = self.__get_repo(repo_name) _, _, repo_private = self.__get_repo(repo_name)
if not repo_private['package_finder'].is_valid_filename(filename):
raise InvalidPackageName
return os.path.join(repo_private['directory_path'], filename) return os.path.join(repo_private['directory_path'], filename)
def __get_repo(self, repo_name): def __get_repo(self, repo_name):