def start(self): self.needs_restart = False profile = self.create_profile() shutil.rmtree(os.path.join(profile.path, self.client, 'better-bibtex'), ignore_errors=True) if self.client == 'zotero': datadir_profile = '-datadir profile' else: utils.print('\n\n** WORKAROUNDS FOR JURIS-M IN PLACE -- SEE https://github.com/Juris-M/zotero/issues/34 **\n\n') datadir_profile = '' cmd = f'{shlex.quote(profile.binary)} -P {shlex.quote(profile.name)} -jsconsole -ZoteroDebugText {datadir_profile} {self.redir} {shlex.quote(profile.path + ".log")} 2>&1' utils.print(f'Starting {self.client}: {cmd}') self.proc = subprocess.Popen(cmd, shell=True) utils.print(f'{self.client} started: {self.proc.pid}') ready = False self.config.stash() self.config.timeout = 2 with benchmark(f'starting {self.client}') as bm: posted = False for _ in redo.retrier(attempts=120,sleeptime=1): utils.print('connecting... (%.2fs)' % (bm.elapsed,)) try: ready = self.execute(""" if (!Zotero.BetterBibTeX) { Zotero.debug('{better-bibtex:debug bridge}: startup: BetterBibTeX not loaded') return false; } if (!Zotero.BetterBibTeX.ready) { if (typeof Zotero.BetterBibTeX.ready === 'boolean') { Zotero.debug('{better-bibtex:debug bridge}: startup: BetterBibTeX initialization error') } else { Zotero.debug('{better-bibtex:debug bridge}: startup: BetterBibTeX not initialized') } return false; } Zotero.debug('{better-bibtex:debug bridge}: startup: waiting for BetterBibTeX ready...') await Zotero.BetterBibTeX.ready; if (testing && !Zotero.Prefs.get('translators.better-bibtex.testing')) throw new Error('translators.better-bibtex.testing not set!') Zotero.debug('{better-bibtex:debug bridge}: startup: BetterBibTeX ready!'); return true; """, testing = self.testing) if ready: break except (urllib.error.HTTPError, urllib.error.URLError,socket.timeout): pass if bm.elapsed > 2000 and not posted: posted = post_log() assert ready, f'{self.client} did not start' self.config.pop() if self.import_at_start: self.execute(f'return await Zotero.BetterBibTeX.TestSupport.importFile({json.dumps(self.import_at_start)})') self.import_at_start = None
def start(self): self.needs_restart = False profile = self.create_profile() cmd = f'{shlex.quote(profile.binary)} -P {shlex.quote(profile.name)} -jsconsole -ZoteroDebugText -datadir profile {self.redir} {shlex.quote(profile.path + ".log")} 2>&1' utils.print(f'Starting {self.client}: {cmd}') self.proc = subprocess.Popen(cmd, shell=True) utils.print(f'{self.client} started: {self.proc.pid}') ready = False self.config.stash() self.config.timeout = 2 with benchmark(f'starting {self.client}') as bm: posted = False for _ in redo.retrier(attempts=120, sleeptime=1): utils.print('connecting... (%.2fs)' % (bm.elapsed, )) try: ready = self.execute(""" if (!Zotero.BetterBibTeX) { Zotero.debug('{better-bibtex:debug bridge}: startup: BetterBibTeX not loaded') return false; } if (!Zotero.BetterBibTeX.ready) { if (typeof Zotero.BetterBibTeX.ready === 'boolean') { Zotero.debug('{better-bibtex:debug bridge}: startup: BetterBibTeX initialization error') } else { Zotero.debug('{better-bibtex:debug bridge}: startup: BetterBibTeX not initialized') } return false; } Zotero.debug('{better-bibtex:debug bridge}: startup: waiting for BetterBibTeX ready...') await Zotero.BetterBibTeX.ready; if (testing && !Zotero.Prefs.get('translators.better-bibtex.testing')) throw new Error('translators.better-bibtex.testing not set!') Zotero.debug('{better-bibtex:debug bridge}: startup: BetterBibTeX ready!'); return true; """, testing=self.testing) if ready: break except (urllib.error.HTTPError, urllib.error.URLError, socket.timeout): pass if bm.elapsed > 2000 and not posted: posted = post_log() assert ready, f'{self.client} did not start' self.config.pop()