epm-repopkg 2.93 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
#!/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/>.
#

load_helper epm-sh-altlinux

__epm_repo_pkgadd_alt()
{
24
    local archlist="i586 x86_64 aarch64 noarch"
25

26 27 28
    local REPO_DIR="$1"
    shift
    [ -d "$REPO_DIR" ] || fatal "Can't find repo dir $REPO_DIR."
29

30 31 32 33 34 35 36
    # default name
    REPO_NAME="addon"
    # detect if already exists
    for arch in $archlist ; do
        local rd="$(echo $REPO_DIR/$arch/RPMS.*)"
        [ -d "$rd" ] && REPO_NAME="$(echo "$rd" | sed -e 's|.*\.||')" && break
    done
37

38
    [ -n "$1" ] || fatal "Missed package name"
39

40 41 42 43 44 45
    while [ -s "$1" ] ; do
        arch="$(epm print arch from filename "$1")" || fatal
        epm checkpkg "$1" || fatal
        cp -v "$1" $REPO_DIR/$arch/RPMS.$REPO_NAME || fatal
        shift
    done
46 47 48 49 50 51

}


__epm_repo_pkgdel_alt()
{
52 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
    local archlist="i586 x86_64 aarch64 noarch"

    local REPO_DIR="$1"
    shift
    [ -d "$REPO_DIR" ] || fatal "Can't find repo dir $REPO_DIR."

    [ -n "$1" ] || fatal "Missed package name"

    # default name
    REPO_NAME="addon"
    # detect if already exists
    for arch in $archlist ; do
        local rd="$(echo $REPO_DIR/$arch/RPMS.*)"
        [ -d "$rd" ] && REPO_NAME="$(echo "$rd" | sed -e 's|.*\.||')" && break
    done

    while [ -s "$1" ] ; do
        for arch in $archlist ; do
            local rd="$REPO_DIR/$arch/RPMS.$REPO_NAME"
            for i in $rd/$1* ; do
                [ "$1" = "$(epm print name for package $i)" || continue
                rm -v $rd/$1*
            done
        done
        shift
    done
78 79 80 81 82 83

}


__epm_repo_pkgupdate_alt()
{
84 85 86 87 88 89 90
    local dir="$1"
    shift
    for i in "$@" ; do
        pkg="$(epm print name for package $i)" || fatal
        __epm_repo_pkgdel_alt "$dir" $pkg
    done
    __epm_repo_pkgadd_alt "$dir" "$@"
91 92 93 94 95 96 97 98
}



epm_repo_pkgadd()
{

case $PMTYPE in
99 100 101 102 103 104
    apt-rpm)
        __epm_repo_pkgadd_alt "$@"
        ;;
    *)
        fatal "Have no suitable command for $PMTYPE"
        ;;
105 106 107 108 109 110 111 112 113
esac

}


epm_repo_pkgupdate()
{

case $PMTYPE in
114 115 116 117 118 119
    apt-rpm)
        __epm_repo_pkgupdate_alt "$@"
        ;;
    *)
        fatal "Have no suitable command for $PMTYPE"
        ;;
120 121 122 123 124 125 126 127 128
esac

}


epm_repo_pkgdel()
{

case $PMTYPE in
129 130 131 132 133 134
    apt-rpm)
        __epm_repo_pkgdel_alt "$@"
        ;;
    *)
        fatal "Have no suitable command for $PMTYPE"
        ;;
135 136 137 138
esac

}