mirror of
https://github.com/Maks1mS/altlinux-autorepacked.git
synced 2025-10-15 07:04:51 +03:00
wip
This commit is contained in:
@@ -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'),
|
||||
|
@@ -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'
|
||||
])
|
||||
|
35
autorepacked/common_providers/snap_provider.py
Normal file
35
autorepacked/common_providers/snap_provider.py
Normal 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']
|
Reference in New Issue
Block a user