1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- import sys
- from distutils.cmd import Command
- from subprocess import check_call
- from typing import List
- from setuptools import setup, find_packages
- class CustomCommand(Command):
- user_options: List[str] = []
- description = 'Custom command'
- def initialize_options(self):
- pass
- def finalize_options(self):
- pass
- class DevelopCommand(CustomCommand):
- def run(self):
- print('Do not try to install telecaster. Run `pip install -r requirements.txt` instead.') # noqa
- sys.exit(1)
- class LocalCommand(CustomCommand):
- def run(self):
- print('Do not try to install telecaster. Run `pip install -r requirements-dev.txt` instead.') # noqa
- sys.exit(1)
- def create_command(text: str, commands: List[List[str]]):
- class GeneratedCommand(CustomCommand):
- description = text
- def run(self):
- for cmd in commands:
- check_call(cmd)
- return GeneratedCommand
- setup(
- name='telecaster',
- version='1.0',
- packages=find_packages(),
- scripts=['manage.py'],
- cmdclass=dict(
- develop=DevelopCommand,
- local=LocalCommand,
- fix=create_command(
- 'Auto-fixes and lints code',
- [
- ['python', 'setup.py', 'format'],
- ['python', 'setup.py', 'lint'],
- ['python', 'setup.py', 'lint_types'],
- ['python', 'setup.py', 'format_docstrings'],
- ],
- ),
- verify=create_command(
- 'Verifies that code is valid',
- [
- ['python', 'setup.py', 'verify_format'],
- ['python', 'setup.py', 'lint'],
- ['python', 'setup.py', 'lint_types'],
- ['python', 'setup.py', 'verify_format_docstrings'],
- ],
- ),
- format=create_command('Auto-formats code', [['black', '-S', '--config', './pyproject.toml', '.']]),
- verify_format=create_command(
- 'Verifies that code is properly formatted',
- [['black', '-S', '--check', '--config', './pyproject.toml', '.']],
- ),
- format_docstrings=create_command(
- 'Auto-formats doc strings', [['docformatter', '-r', '-e', 'env', 'venv', '-i', '.']]
- ),
- verify_format_docstrings=create_command(
- 'Verifies that doc strings are properly formatted',
- [['docformatter', '-r', '-e', 'env', 'venv', 'node_modules', '-c', '.']],
- ),
- lint=create_command('Lints the code', [['flake8', '.']]),
- lint_types=create_command(
- 'Type checks the code',
- [
- ['mypy', 'telecaster', '--strict', '--config-file', './setup.cfg'],
- ],
- ),
- ),
- )
|