This commit is contained in:
2024-01-17 13:47:54 +03:00
parent 657c424bf1
commit dc54853fc7
8 changed files with 75 additions and 27 deletions

View 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)

View 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()}")