This commit is contained in:
2024-01-17 15:36:11 +03:00
parent dc54853fc7
commit 85cda3e705
7 changed files with 87 additions and 39 deletions

View File

@@ -13,6 +13,8 @@ def _get_file(directory):
class BaseProvider:
disabled = False
def __init__(self, config):
self.config = config
@@ -23,11 +25,7 @@ class BaseProvider:
return self._name
def get_version(self):
url = utils.run([
'epm',
'--silent',
'tool',
'eget',
url = utils.eget([
'--get-real-url',
self.get_download_url(),
])
@@ -42,24 +40,27 @@ class BaseProvider:
def get_download_url(self):
return self.DOWNLOAD_URL
def get_download_name(self):
return ""
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)
args = []
download_name = self.get_download_name()
if download_name:
args += ["-O", download_name]
args += [self.get_download_url()]
utils.eget(args, cwd=download_directory)
file = _get_file(download_directory)
utils.run([
'epm',
'--silent',
utils.epm([
'-y',
'repack',
file,
@@ -69,9 +70,7 @@ class BaseProvider:
file = _get_file(repacked_directory)
utils.run([
'epm',
'--silent',
utils.epm([
'repo',
'pkgadd',
self.config.get('repo_path'),

View File

@@ -8,11 +8,7 @@ class GithubReleasesProvider(BaseProvider):
_repo = ''
def _last_release_url(self):
return utils.run([
'epm',
'--silent',
'tool',
'eget',
return utils.eget([
'--get-real-url',
f'https://github.com/{self._repo}/releases/latest'
])

View File

@@ -0,0 +1,35 @@
import json
import urllib
from autorepacked.common_providers.base_provider import BaseProvider
from urllib.request import Request, urlopen
class SnapProvider(BaseProvider):
_package_name = "package"
_channel = "stable"
_arch = "amd64"
def _get_snap_info(self):
request = Request(
f"http://api.snapcraft.io/v2/snaps/info/{self._package_name}",
headers={"Content-Type": "application/json", "Snap-Device-Series": "16"},
)
response = urlopen(request).read()
return json.loads(response)
def get_download_name(self):
return f"{self._package_name}-{self.get_version()}.snap"
def get_version(self):
snap_info = self._get_snap_info()
for channel_map in snap_info["channel-map"]:
if (channel_map["channel"]["name"] == self._channel
and channel_map["channel"]["architecture"] == self._arch):
return channel_map['version']
def get_download_url(self):
snap_info = self._get_snap_info()
for channel_map in snap_info["channel-map"]:
if (channel_map["channel"]["name"] == self._channel
and channel_map["channel"]["architecture"] == self._arch):
return channel_map['download']['url']