epm-search_file 2.79 KB
Newer Older
1 2
#!/bin/sh
#
3 4
# Copyright (C) 2012, 2016, 2017, 2019  Etersoft
# Copyright (C) 2012, 2016, 2017, 2019  Vitaly Lipatov <lav@etersoft.ru>
5
#
6 7 8
# 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
9 10 11 12 13
# (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
14
# GNU Affero General Public License for more details.
15
#
16 17
# 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/>.
18 19
#

Vitaly Lipatov's avatar
Vitaly Lipatov committed
20 21 22 23 24 25 26 27
# TODO: see epm-search (colorify for all distro)

# args: index_lists word grep_string
__alt_search_file_output()
{
    # grep only on left part (filename), then revert order and grep with color
    __local_ercat $1 | grep -h -- ".*$2.*[[:space:]]" | sed -e "s|\(.*\)\t\(.*\)|\2: \1|g" $3
}
28

29
__alt_local_content_search()
30
{
31
    load_helper epm-sh-altlinux
32
    load_helper epm-sh-altlinux-contents-index
Vitaly Lipatov's avatar
Vitaly Lipatov committed
33
    load_helper epm-search
34

35 36
    update_alt_contents_index
    local CI="$(cat $ALT_CONTENTS_INDEX_LIST)"
37

38
    info "Searching for $1 ... "
39

Vitaly Lipatov's avatar
Vitaly Lipatov committed
40 41 42 43 44
    # FIXME: do it better
    local MGS
    MGS=$(eval __epm_search_make_grep $quoted_args)
    showcmd "$ cat contents_index $MGS"
    eval "__alt_search_file_output \"$CI\" \"$(eval get_firstarg $quoted_args)\" $MGS"
45 46
}

47 48
epm_search_file()
{
49 50
    local CMD
    [ -n "$pkg_filenames" ] || fatal "Search file: file name is missed"
51 52

case $PMTYPE in
53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
    apt-rpm)
        __alt_local_content_search $pkg_filenames
        return ;;
    apt-dpkg|aptitude-dpkg)
        assure_exists apt-file
        sudocmd apt-file update
        docmd apt-file search $pkg_filenames
        return ;;
    packagekit)
        CMD="pkcon search file"
        ;;
    yum-rpm)
        # TODO
        info "Search by full packages list is not implemented yet"
        CMD="yum provides"
        ;;
    dnf-rpm)
        # TODO
        info "Search by full packages list is not implemented yet"
        CMD="dnf provides"
        ;;
    urpm-rpm)
        CMD="urpmf"
        ;;
    zypper-rpm)
        CMD="zypper search --file-list"
        ;;
    pacman)
        CMD="pacman -Qo"
        ;;
    slackpkg)
        CMD="/usr/sbin/slackpkg file-search"
        ;;
    opkg)
        CMD="opkg -A search"
        ;;
    eopkg)
        CMD="eopkg search-file"
        ;;
    xbps)
        CMD="xbps-query -Ro"
        ;;
    aptcyg)
        docmd apt-cyg searchall $(echo " $pkg_filenames" | sed -e "s| /| |g")
        return
        ;;
    *)
        fatal "Have no suitable search file command for $PMTYPE"
        ;;
102 103 104 105 106
esac

docmd $CMD $pkg_filenames

}