diff options
Diffstat (limited to 'setup.py')
-rw-r--r-- | setup.py | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..278e065 --- /dev/null +++ b/setup.py @@ -0,0 +1,105 @@ +#!/usr/bin/env python +from __future__ import print_function +from setuptools import setup, find_packages +import io +import re +import os +import platform +import sys + +# There is an issue with building python packages in a shared vagrant directory because of how setuptools works +# in python < 2.7.9. We solve this by deleting the filesystem hardlinking capability during build. +# See: http://stackoverflow.com/a/22147112/381010 +try: + del os.link +except: + pass # Not all OSes (e.g. windows) support os.link + +description = "Git commit message linter written in python, checks your commit messages for style." +long_description = """ +Great for use as a commit-msg git hook or as part of your gating script in a CI pipeline (e.g. jenkins, gitlab). +Many of the gitlint validations are based on `well-known`_ community_ `standards`_, others are based on checks that +we've found useful throughout the years. Gitlint has sane defaults, but you can also easily customize it to your +own liking. + +Demo and full documentation on `jorisroovers.github.io/gitlint`_. +To see what's new in the latest release, visit the CHANGELOG_. + +Source code on `github.com/jorisroovers/gitlint`_. + +.. _well-known: http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html +.. _community: http://addamhardy.com/blog/2013/06/05/good-commit-messages-and-enforcing-them-with-git-hooks/ +.. _standards: http://chris.beams.io/posts/git-commit/ +.. _jorisroovers.github.io/gitlint: https://jorisroovers.github.io/gitlint +.. _CHANGELOG: https://github.com/jorisroovers/gitlint/blob/master/CHANGELOG.md +.. _github.com/jorisroovers/gitlint: https://github.com/jorisroovers/gitlint +""" + + +# shamelessly stolen from mkdocs' setup.py: https://github.com/mkdocs/mkdocs/blob/master/setup.py +def get_version(package): + """Return package version as listed in `__version__` in `init.py`.""" + init_py = io.open(os.path.join(package, '__init__.py'), encoding="UTF-8").read() + return re.search("__version__ = ['\"]([^'\"]+)['\"]", init_py).group(1) + + +setup( + name="gitlint", + version=get_version("gitlint"), + description=description, + long_description=long_description, + classifiers=[ + "Development Status :: 5 - Production/Stable", + "Operating System :: OS Independent", + "Programming Language :: Python", + "Programming Language :: Python :: 2.7", + "Programming Language :: Python :: 3.5", + "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: Implementation :: CPython", + "Programming Language :: Python :: Implementation :: PyPy", + "Environment :: Console", + "Intended Audience :: Developers", + "Topic :: Software Development :: Quality Assurance", + "Topic :: Software Development :: Testing", + "License :: OSI Approved :: MIT License" + ], + install_requires=[ + 'Click==7.0', + 'arrow==0.15.5', + ], + extras_require={ + ':sys_platform != "win32"': [ + 'sh==1.12.14', + ], + }, + keywords='gitlint git lint', + author='Joris Roovers', + url='https://github.com/jorisroovers/gitlint', + license='MIT', + package_data={ + 'gitlint': ['files/*'] + }, + packages=find_packages(exclude=["examples"]), + entry_points={ + "console_scripts": [ + "gitlint = gitlint.cli:cli", + ], + }, +) + +# Print a red deprecation warning for python 2.6 users +if sys.version_info[0] == 2 and sys.version_info[1] <= 6: + msg = "\033[31mDEPRECATION: Python 2.6 or below are no longer supported by gitlint or the Python core team." + \ + "Please upgrade your Python to a later version.\033[0m" + print(msg) + +# Print a red deprecation warning for python 2.6 users +PLATFORM_IS_WINDOWS = "windows" in platform.system().lower() +if PLATFORM_IS_WINDOWS: + msg = "\n\n\n\n\n****************\n" + \ + "WARNING: Gitlint support for Windows is still experimental and there are some known issues: " + \ + "https://github.com/jorisroovers/gitlint/issues?q=is%3Aissue+is%3Aopen+label%3Awindows " + \ + "\n*******************" + print(msg) |