#
# 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
#

"""
INTERNAL USE ONLY - Install locations and other site information for qpid dispatch.
"""

import sys

from os.path import join
from os import environ
from typing import Optional, Tuple


def populate_pythonpath() -> None:
    """Makes qpid_dispatch_internal available. Modifies sys.path."""
    home = environ.get("QPID_DISPATCH_HOME") or "${QPID_DISPATCH_HOME_INSTALLED}"
    sys.path.insert(0, join(home, 'python'))


def parse_version(version: str) -> Optional[Tuple[int, int, int]]:
    """Returns a 3-tuple semver version, or None (if say version is an empty string)."""
    if not version:
        return None
    try:
        major, minor, patch = (int(v) for v in version.split('.'))
        return major, minor, patch
    except ValueError as e:
        raise ValueError(f"version '{version}' cannot be parsed") from e


VERSION = "${QPID_DISPATCH_VERSION}"

LIBWEBSOCKETS_VERSION: Optional[Tuple[int, int, int]] = parse_version("${LIBWEBSOCKETS_VERSION_STRING}")
SKIP_DELETE_HTTP_LISTENER = None if not LIBWEBSOCKETS_VERSION else (4, 0, 0) <= LIBWEBSOCKETS_VERSION < (4, 2, 0)
