1#!/usr/bin/env python
2# coding: utf-8
3
4# Copyright (c) Jupyter Development Team.
5# Distributed under the terms of the Modified BSD License.
6from os.path import join as pjoin
7import json
8import os
9import os.path as osp
10import sys
11
12from setuptools import setup
13
14NAME = "jupyterlab"
15HERE = osp.dirname(osp.abspath(__file__))
16
17ensured_targets = [
18    'static/package.json',
19    'schemas/@jupyterlab/shortcuts-extension/shortcuts.json',
20    'themes/@jupyterlab/theme-light-extension/index.css'
21]
22ensured_targets = [osp.join(HERE, NAME, t) for t in ensured_targets]
23
24data_files_spec = [
25    ('share/jupyter/lab/static', f'{NAME}/static', '**'),
26    ('share/jupyter/lab/schemas', f'{NAME}/schemas', '**'),
27    ('share/jupyter/lab/themes', f'{NAME}/themes', '**'),
28    ('etc/jupyter/jupyter_server_config.d',
29     'jupyter-config/jupyter_server_config.d', f'{NAME}.json'),
30    ('etc/jupyter/jupyter_notebook_config.d',
31     'jupyter-config/jupyter_notebook_config.d', f'{NAME}.json'),
32]
33
34def post_dist():
35    from packaging.version import Version
36    from jupyter_packaging import get_version
37
38    target = pjoin(HERE, NAME, 'static', 'package.json')
39    with open(target) as fid:
40        version = json.load(fid)['jupyterlab']['version']
41
42    if Version(version) != Version(get_version(f'{NAME}/_version.py')):
43        raise ValueError('Version mismatch, please run `build:update`')
44
45
46try:
47    from jupyter_packaging import wrap_installers, npm_builder, get_data_files
48
49    npm = ['node', pjoin(HERE, NAME, 'staging', 'yarn.js')]
50    # In develop mode, just run yarn
51    builder = npm_builder(build_cmd=None, npm=npm, force=True)
52    cmdclass = wrap_installers(post_develop=builder, post_dist=post_dist, ensured_targets=ensured_targets)
53
54
55    setup_args = dict(
56        cmdclass=cmdclass,
57        data_files=get_data_files(data_files_spec)
58    )
59except ImportError:
60    setup_args = dict()
61
62
63if __name__ == '__main__':
64    setup(**setup_args)
65