diff options
| author | bozo.kopic <bozo@kopic.xyz> | 2021-11-07 15:52:44 +0100 |
|---|---|---|
| committer | bozo.kopic <bozo@kopic.xyz> | 2021-12-18 02:38:50 +0100 |
| commit | 0702d13263bf501c1db074ce1544e60b95161210 (patch) | |
| tree | ebca76946cead0ffcc742a64c15dd6f5e79958fa /dodo.py | |
| parent | 56a75fcb8f5a9e4c05ccec8eb4a3345a115da441 (diff) | |
major rewritev0.3.0
Diffstat (limited to 'dodo.py')
| -rw-r--r-- | dodo.py | 195 |
1 files changed, 4 insertions, 191 deletions
@@ -1,193 +1,6 @@ -from pathlib import Path -import datetime -import os -import shutil -import subprocess -import sys +from hat.doit import common -import packaging.version +DOIT_CONFIG = common.init(python_paths=['src_py'], + default_tasks=['build']) - -DOIT_CONFIG = {'backend': 'sqlite3', - 'default_tasks': ['dist'], - 'verbosity': 2} - - -pythonpath = os.environ.get('PYTHONPATH') -src_py_path = str(Path('src_py').resolve()) - -sys.path += [src_py_path] -if pythonpath: - os.environ['PYTHONPATH'] = f'{src_py_path}{os.pathsep}{pythonpath}' -else: - os.environ['PYTHONPATH'] = src_py_path - - -build_dir = Path('build') -dist_dir = Path('dist') -py_build_dir = build_dir / 'py' -js_build_dir = build_dir / 'js' - -docker_img = 'bozokopic/opcut' - - -def task_clean_all(): - """Clean all""" - return {'actions': [f'rm -rf {build_dir}', - f'rm -rf {dist_dir}']} - - -def task_check(): - """Run linters""" - def flake8(): - subprocess.run(['python', '-m', 'flake8', '.'], - cwd='src_py', - check=True) - - return {'actions': [flake8, - 'yarn run --silent check_js', - 'yarn run --silent check_sass'], - 'task_dep': ['js_deps']} - - -def task_js_deps(): - """Install js dependencies""" - return {'actions': ['yarn install --silent']} - - -def task_js_build(): - """Build js""" - return {'actions': ['yarn run --silent build'], - 'task_dep': ['js_deps']} - - -def task_js_watch(): - """Build js on change""" - - return {'actions': ['yarn run --silent watch'], - 'task_dep': ['js_deps']} - - -def task_py_build(): - """Build py""" - def mappings(): - src_py_dir = Path('src_py') - for i in (src_py_dir / 'opcut').rglob('*.py'): - yield i, dst_dir / i.relative_to(src_py_dir) - - src_json_dir = Path('schemas_json') - for i in src_json_dir.rglob('*.yaml'): - yield i, (dst_dir / 'opcut/schemas_json' - / i.relative_to(src_json_dir)) - - for i in js_build_dir.rglob('*'): - if i.is_dir(): - continue - yield i, (dst_dir / 'opcut/ui' - / i.relative_to(js_build_dir)) - - dst_dir = py_build_dir - setup_path = dst_dir / 'setup.py' - manifest_path = dst_dir / 'MANIFEST.in' - src_paths = list(src_path for src_path, _ in mappings()) - dst_paths = [setup_path, *(dst_path for _, dst_path in mappings())] - return {'actions': [(_copy_files, [mappings]), - (_create_manifest, [manifest_path, mappings]), - (_create_setup_py, [setup_path])], - 'file_dep': src_paths, - 'targets': dst_paths, - 'task_dep': ['js_build']} - - -def task_dist(): - """Create distribution""" - def dist(): - dist_dir.mkdir(parents=True, exist_ok=True) - subprocess.run(['python', 'setup.py', '-q', 'bdist_wheel', - '--dist-dir', str(dist_dir.resolve())], - cwd=str(py_build_dir), - check=True) - - return {'actions': [dist], - 'task_dep': ['py_build']} - - -def task_docker_build(): - """Create docker image""" - def build(): - version = _get_version() - subprocess.run(['docker', 'build', '-t', f'{docker_img}:{version}', - '.'], - check=True) - - return {'actions': [build]} - - -def task_docker_upload(): - """Upload docker image""" - def upload(): - version = _get_version() - subprocess.run(['docker', 'push', f'{docker_img}:{version}'], - check=True) - - return {'actions': [upload]} - - -def _create_setup_py(path): - version = _get_version() - readme = _get_readme() - dependencies = ['aiohttp', - 'pycairo', - 'hat-util'] - entry_points = {'console_scripts': ['opcut = opcut.main:main']} - options = {'bdist_wheel': {'python_tag': 'cp38', - 'py_limited_api': 'cp38', - 'plat_name': 'any'}} - classifiers = ['Programming Language :: Python :: 3'] - with open(path, 'w', encoding='utf-8') as f: - f.write(f"from setuptools import setup\n\n\n" - f"readme = r\"\"\"\n{readme}\n\"\"\"\n\n" - f"setup(name='opcut',\n" - f" version={repr(version)},\n" - f" description='Cutting stock problem optimizer',\n" - f" long_description=readme,\n" - f" long_description_content_type='text/x-rst',\n" - f" url='https://github.com/bozokopic/opcut',\n" - f" author='Bozo Kopic',\n" - f" author_email='bozo.kopic@gmail.com',\n" - f" license='GPLv3',\n" - f" packages=['opcut'],\n" - f" include_package_data=True,\n" - f" install_requires={repr(dependencies)},\n" - f" python_requires='>=3.8',\n" - f" zip_safe=False,\n" - f" classifiers={repr(classifiers)},\n" - f" options={repr(options)},\n" - f" entry_points={repr(entry_points)})\n") - - -def _copy_files(mappings): - for src_path, dst_path in mappings(): - if not dst_path.parent.exists(): - dst_path.parent.mkdir(parents=True, exist_ok=True) - shutil.copyfile(str(src_path), str(dst_path)) - - -def _create_manifest(path, mappings): - with open(path, 'w', encoding='utf-8') as f: - for _, i in mappings(): - f.write(f"include {i.relative_to(path.parent)}\n") - - -def _get_version(): - with open('VERSION', encoding='utf-8') as f: - version_str = f.read().strip() - if version_str.endswith('dev'): - version_str += datetime.datetime.now().strftime("%Y%m%d") - version = packaging.version.Version(version_str) - return version.public - - -def _get_readme(): - with open('README.rst', encoding='utf-8') as f: - return f.read().strip() +from src_doit import * # NOQA |
