#!/bin/sh # # Copyright (C) 2012 Etersoft # Copyright (C) 2012 Vitaly Lipatov <lav@etersoft.ru> # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 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 General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. # # copied from /etc/init.d/outformat (ALT Linux) isatty() { # Set a sane TERM required for tput [ -n "$TERM" ] || TERM=dumb export TERM test -t 1 } check_tty() { isatty || return export USETTY=1 } : ${BLACK:=0} ${RED:=1} ${GREEN:=2} ${YELLOW:=3} ${BLUE:=4} ${MAGENTA:=5} ${CYAN:=6} ${WHITE:=7} set_boldcolor() { [ -n "$USETTY" ] || return { echo bold echo setaf $1 } |tput -S } restore_color() { [ -n "$USETTY" ] || return { echo op; # set Original color Pair. echo sgr0; # turn off all special graphics mode (bold in our case). } |tput -S } echover() { [ -n "$verbose" ] || return echo "$*" } # Used DISTRNAME set_target_pkg_env() { [ -n "$DISTRNAME" ] || fatal "Run set_target_pkg_env without DISTRNAME" PKGFORMAT=$($DISTRVENDOR -p "$DISTRNAME") PKGVENDOR=$($DISTRVENDOR -s "$DISTRNAME") RPMVENDOR=$($DISTRVENDOR -n "$DISTRNAME") } # for systems without realpath command realpath() { readlink -f "$@" } # Print command line and run command line showcmd() { if [ -z "$quiet" ] ; then set_boldcolor $GREEN local PROMTSIG="\$" [ "$UID" = 0 ] && PROMTSIG="#" echo " $PROMTSIG $@" restore_color fi >&2 } # Print command line and run command line docmd() { showcmd "$@" "$@" } # Print command line and run command line with SUDO sudocmd() { showcmd "$SUDO $@" $SUDO "$@" } filter_strip_spaces() { # possible use just #xargs echo sed -e "s| \+| |g" | \ sed -e "s|^ ||" | sed -e "s| \$||" } strip_spaces() { echo "$*" | filter_strip_spaces } # Print error message and stop the program fatal() { if [ -z "$TEXTDOMAIN" ] ; then echo "Error: $@" >&2 # else # echog "Error in $0: $@" >&2 fi exit 1 } set_sudo() { # set SUDO not for root user [ -n "$UID" ] || UID=`id -u` if [ $UID = "0" ]; then SUDO="" else SUDO="fatal 'Can't find sudo. Please install sudo or run epm under root.'" which sudo >/dev/null 2>/dev/null && SUDO="sudo" fi } # print options description from HELPCMD/HELPOPT lines in the code get_help() { grep "# $1" $PROGDIR/epm | while read n ; do opt=$(echo $n | sed -e "s|) # $1:.*||g") desc=$(echo $n | sed -e "s|.*) # $1:||g") printf " %-20s %s\n" $opt "$desc" done } # FIXME: detect if not recognized set_pm_type() { local CMD # Fill for use: PMTYPE, DISTRNAME, DISTRVERSION, PKGFORMAT, PKGVENDOR, RPMVENDOR DISTRVENDOR=$PROGDIR/distr_info [ -n "$DISTRNAME" ] || DISTRNAME=$($DISTRVENDOR -d) [ -n "$DISTRVERSION" ] || DISTRVERSION=$($DISTRVENDOR -v) set_target_pkg_env case $DISTRNAME in ALTLinux|PCLinux) CMD="apt-rpm" ;; Ubuntu|Debian|Mint) CMD="apt-dpkg" ;; Mandriva|ROSA) CMD="urpm-rpm" ;; FreeBSD) CMD="pkg_add" ;; Gentoo) CMD="emerge" ;; ArchLinux) CMD="pacman" ;; Fedora|LinuxXP|ASPLinux|CentOS|RHEL|Scientific) CMD="yum-rpm" ;; Slackware) CMD="slackpkg" ;; SUSE|SLED|SLES) CMD="zypper-rpm" ;; *) fatal "Do not known DISTRNAME $DISTRNAME" ;; esac PMTYPE=$CMD }