mirror of
https://github.com/spalencsar/bearhub.git
synced 2026-07-06 22:54:16 +02:00
[wgem] beginning install
This commit is contained in:
@@ -7,8 +7,10 @@ from bauh.api.abstract.controller import SoftwareManager, SearchResult
|
||||
from bauh.api.abstract.disk import DiskCacheLoader
|
||||
from bauh.api.abstract.handler import ProcessWatcher
|
||||
from bauh.api.abstract.model import SoftwarePackage, PackageAction, PackageSuggestion, PackageUpdate, PackageHistory
|
||||
from bauh.gems.web import npm
|
||||
from bauh.gems.web.environment import NodeUpdater
|
||||
from bauh.api.abstract.view import MessageType
|
||||
from bauh.commons.html import bold
|
||||
from bauh.commons.system import ProcessHandler
|
||||
from bauh.gems.web.environment import EnvironmentUpdater
|
||||
from bauh.gems.web.model import WebApplication
|
||||
|
||||
try:
|
||||
@@ -27,12 +29,14 @@ except:
|
||||
|
||||
class WebApplicationManager(SoftwareManager):
|
||||
|
||||
def __init__(self, context: ApplicationContext):
|
||||
def __init__(self, context: ApplicationContext, env_updater: Thread = None):
|
||||
super(WebApplicationManager, self).__init__(context=context)
|
||||
self.http_client = context.http_client
|
||||
self.node_updater = NodeUpdater(logger=context.logger, http_client=context.http_client,
|
||||
file_downloader=context.file_downloader, i18n=context.i18n)
|
||||
self.node_updater = EnvironmentUpdater(logger=context.logger, http_client=context.http_client,
|
||||
file_downloader=context.file_downloader, i18n=context.i18n)
|
||||
self.enabled = True
|
||||
self.i18n = context.i18n
|
||||
self.env_updater = env_updater
|
||||
|
||||
def search(self, words: str, disk_loader: DiskCacheLoader, limit: int = -1, is_url: bool = False) -> SearchResult:
|
||||
res = SearchResult([], [], 0)
|
||||
@@ -44,7 +48,7 @@ class WebApplicationManager(SoftwareManager):
|
||||
soup = BeautifulSoup(url_res.text, 'lxml', parse_only=SoupStrainer('head'))
|
||||
|
||||
name_tag = soup.head.find('meta', attrs={'name': 'application-name'})
|
||||
name = name_tag.get('content') if name_tag else words.split('.')[0]
|
||||
name = name_tag.get('content') if name_tag else words.split('.')[0].split('://')[1]
|
||||
|
||||
desc_tag = soup.head.find('meta', attrs={'name': 'description'})
|
||||
desc = desc_tag.get('content') if desc_tag else words
|
||||
@@ -82,8 +86,18 @@ class WebApplicationManager(SoftwareManager):
|
||||
def get_history(self, pkg: SoftwarePackage) -> PackageHistory:
|
||||
pass
|
||||
|
||||
def install(self, pkg: SoftwarePackage, root_password: str, watcher: ProcessWatcher) -> bool:
|
||||
pass
|
||||
def install(self, pkg: WebApplication, root_password: str, watcher: ProcessWatcher) -> bool:
|
||||
if self.env_updater and self.env_updater.is_alive():
|
||||
watcher.change_substatus(self.i18n['web.waiting.env_updater'])
|
||||
self.env_updater.join()
|
||||
|
||||
watcher.change_substatus(self.i18n['web.env.checking'])
|
||||
handler = ProcessHandler(watcher)
|
||||
if not self._update_environment(handler=handler):
|
||||
watcher.show_message(title=self.i18n['error'], body=self.i18n['web.env.error'].format(bold(pkg.name)), type_=MessageType.ERROR)
|
||||
return False
|
||||
|
||||
return True
|
||||
|
||||
def is_enabled(self) -> bool:
|
||||
return self.enabled
|
||||
@@ -97,12 +111,13 @@ class WebApplicationManager(SoftwareManager):
|
||||
def requires_root(self, action: str, pkg: SoftwarePackage):
|
||||
return False
|
||||
|
||||
def _update_environment(self):
|
||||
self.node_updater.update_environment(self.context.is_system_x86_64())
|
||||
def _update_environment(self, handler: ProcessHandler = None) -> bool:
|
||||
return self.node_updater.update_environment(self.context.is_system_x86_64(), handler=handler)
|
||||
|
||||
def prepare(self):
|
||||
if bool(int(os.getenv('BAUH_WEB_UPDATE_NODE', 1))):
|
||||
Thread(daemon=True, target=self._update_environment).start()
|
||||
self.env_updater = Thread(daemon=True, target=self._update_environment)
|
||||
self.env_updater.start()
|
||||
|
||||
def list_updates(self, internet_available: bool) -> List[PackageUpdate]:
|
||||
pass
|
||||
|
||||
Reference in New Issue
Block a user