#!/bin/sh
#
# Copyright (C) 2023  Etersoft
# Copyright (C) 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/>.
#

epm_list_help()
{
    message 'epm list - list packages
Usage: epm list [options] [package]|[TASK]
'
    get_help HELPOPT $SHAREDIR/epm-list
    get_help HELPCMD $SHAREDIR/epm-list
}

epm_list()
{
    local option="$1"

    if [ -z "$1" ] ; then
        # locally installed packages by default
        load_helper epm-list_installed
        epm_list_installed "$@"
        return
    fi

    shift

    case "$option" in
        -h|--help)                # HELPOPT: show this help
            epm_list_help
            return
            ;;
        --available)              # HELPOPT: list only available packages
            load_helper epm-list_available
            epm_list_available "$@"
            return
            ;;
        --installed)              # HELPOPT: list only installed packages
            load_helper epm-list_installed
            epm_list_installed "$@"
            return
            ;;
        --upgradable)             # HELPOPT: list only upgradable packages
            load_helper epm-list_upgradable
            epm_list_upgradable "$@"
            return
            ;;
        --programs)               # HELPOPT: list packages that have GUI (.desktop files)
            load_helper epm-programs
            epm_programs "$@"
            return
            ;;
        TASK)                     # HELPCMD: list packages from ALT task (e.g., 404628 or task/404628)
            ;;
        *)
            # check if it's a task number (e.g., 404628 or task/404628)
            load_helper epm-sh-altlinux
            if is_taskarg "$option" ; then
                local task="$(get_tasknumber_from_arg "$option")"
                [ -n "$task" ] || fatal "Can't extract task number from '$option'"
                get_task_packages "$task"
                return
            fi
            fatal 'Unknown option $option, use epm list --help to get info'
            ;;
    esac

    epm_list_help >&2
    fatal "Run with appropriate option"
}
