Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
Returns
-------
A list of `WatchHelper` objects.
"""
parent = pjoin(HERE, '..')
if not osp.exists(pjoin(parent, 'node_modules')):
yarn_proc = Process(['node', YARN_PATH], cwd=parent, logger=logger)
yarn_proc.wait()
logger = logger or logging.getLogger('jupyterlab')
ts_dir = osp.realpath(osp.join(HERE, '..', 'packages', 'metapackage'))
# Run typescript watch and wait for compilation.
ts_regex = r'.* Compilation complete\. Watching for file changes\.'
ts_proc = WatchHelper(['node', YARN_PATH, 'run', 'watch'],
cwd=ts_dir, logger=logger, startup_regex=ts_regex)
# Run the metapackage file watcher.
tsf_regex = 'Watching the metapackage files...'
tsf_proc = WatchHelper(['node', YARN_PATH, 'run', 'watch:files'],
cwd=ts_dir, logger=logger, startup_regex=tsf_regex)
# Run webpack watch and wait for compilation.
wp_proc = WatchHelper(['node', YARN_PATH, 'run', 'watch'],
cwd=DEV_DIR, logger=logger,
startup_regex=WEBPACK_EXPECT)
return [ts_proc, tsf_proc, wp_proc]
if not osp.exists(pjoin(parent, 'node_modules')):
yarn_proc = Process(['node', YARN_PATH], cwd=parent, logger=logger)
yarn_proc.wait()
logger = logger or logging.getLogger('jupyterlab')
ts_dir = osp.realpath(osp.join(HERE, '..', 'packages', 'metapackage'))
# Run typescript watch and wait for compilation.
ts_regex = r'.* Compilation complete\. Watching for file changes\.'
ts_proc = WatchHelper(['node', YARN_PATH, 'run', 'watch'],
cwd=ts_dir, logger=logger, startup_regex=ts_regex)
# Run the metapackage file watcher.
tsf_regex = 'Watching the metapackage files...'
tsf_proc = WatchHelper(['node', YARN_PATH, 'run', 'watch:files'],
cwd=ts_dir, logger=logger, startup_regex=tsf_regex)
# Run webpack watch and wait for compilation.
wp_proc = WatchHelper(['node', YARN_PATH, 'run', 'watch'],
cwd=DEV_DIR, logger=logger,
startup_regex=WEBPACK_EXPECT)
return [ts_proc, tsf_proc, wp_proc]
logger = logger or logging.getLogger('jupyterlab')
ts_dir = osp.realpath(osp.join(HERE, '..', 'packages', 'metapackage'))
# Run typescript watch and wait for compilation.
ts_regex = r'.* Compilation complete\. Watching for file changes\.'
ts_proc = WatchHelper(['node', YARN_PATH, 'run', 'watch'],
cwd=ts_dir, logger=logger, startup_regex=ts_regex)
# Run the metapackage file watcher.
tsf_regex = 'Watching the metapackage files...'
tsf_proc = WatchHelper(['node', YARN_PATH, 'run', 'watch:files'],
cwd=ts_dir, logger=logger, startup_regex=tsf_regex)
# Run webpack watch and wait for compilation.
wp_proc = WatchHelper(['node', YARN_PATH, 'run', 'watch'],
cwd=DEV_DIR, logger=logger,
startup_regex=WEBPACK_EXPECT)
return [ts_proc, tsf_proc, wp_proc]
Parameters
----------
cmd: list
The command to run.
startup_regex: string
The regex to wait for at startup.
logger: :class:`~logger.Logger`, optional
The logger instance.
cwd: string, optional
The cwd of the process.
env: dict, optional
The environment for the process.
kill_event: callable, optional
A function to call to check if we should abort.
"""
super(WatchHelper, self).__init__(cmd, logger=logger,
cwd=cwd, kill_event=kill_event, env=env)
if not pty:
self._stdout = self.proc.stdout
while 1:
line = self._stdout.readline().decode('utf-8')
if not line:
raise RuntimeError('Process ended improperly')
print(line.rstrip())
if re.match(startup_regex, line):
break
self._read_thread = threading.Thread(target=self._read_incoming)
self._read_thread.setDaemon(True)
self._read_thread.start()
def watch(self):
"""Start the application watcher and then run the watch in
the background.
"""
staging = pjoin(self.app_dir, 'staging')
self._populate_staging()
# Make sure packages are installed.
self._run(['node', YARN_PATH, 'install'], cwd=staging)
proc = WatchHelper(['node', YARN_PATH, 'run', 'watch'],
cwd=pjoin(self.app_dir, 'staging'),
startup_regex=WEBPACK_EXPECT,
logger=self.logger)
return [proc]