#!/bin/sh # # Copyright (C) 2012, 2014, 2016-2017 Etersoft # Copyright (C) 2012, 2014, 2016-2017 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/>. # # copied from korinf/tools/run-script/scripts/update load_helper epm-sh-warmup load_helper epm-check_updated_repo # TODO: restore mirroring get_latest_version() { URL="https://eepm.ru/app-versions" #update_url_if_need_mirrored epm tool eget -q -O- "$URL/$1" } __check_for_epm_version() { # skip update checking for eepm from repo (ALT bug #44314) [ "$BASEDISTRNAME" = "alt" ] && [ "$DISTRVERSION" != "Sisyphus" ] && epm status --original eepm && return local latest="$(get_latest_version eepm)" #[ -z "$latest" ] && return local res="$(epm print compare "$EPMVERSION" "$latest")" [ "$res" = "-1" ] && info "Latest EPM version in Korinf repository is $latest. You have version $EPMVERSION running." && info "You can update eepm with \$ epm ei command." } __save_available_packages() { [ -d "$epm_vardir" ] || return 0 info "Retrieve all available packages (for autocompletion) ..." load_helper epm-list_available short=--short epm_list_available | sort | sudorun tee $epm_vardir/available-packages >/dev/null } epm_update() { [ -z "$*" ] || fatal "No arguments are allowed here" info "Running command for update remote package repository database" local ret=0 warmup_hibase case $PMTYPE in apt-rpm) # TODO: hack against cd to cwd in apt-get on ALT cd / sudocmd apt-get update ret="$?" cd - >/dev/null [ "$ret" = "0" ] || return __check_for_epm_version #sudocmd apt-get -f install || exit ;; apt-dpkg) sudocmd apt-get update || return #sudocmd apt-get -f install || exit #sudocmd apt-get autoremove ;; packagekit) docmd pkcon refresh ;; #snappy) # sudocmd snappy # ;; aptitude-dpkg) sudocmd aptitude update || return ;; yum-rpm) # just skipped [ -z "$verbose" ] || info "update command is stubbed for yum" ;; dnf-rpm) # just skipped [ -z "$verbose" ] || info "update command is stubbed for dnf" ;; urpm-rpm) sudocmd urpmi.update -a ;; pacman) sudocmd pacman -S -y ;; aura) sudocmd aura -A -y ;; zypper-rpm) sudocmd zypper $(subst_option non_interactive --non-interactive) refresh ;; emerge) sudocmd emerge --sync ;; slackpkg) sudocmd /usr/sbin/slackpkg -batch=on update ;; deepsolver-rpm) sudocmd ds-update ;; npackd) sudocmd packdcl detect # get packages from MSI database ;; homebrew) docmd brew update ;; opkg) sudocmd opkg update ;; eopkg) sudocmd eopkg update-repo ;; apk) sudocmd apk update ;; nix) sudocmd nix-channel --update ;; pkgsrc) # portsnap extract for the first time? sudocmd portsnap fetch update ;; aptcyg) sudocmd apt-cyg update ;; xbps) sudocmd xbps-install -S ;; winget) sudocmd winget source update ;; *) fatal "Have no suitable update command for $PMTYPE" ;; esac __epm_touch_pkg __save_available_packages return 0 }