#!/bin/sh

# Copyright (C) 2016, 2020, 2023  Etersoft
# Copyright (C) 2016  Danil Mikhailov <danil@etersoft.ru>
# Copyright (C) 2016, 2020, 2023  Vitaly Lipatov <lav@etersoft.ru>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# 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 Affero 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/>.
#

load_helper epm-install

# default repo
EPM_KORINF_REPO_URL="https://updates.etersoft.ru/pub/Korinf"

__epm_korinf_site_mask() {
    local MASK="$1"
    local archprefix=""
    # short hack to install needed package
    rhas "$MASK" "[-_]" || MASK="$MASK[-_][0-9]"
    # set arch for Korinf compatibility
    [ "$($DISTRVENDOR -a)" = "x86_64" ] && archprefix="x86_64/"
    local URL="$EPM_KORINF_REPO_URL/$archprefix$($DISTRVENDOR -e)"
    if ! eget --check "$URL" ; then
        tURL="$EPM_KORINF_REPO_URL/$archprefix$($DISTRVENDOR --vendor-name)/$($DISTRVENDOR --repo-name)"
        docmd eget --check "$tURL" && URL="$tURL"
    fi
    echo "$URL/$MASK*.$PKGFORMAT"
}

__epm_korinf_list() {
    local MASK="$1"
    MASK="$(__epm_korinf_site_mask "$MASK")"
    showcmd eget --list "$MASK"
    eget --list "$MASK" | sort
}


__epm_korinf_install() {

    # skip interactive for install eepm from stdin
    if inputisatty && [ -n "$PROGDIR" ] && [ "$1" != "eepm" ] ; then
        [ -n "$non_interactive" ] || interactive="--interactive"
    fi

    local pkg
    local pkg_urls=''
    for pkg in $* ; do
        pkg_urls="$pkg_urls $(__epm_korinf_site_mask "$pkg")"
    done
    # due Error: Can't use epm call from the piped script
    #epm install $(__epm_korinf_site_mask "$PACKAGE")
    pkg_names='' pkg_files='' epm_install
}

epm_epm_install_help()
{
	echo "epm ei [packages] - install packages from EPM based Korinf repository"
			get_help HELPCMD $SHAREDIR/epm-epm_install
	cat <<EOF

Default Korinf repository: $EPM_KORINF_REPO_URL

Examples:
  epm ei [epm|eepm]                - install latest eepm (default action)
  epm <package1> [<package2>...]   - install package(s) from default Korinf repo
  epm http://someurl.ru <package>  - install package(s) from the URL
  epm --list <package mask>        - list available packages by mask
EOF
}


epm_epm_install() {

    if is_url "$1" ; then
        EPM_KORINF_REPO_URL="$1"
        info "Using $EPM_KORINF_REPO_URL repo ..."
        shift
    fi

    case "$1" in
        ""|epm|eepm)
            # install epm by default
            __epm_korinf_install "eepm"
            return
            ;;
        -h|--help)                     # HELPCMD: help
            epm_epm_install_help
            return
            ;;
        --list)                        # HELPCMD: list only packages
            shift
            __epm_korinf_list "$1"
            return
            ;;
    esac

    __epm_korinf_install "$@"
}