#       Licensed to the Apache Software Foundation (ASF) under one
#       or more contributor license agreements.  See the NOTICE file
#       distributed with this work for additional information
#       regarding copyright ownership.  The ASF licenses this file
#       to you under the Apache License, Version 2.0 (the
#       "License"); you may not use this file except in compliance
#       with the License.  You may obtain a copy of the License at
#
#         http://www.apache.org/licenses/LICENSE-2.0
#
#       Unless required by applicable law or agreed to in writing,
#       software distributed under the License is distributed on an
#       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
#       KIND, either express or implied.  See the License for the
#       specific language governing permissions and limitations
#       under the License.

from setuptools import setup, find_packages

exec(open('allura/version.py').read())  # noqa: S102

PROJECT_DESCRIPTION = '''
Allura is an open source implementation of a software "forge", a web site
that manages source code repositories, bug reports, discussions, mailing
lists, wiki pages, blogs and more for any number of individual projects.
'''
setup(
    name='Allura',
    version=__version__,  # noqa: F821
    description='Base distribution of the Allura development platform',
    long_description=PROJECT_DESCRIPTION,
    author='Allura Team',
    url='https://allura.apache.org/',
    keywords='allura forge turbogears jinja2 mongodb',
    license='Apache License, http://www.apache.org/licenses/LICENSE-2.0',
    platforms=[
        'Linux',
        'MacOS X',
    ],
    classifiers=[
        'Development Status :: 4 - Beta',
        'Environment :: Web Environment',
        'Framework :: TurboGears',
        'Intended Audience :: Developers',
        'Topic :: Internet :: WWW/HTTP :: WSGI :: Application',
        'License :: OSI Approved :: Apache Software License',
    ],
    install_requires=[
    ],
    paster_plugins=['PasteScript', 'TurboGears2', 'Ming'],
    packages=find_packages(exclude=['ez_setup']),
    include_package_data=True,
    package_data={'allura': ['templates/**.html',
                             'templates/**.py',
                             'templates/**.xml',
                             'templates/**.txt',
                             'public/*/*/*/*/*',
                             ]},
    message_extractors={'allura': [
        ('**.py', 'python', None),
        ('templates/**.html', 'jinja2', None),
        ('public/**', 'ignore', None)]},

    # These entry points define what tools and plugins are available for Allura.
    # Other packages (the Forge* directories) or 3rd-party can add more too.
    # development.ini is used for many cases to specify which to actually use.
    entry_points="""
    [paste.app_factory]
    main = allura.config.middleware:make_app
    [paste.app_install]
    # used from SetupCommand, this will call our setup_app()
    main = paste.script.appinstall:Installer

    [allura]
    profile = allura.ext.user_profile:UserProfileApp
    admin = allura.ext.admin:AdminApp
    search = allura.ext.search:SearchApp
    home = allura.ext.project_home:ProjectHomeApp

    [allura.auth]
    local = allura.lib.plugin:LocalAuthenticationProvider
    ldap = allura.lib.plugin:LdapAuthenticationProvider

    [allura.user_prefs]
    local = allura.lib.plugin:LocalUserPreferencesProvider
    ldap = allura.lib.plugin:LdapUserPreferencesProvider

    [allura.project_registration]
    local = allura.lib.plugin:LocalProjectRegistrationProvider

    [allura.theme]
    allura = allura.lib.plugin:ThemeProvider
    responsive = allura.lib.plugin:ResponsiveTheme

    [allura.theme.override]
    responsive = allura.templates_responsive.responsive_overrides:ResponsiveOverrides

    [allura.spam]
    akismet = allura.lib.spam.akismetfilter:AkismetSpamFilter
    stopforumspam = allura.lib.spam.stopforumspamfilter:StopForumSpamSpamFilter

    [allura.phone]
    nexmo = allura.lib.phone.nexmo:NexmoPhoneService

    [allura.site_admin]
    stats = allura.controllers.site_admin:StatsSiteAdminExtension
    troves = allura.controllers.trovecategories:TroveCategorySiteAdminExtension

    [allura.user_profile.sections]
    personal-data = allura.ext.user_profile.user_main:PersonalDataSection
    projects = allura.ext.user_profile.user_main:ProjectsSection
    skills = allura.ext.user_profile.user_main:SkillsSection
    tools = allura.ext.user_profile.user_main:ToolsSection
    social = allura.ext.user_profile.user_main:SocialSection

    [allura.personal_dashboard.sections]
    projects = allura.ext.personal_dashboard.dashboard_main:ProjectsSection
    tickets = allura.ext.personal_dashboard.dashboard_main:TicketsSection
    merge_requests = allura.ext.personal_dashboard.dashboard_main:MergeRequestsSection
    activity = allura.ext.personal_dashboard.dashboard_main:ActivitySection

    [allura.webhooks]
    repo-push = allura.webhooks:RepoPushWebhookSender

    [allura.multifactor.totp]
    mongodb = allura.lib.multifactor:MongodbTotpService
    filesystem-googleauth = allura.lib.multifactor:GoogleAuthenticatorPamFilesystemTotpService

    [allura.multifactor.recovery_code]
    mongodb = allura.lib.multifactor:MongodbRecoveryCodeService
    filesystem-googleauth = allura.lib.multifactor:GoogleAuthenticatorPamFilesystemRecoveryCodeService

    [paste.paster_command]
    taskd = allura.command.taskd:TaskdCommand
    taskd_cleanup = allura.command.taskd_cleanup:TaskdCleanupCommand
    task = allura.command.taskd:TaskCommand
    models = allura.command:ShowModelsCommand
    reindex = allura.command:ReindexCommand
    ensure_index = allura.command:EnsureIndexCommand
    script = allura.command:ScriptCommand
    set-tool-access = allura.command:SetToolAccessCommand
    smtp_server=allura.command:SMTPServerCommand
    create-neighborhood = allura.command:CreateNeighborhoodCommand
    update-neighborhood-home-tool = allura.command:UpdateNeighborhoodCommand
    create-trove-categories = allura.command:CreateTroveCategoriesCommand
    set-neighborhood-features = allura.command:SetNeighborhoodFeaturesCommand
    reclone-repo = allura.command.reclone_repo:RecloneRepoCommand

    [easy_widgets.resources]
    ew_resources=allura.config.resources:register_ew_resources

    [easy_widgets.engines]
    jinja = allura.config.app_cfg:JinjaEngine

    [activitystream]
    storage = activitystream.storage.mingstorage:MingStorage
    director = allura.model.timeline:Director
    aggregator = allura.model.timeline:Aggregator
    """,
)
