mirror of
https://github.com/Maks1mS/altlinux-autorepacked.git
synced 2025-10-15 07:04:51 +03:00
refactor
This commit is contained in:
81
autorepacked/common_providers/base_provider.py
Normal file
81
autorepacked/common_providers/base_provider.py
Normal file
@@ -0,0 +1,81 @@
|
||||
import os
|
||||
import shutil
|
||||
import tempfile
|
||||
import re
|
||||
|
||||
from autorepacked import utils
|
||||
|
||||
|
||||
def _get_file(directory):
|
||||
files_and_dirs = os.listdir(directory)
|
||||
files = [f for f in files_and_dirs if os.path.isfile(os.path.join(directory, f))]
|
||||
return os.path.join(directory, files[0]) if files else None
|
||||
|
||||
|
||||
class BaseProvider:
|
||||
def __init__(self, config):
|
||||
self.config = config
|
||||
|
||||
DOWNLOAD_URL = ''
|
||||
_name = ''
|
||||
|
||||
def get_name(self):
|
||||
return self._name
|
||||
|
||||
def get_version(self):
|
||||
url = utils.run([
|
||||
'epm',
|
||||
'--silent',
|
||||
'tool',
|
||||
'eget',
|
||||
'--get-real-url',
|
||||
self.get_download_url(),
|
||||
])
|
||||
|
||||
pattern = r'\d+\.\d+\.\d+'
|
||||
match = re.search(pattern, url)
|
||||
if match:
|
||||
return match.group()
|
||||
else:
|
||||
return "not found"
|
||||
|
||||
def get_download_url(self):
|
||||
return self.DOWNLOAD_URL
|
||||
|
||||
def download(self):
|
||||
download_directory = tempfile.mkdtemp()
|
||||
repacked_directory = tempfile.mkdtemp()
|
||||
|
||||
utils.run([
|
||||
'epm',
|
||||
'--silent',
|
||||
'tool',
|
||||
'eget',
|
||||
'-q',
|
||||
self.get_download_url(),
|
||||
], cwd=download_directory)
|
||||
|
||||
file = _get_file(download_directory)
|
||||
|
||||
utils.run([
|
||||
'epm',
|
||||
'--silent',
|
||||
'-y',
|
||||
'repack',
|
||||
file,
|
||||
], cwd=repacked_directory)
|
||||
|
||||
shutil.rmtree(download_directory)
|
||||
|
||||
file = _get_file(repacked_directory)
|
||||
|
||||
utils.run([
|
||||
'epm',
|
||||
'--silent',
|
||||
'repo',
|
||||
'pkgadd',
|
||||
self.config.get('repo_path'),
|
||||
file,
|
||||
], cwd=repacked_directory)
|
||||
|
||||
shutil.rmtree(repacked_directory)
|
39
autorepacked/common_providers/github_releases_provider.py
Normal file
39
autorepacked/common_providers/github_releases_provider.py
Normal file
@@ -0,0 +1,39 @@
|
||||
import re
|
||||
|
||||
from autorepacked import utils
|
||||
from autorepacked.common_providers.base_provider import BaseProvider
|
||||
|
||||
|
||||
class GithubReleasesProvider(BaseProvider):
|
||||
_repo = ''
|
||||
|
||||
def _last_release_url(self):
|
||||
return utils.run([
|
||||
'epm',
|
||||
'--silent',
|
||||
'tool',
|
||||
'eget',
|
||||
'--get-real-url',
|
||||
f'https://github.com/{self._repo}/releases/latest'
|
||||
])
|
||||
|
||||
def _last_tag_name(self):
|
||||
return self.get_version()
|
||||
|
||||
def _get_release_filename(self):
|
||||
return ''
|
||||
|
||||
def get_version(self):
|
||||
url = self._last_release_url()
|
||||
|
||||
pattern = r'\d+\.\d+\.\d+'
|
||||
match = re.search(pattern, url)
|
||||
if match:
|
||||
return match.group()
|
||||
else:
|
||||
return "not found"
|
||||
|
||||
def get_download_url(self):
|
||||
return (f"https://github.com/"
|
||||
f"{self._repo}/releases/download/"
|
||||
f"{self._last_tag_name()}/{self._get_release_filename()}")
|
Reference in New Issue
Block a user