# -*- coding: utf-8 -*-

# Copyright (C) 2014-2018 RhodeCode GmbH
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License, version 3
# (only), as published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
#
# This program is dual-licensed. If you wish to learn more about the
# RhodeCode Enterprise Edition, including its added features, Support services,
# and proprietary license terms, please see https://rhodecode.com/licenses/

"""
Internal settings for vcs-lib
"""

# list of default encoding used in safe_unicode/safe_str methods
DEFAULT_ENCODINGS = ['utf8']

# Optional arguments to rev-filter, it has to be a list
# It can also be ['--branches', '--tags']
GIT_REV_FILTER = ['--all']

# Compatibility version when creating SVN repositories. None means newest.
# Other available options are: pre-1.4-compatible, pre-1.5-compatible,
# pre-1.6-compatible, pre-1.8-compatible
SVN_COMPATIBLE_VERSION = None

ALIASES = ['hg', 'git', 'svn']

BACKENDS = {
    'hg': 'rhodecode.lib.vcs.backends.hg.MercurialRepository',
    'git': 'rhodecode.lib.vcs.backends.git.GitRepository',
    'svn': 'rhodecode.lib.vcs.backends.svn.SubversionRepository',
}

# TODO: Remove once controllers/files.py is adjusted
ARCHIVE_SPECS = {
    'tbz2': ('application/x-bzip2', '.tar.bz2'),
    'tgz': ('application/x-gzip', '.tar.gz'),
    'zip': ('application/zip', '.zip'),
}

HOOKS_PROTOCOL = None
HOOKS_DIRECT_CALLS = False


def available_aliases():
    """
    Mercurial is required for the system to work, so in case vcs.backends does
    not include it, we make sure it will be available internally
    TODO: anderson: refactor vcs.backends so it won't be necessary, VCS server
    should be responsible to dictate available backends.
    """
    aliases = ALIASES[:]
    if 'hg' not in aliases:
        aliases += ['hg']
    return aliases