mirror of
https://github.com/spalencsar/bearhub.git
synced 2026-07-08 14:24:15 +02:00
installing nativefier
This commit is contained in:
@@ -7,3 +7,6 @@ BIN_PATH = '{}/.local/share/bauh/web'.format(HOME_PATH)
|
|||||||
NODE_DIR_PATH = '{}/node'.format(BIN_PATH)
|
NODE_DIR_PATH = '{}/node'.format(BIN_PATH)
|
||||||
NODE_BIN_PATH = '{}/bin/node'.format(NODE_DIR_PATH)
|
NODE_BIN_PATH = '{}/bin/node'.format(NODE_DIR_PATH)
|
||||||
NPM_BIN_PATH = '{}/bin/npm'.format(NODE_DIR_PATH)
|
NPM_BIN_PATH = '{}/bin/npm'.format(NODE_DIR_PATH)
|
||||||
|
NODE_MODULES_PATH = '{}/node_modules'.format(BIN_PATH)
|
||||||
|
NATIVEFIER_BIN_PATH = '{}/.bin/nativefier'.format(NODE_MODULES_PATH)
|
||||||
|
|
||||||
|
|||||||
@@ -98,7 +98,7 @@ class WebApplicationManager(SoftwareManager):
|
|||||||
|
|
||||||
def prepare(self):
|
def prepare(self):
|
||||||
if bool(int(os.getenv('BAUH_WEB_UPDATE_NODE', 1))):
|
if bool(int(os.getenv('BAUH_WEB_UPDATE_NODE', 1))):
|
||||||
Thread(daemon=True, target=self.node_updater.update_node).start()
|
Thread(daemon=True, target=self.node_updater.update_environment).start()
|
||||||
|
|
||||||
def list_updates(self, internet_available: bool) -> List[PackageUpdate]:
|
def list_updates(self, internet_available: bool) -> List[PackageUpdate]:
|
||||||
pass
|
pass
|
||||||
|
|||||||
@@ -2,13 +2,15 @@ import logging
|
|||||||
import os
|
import os
|
||||||
import shutil
|
import shutil
|
||||||
import tarfile
|
import tarfile
|
||||||
|
import traceback
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
from bauh.api.abstract.download import FileDownloader
|
from bauh.api.abstract.download import FileDownloader
|
||||||
from bauh.api.abstract.handler import ProcessWatcher
|
from bauh.api.abstract.handler import ProcessWatcher
|
||||||
from bauh.api.exception import NoInternetException
|
from bauh.api.exception import NoInternetException
|
||||||
from bauh.commons import system
|
from bauh.commons import system
|
||||||
from bauh.gems.web import BIN_PATH, NODE_DIR_PATH, NODE_BIN_PATH
|
from bauh.commons.system import new_subprocess, SimpleProcess, ProcessHandler
|
||||||
|
from bauh.gems.web import BIN_PATH, NODE_DIR_PATH, NODE_BIN_PATH, NPM_BIN_PATH, NODE_MODULES_PATH, NATIVEFIER_BIN_PATH
|
||||||
from bauh.view.util.translation import I18n
|
from bauh.view.util.translation import I18n
|
||||||
|
|
||||||
|
|
||||||
@@ -42,7 +44,7 @@ class NodeUpdater:
|
|||||||
extracted_file = '{}/{}'.format(BIN_PATH, tf.getnames()[0])
|
extracted_file = '{}/{}'.format(BIN_PATH, tf.getnames()[0])
|
||||||
|
|
||||||
os.rename(extracted_file, NODE_DIR_PATH)
|
os.rename(extracted_file, NODE_DIR_PATH)
|
||||||
|
return True
|
||||||
except:
|
except:
|
||||||
self.logger.error('Could not extract {}'.format(tarf_path))
|
self.logger.error('Could not extract {}'.format(tarf_path))
|
||||||
return False
|
return False
|
||||||
@@ -88,3 +90,53 @@ class NodeUpdater:
|
|||||||
except:
|
except:
|
||||||
self.logger.error('Could not delete the dir {}'.format(NODE_DIR_PATH))
|
self.logger.error('Could not delete the dir {}'.format(NODE_DIR_PATH))
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
def _install_nativefier(self, handler: ProcessHandler) -> bool:
|
||||||
|
self.logger.info("Installing nativefier")
|
||||||
|
# TODO freeze specific version
|
||||||
|
proc = SimpleProcess([NPM_BIN_PATH, 'install', 'nativefier'], cwd=BIN_PATH)
|
||||||
|
|
||||||
|
if handler:
|
||||||
|
return handler.handle_simple(proc)[0]
|
||||||
|
else:
|
||||||
|
proc.instance.wait()
|
||||||
|
|
||||||
|
if self._is_nativefier_installed():
|
||||||
|
self.logger.info("nativefier installed")
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
self.logger.error("Could not install nativefier")
|
||||||
|
return False
|
||||||
|
|
||||||
|
def _is_nativefier_installed(self) -> bool:
|
||||||
|
try:
|
||||||
|
return bool(system.run_cmd('{} --version'.format(NATIVEFIER_BIN_PATH)))
|
||||||
|
except:
|
||||||
|
self.logger.error("Could not determine the installed nativefier version")
|
||||||
|
traceback.print_exc()
|
||||||
|
return False
|
||||||
|
|
||||||
|
def install_nativefier(self, remove_modules: bool = False, handler: ProcessHandler = None) -> bool:
|
||||||
|
self.logger.info("Preparing to install nativefier")
|
||||||
|
|
||||||
|
if remove_modules and os.path.exists(NODE_MODULES_PATH):
|
||||||
|
self.logger.info('Removing old dir {}'.format(NODE_MODULES_PATH))
|
||||||
|
try:
|
||||||
|
shutil.rmtree(NODE_MODULES_PATH)
|
||||||
|
except:
|
||||||
|
self.logger.error('Could not remove dir {}. Aborting...'.format(NODE_MODULES_PATH))
|
||||||
|
return False
|
||||||
|
|
||||||
|
return self._install_nativefier(handler)
|
||||||
|
else:
|
||||||
|
if not self._is_nativefier_installed():
|
||||||
|
return self._install_nativefier(handler)
|
||||||
|
|
||||||
|
self.logger.info("Nativefier is already installed")
|
||||||
|
return True
|
||||||
|
|
||||||
|
def update_environment(self, handler: ProcessHandler = None):
|
||||||
|
if not self.update_node(handler.watcher if handler else None):
|
||||||
|
return False
|
||||||
|
|
||||||
|
return self.install_nativefier(handler=handler)
|
||||||
|
|||||||
Reference in New Issue
Block a user