Files
@ 2c3d30095d5e
Branch filter:
Location: kallithea/setup.py - annotation
2c3d30095d5e
5.1 KiB
text/x-python
gearbox: replace paster with something TurboGears2-ish that still works with the Pylons stack
This is a step towards moving away from the Pylons stack to TurboGears2, but
still independent of it.
Some notes from the porting - it could perhaps be the missing(?) documentation
for migrating from paster to gearbox:
Note: 'gearbox' without parameters will crash - specify '-h' to get started
testing.
Replace paster
summary = 'yada yada'
with the first line of the docstring of the Command class ... or override
get_description.
Note: All newlines in the docstring will be collapsed and mangle the long help
text.
Grouping of commands is not possible. Standard commands (for development) can't
be customized under the same name or hidden. (Like for paster, the conceptual
model also assumes that the sub-command naming is namespaced so commands from
other packages won't conflict.)
The usage help is fully automated from the declared options.
For all deprecated Commands, replace paster
hidden = True
with gearbox
deprecated = True
Note: config_file, takes_config_file, min_args and max_args are not available /
relevant.
The gearbox parser is customized by overriding get_parser - there is nothing
like paster update_parser.
Gearbox is using argparse instead of optparse ... but argparse add_argument is
mostly backwards compatible with optparse add_option.
Instead of overriding command or run as in paster, override take_action in
gearbox. The parsed arguments are passed to take_action, not available on the
command instance.
Paster BadCommand is not available and must be handled manually, terminating
with sys.exit(1).
There is no standard make-config command in gearbox.
Paster appinstall has been replaced by the somewhat different setup_app module
in gearbox. There is still no clean way to pass parameters to SetupAppCommand
and it relies on websetup and other apparently unnecessary complexity. Instead,
implement setup-db from scratch.
Minor change by Thomas De Schampheleire: add gearbox logging configuration.
Because we use logging.config.fileConfig(.inifile) during gearbox command
execution, the logging settings need to be correct and contain a block for
gearbox logging itself. Otherwise, errors in command processing are not even
visible and the command exits silently.
This is a step towards moving away from the Pylons stack to TurboGears2, but
still independent of it.
Some notes from the porting - it could perhaps be the missing(?) documentation
for migrating from paster to gearbox:
Note: 'gearbox' without parameters will crash - specify '-h' to get started
testing.
Replace paster
summary = 'yada yada'
with the first line of the docstring of the Command class ... or override
get_description.
Note: All newlines in the docstring will be collapsed and mangle the long help
text.
Grouping of commands is not possible. Standard commands (for development) can't
be customized under the same name or hidden. (Like for paster, the conceptual
model also assumes that the sub-command naming is namespaced so commands from
other packages won't conflict.)
The usage help is fully automated from the declared options.
For all deprecated Commands, replace paster
hidden = True
with gearbox
deprecated = True
Note: config_file, takes_config_file, min_args and max_args are not available /
relevant.
The gearbox parser is customized by overriding get_parser - there is nothing
like paster update_parser.
Gearbox is using argparse instead of optparse ... but argparse add_argument is
mostly backwards compatible with optparse add_option.
Instead of overriding command or run as in paster, override take_action in
gearbox. The parsed arguments are passed to take_action, not available on the
command instance.
Paster BadCommand is not available and must be handled manually, terminating
with sys.exit(1).
There is no standard make-config command in gearbox.
Paster appinstall has been replaced by the somewhat different setup_app module
in gearbox. There is still no clean way to pass parameters to SetupAppCommand
and it relies on websetup and other apparently unnecessary complexity. Instead,
implement setup-db from scratch.
Minor change by Thomas De Schampheleire: add gearbox logging configuration.
Because we use logging.config.fileConfig(.inifile) during gearbox command
execution, the logging settings need to be correct and contain a block for
gearbox logging itself. Otherwise, errors in command processing are not even
visible and the command exits silently.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 | bf011c9f7f58 266a3cbc0302 9382e88eae22 65c27fd21769 9382e88eae22 9382e88eae22 a922e91a4f02 a9a1560dad79 9382e88eae22 9382e88eae22 9382e88eae22 9382e88eae22 9382e88eae22 9382e88eae22 9382e88eae22 9382e88eae22 9382e88eae22 9382e88eae22 9382e88eae22 9382e88eae22 9382e88eae22 9382e88eae22 7e5f8c12a3fc 9382e88eae22 9382e88eae22 9382e88eae22 9382e88eae22 9382e88eae22 9382e88eae22 9382e88eae22 9382e88eae22 9382e88eae22 9382e88eae22 9382e88eae22 3a1cf70e0f42 2d7a94f3eaae 9382e88eae22 7894a440e134 2c3d30095d5e 9ec73e01e5b1 1f43d08ce5a8 f6fcb21db7b3 de37fcbce8c5 9382e88eae22 ed11cb3e905e 1a080d4e926e 8c2e96646545 298bac3757a7 5cf18f89ab3e 4f2e231df222 175813f77851 9382e88eae22 4034eb731b33 d1d9d249846b ffd45b185016 ffd45b185016 b5859022ac69 f19d8fd8e35a 9382e88eae22 9382e88eae22 d4f6dc38d625 ffd45b185016 bda2bd2558b1 9382e88eae22 953ee49f3b30 5cf18f89ab3e 9382e88eae22 880a39e5d8df 880a39e5d8df 880a39e5d8df fc6063e6630b cc48c1541c7e fc6063e6630b fc6063e6630b fc6063e6630b fc6063e6630b fc6063e6630b fc6063e6630b fc6063e6630b fc6063e6630b cc48c1541c7e fc6063e6630b a60cd29ba7e2 b0e2c949c34b 2afa6b8c2ade 2afa6b8c2ade 65c27fd21769 65c27fd21769 24c0d584ba86 326a9336fbe5 faad9dd06b58 266a3cbc0302 266a3cbc0302 7e5f8c12a3fc 266a3cbc0302 266a3cbc0302 266a3cbc0302 266a3cbc0302 2afa6b8c2ade 266a3cbc0302 65c27fd21769 7c732f2047f8 d69aa464f373 266a3cbc0302 7c732f2047f8 7c732f2047f8 266a3cbc0302 ad2e97c6f17f 2642f128ad46 a922e91a4f02 c79e4f89bfd3 c79e4f89bfd3 c79e4f89bfd3 c79e4f89bfd3 c79e4f89bfd3 c79e4f89bfd3 c79e4f89bfd3 c79e4f89bfd3 c79e4f89bfd3 c79e4f89bfd3 a922e91a4f02 564e40829f80 a922e91a4f02 24c0d584ba86 9382e88eae22 ad2e97c6f17f 2642f128ad46 2d7a94f3eaae f4807acf643d 9382e88eae22 3315e9263a53 880a39e5d8df 9382e88eae22 2642f128ad46 a60cd29ba7e2 2642f128ad46 65c27fd21769 20dc7a5eb748 7e5f8c12a3fc 564e40829f80 564e40829f80 0e6035a85980 564e40829f80 20dc7a5eb748 20dc7a5eb748 7ac09514a178 9793473d74be 9793473d74be 9793473d74be 7ac09514a178 564e40829f80 7e5f8c12a3fc 564e40829f80 564e40829f80 564e40829f80 341beaa9edba 2c3d30095d5e 7e5f8c12a3fc b1679034b6c4 7e5f8c12a3fc 7e5f8c12a3fc 7e5f8c12a3fc 7e5f8c12a3fc 7e5f8c12a3fc 7e5f8c12a3fc c436f337e253 cf73bd884a53 2dad9708c89f 564e40829f80 564e40829f80 | #!/usr/bin/env python2
# -*- coding: utf-8 -*-
import os
import sys
import platform
if sys.version_info < (2, 6) or sys.version_info >= (3,):
raise Exception('Kallithea requires python 2.6 or 2.7')
here = os.path.abspath(os.path.dirname(__file__))
def _get_meta_var(name, data, callback_handler=None):
import re
matches = re.compile(r'(?:%s)\s*=\s*(.*)' % name).search(data)
if matches:
if not callable(callback_handler):
callback_handler = lambda v: v
return callback_handler(eval(matches.groups()[0]))
_meta = open(os.path.join(here, 'kallithea', '__init__.py'), 'rb')
_metadata = _meta.read()
_meta.close()
callback = lambda V: ('.'.join(map(str, V[:3])) + '.'.join(V[3:]))
__version__ = _get_meta_var('VERSION', _metadata, callback)
__license__ = _get_meta_var('__license__', _metadata)
__author__ = _get_meta_var('__author__', _metadata)
__url__ = _get_meta_var('__url__', _metadata)
# defines current platform
__platform__ = platform.system()
is_windows = __platform__ in ['Windows']
requirements = [
"alembic>=0.8.0,<0.9",
"GearBox<1",
"waitress>=0.8.8,<1.0",
"webob>=1.7,<2",
"Pylons>=1.0.0,<=1.0.2",
"Beaker>=1.7.0,<2",
"WebHelpers==1.3",
"formencode>=1.2.4,<=1.2.6",
"SQLAlchemy>=1.0,<1.1",
"Mako>=0.9.0,<=1.0.0",
"pygments>=1.5",
"whoosh>=2.5.0,<=2.5.7",
"celery>=3.1,<3.2",
"babel>=0.9.6,<2.4",
"python-dateutil>=1.5.0,<2.0.0",
"markdown==2.2.1",
"docutils>=0.8.1",
"URLObject==2.3.4",
"Routes==1.13",
"dulwich>=0.14.1",
"mercurial>=2.9,<4.2",
]
if sys.version_info < (2, 7):
requirements.append("importlib==1.0.1")
requirements.append("argparse")
if not is_windows:
requirements.append("bcrypt>=3.1.0")
dependency_links = [
]
classifiers = [
'Development Status :: 4 - Beta',
'Environment :: Web Environment',
'Framework :: Pylons',
'Intended Audience :: Developers',
'License :: OSI Approved :: GNU General Public License (GPL)',
'Operating System :: OS Independent',
'Programming Language :: Python',
'Programming Language :: Python :: 2.6',
'Programming Language :: Python :: 2.7',
'Topic :: Software Development :: Version Control',
]
# additional files from project that goes somewhere in the filesystem
# relative to sys.prefix
data_files = []
description = ('Kallithea is a fast and powerful management tool '
'for Mercurial and Git with a built in push/pull server, '
'full text search and code-review.')
keywords = ' '.join([
'kallithea', 'mercurial', 'git', 'code review',
'repo groups', 'ldap', 'repository management', 'hgweb replacement',
'hgwebdir', 'gitweb replacement', 'serving hgweb',
])
# long description
README_FILE = 'README.rst'
try:
long_description = open(README_FILE).read()
except IOError as err:
sys.stderr.write(
"[WARNING] Cannot find file specified as long_description (%s)\n"
% README_FILE
)
long_description = description
import setuptools
# monkey patch setuptools to use distutils owner/group functionality
from setuptools.command import sdist
sdist_org = sdist.sdist
class sdist_new(sdist_org):
def initialize_options(self):
sdist_org.initialize_options(self)
self.owner = self.group = 'root'
sdist.sdist = sdist_new
packages = setuptools.find_packages(exclude=['ez_setup'])
setuptools.setup(
name='Kallithea',
version=__version__,
description=description,
long_description=long_description,
keywords=keywords,
license=__license__,
author=__author__,
author_email='kallithea@sfconservancy.org',
dependency_links=dependency_links,
url=__url__,
install_requires=requirements,
classifiers=classifiers,
data_files=data_files,
packages=packages,
include_package_data=True,
message_extractors={'kallithea': [
('**.py', 'python', None),
('templates/**.mako', 'mako', {'input_encoding': 'utf-8'}),
('templates/**.html', 'mako', {'input_encoding': 'utf-8'}),
('public/**', 'ignore', None)]},
zip_safe=False,
entry_points="""
[console_scripts]
kallithea-api = kallithea.bin.kallithea_api:main
kallithea-gist = kallithea.bin.kallithea_gist:main
kallithea-config = kallithea.bin.kallithea_config:main
[paste.app_factory]
main = kallithea.config.middleware:make_app
[paste.app_install]
main = pylons.util:PylonsInstaller
[gearbox.commands]
setup-db=kallithea.lib.paster_commands.setup_db:Command
cleanup-repos=kallithea.lib.paster_commands.cleanup:Command
update-repoinfo=kallithea.lib.paster_commands.update_repoinfo:Command
make-rcext=kallithea.lib.paster_commands.make_rcextensions:Command
repo-scan=kallithea.lib.paster_commands.repo_scan:Command
cache-keys=kallithea.lib.paster_commands.cache_keys:Command
ishell=kallithea.lib.paster_commands.ishell:Command
make-index=kallithea.lib.paster_commands.make_index:Command
upgrade-db=kallithea.lib.dbmigrate:UpgradeDb
celeryd=kallithea.lib.paster_commands.celeryd:Command
install-iis=kallithea.lib.paster_commands.install_iis:Command
""",
)
|