fixed build on mac
This commit is contained in:
		
							
								
								
									
										2
									
								
								COPYING
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								COPYING
									
									
									
									
									
								
							@@ -1 +1 @@
 | 
			
		||||
/usr/share/automake-1.13/COPYING
 | 
			
		||||
/usr/local/Cellar/automake/1.15.1/share/automake-1.15/COPYING
 | 
			
		||||
							
								
								
									
										2
									
								
								INSTALL
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								INSTALL
									
									
									
									
									
								
							@@ -1 +1 @@
 | 
			
		||||
/usr/share/automake-1.13/INSTALL
 | 
			
		||||
/usr/local/Cellar/automake/1.15.1/share/automake-1.15/INSTALL
 | 
			
		||||
@@ -274,9 +274,11 @@ AC_DEFUN([AX_QT_NO_KEYWORDS], [
 | 
			
		||||
])
 | 
			
		||||
 | 
			
		||||
AC_DEFUN([AX_INIT_QT], [
 | 
			
		||||
  test -f src/makefile.in && cat >> src/makefile.in <<EOF
 | 
			
		||||
#### HERE
 | 
			
		||||
  if test -n "${AX_ADDITIONAL_QT_RULES_HACK}"; then
 | 
			
		||||
    for f in $(find test examples src -name makefile.in); do
 | 
			
		||||
      test -f "$f" && cat >> "$f" <<EOF
 | 
			
		||||
${AX_ADDITIONAL_QT_RULES_HACK}    
 | 
			
		||||
#### WE ARE
 | 
			
		||||
EOF
 | 
			
		||||
    done
 | 
			
		||||
  fi
 | 
			
		||||
])
 | 
			
		||||
 
 | 
			
		||||
@@ -90,7 +90,7 @@ dnl refers to ${prefix}.  Thus we have to use `eval' twice.
 | 
			
		||||
#     $3 = filename of makefile.in
 | 
			
		||||
AC_DEFUN([AX_ADD_MAKEFILE_TARGET_DEP], [
 | 
			
		||||
  sh_add_makefile_target_dep() {
 | 
			
		||||
    sed -i -e ':a;/^'${1}':.*\\$/{N;s/\\\n//;ta};s/^'${1}':.*$/& '${2}'/' "${srcdir}/${3}"
 | 
			
		||||
    sed -i -e ':a;/^'${1}':.*\\$/{N;s/\\\n//;ta};s/^'"${1}"':.*$/& '"${2}"'/' "${srcdir}/${3}"
 | 
			
		||||
    if ! egrep -q "${1}:.* ${2}" "${srcdir}/${3}"; then
 | 
			
		||||
        echo "${1}: ${2}" >> "${srcdir}/${3}"
 | 
			
		||||
    fi
 | 
			
		||||
@@ -171,7 +171,7 @@ AC_DEFUN([AX_INIT_STANDARD_PROJECT], [
 | 
			
		||||
  AX_SUBST(HOME)
 | 
			
		||||
  if test -f README.md; then
 | 
			
		||||
    README=$(tail -n +3 README.md)
 | 
			
		||||
    DESCRIPTION=$(head -1 README.md)
 | 
			
		||||
    DESCRIPTION=$(head -1 README.md | sed 's,^#\+ *,,;s, *#\+$,,')
 | 
			
		||||
  else
 | 
			
		||||
    README=$(tail -n +3 README)
 | 
			
		||||
    DESCRIPTION=$(head -1 README)
 | 
			
		||||
@@ -1225,8 +1225,9 @@ AC_DEFUN([AX_ALL_DEPEND], [
 | 
			
		||||
 | 
			
		||||
# finish configuration - to be called instead of AC_OUTPUT
 | 
			
		||||
AC_DEFUN([AX_OUTPUT], [
 | 
			
		||||
  AX_INIT_QT
 | 
			
		||||
  AX_DEB_RESOLVE
 | 
			
		||||
  AX_RPM_RESOLVE
 | 
			
		||||
  AC_OUTPUT
 | 
			
		||||
  AX_INIT_QT
 | 
			
		||||
  AC_MSG_NOTICE([configured for ${PACKAGE_NAME}-${VERSION}])
 | 
			
		||||
])
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										289
									
								
								bootstrap.sh
									
									
									
									
									
								
							
							
						
						
									
										289
									
								
								bootstrap.sh
									
									
									
									
									
								
							@@ -31,8 +31,9 @@ while test $# -gt 0; do
 | 
			
		||||
        (--configure|-c) configure=1;;
 | 
			
		||||
        (--docker|-d) docker=1;;
 | 
			
		||||
        (--build|-b) configure=1; build=1; buildtarget+=" distcheck";;
 | 
			
		||||
        (--all|-a) shift; configure=1; build=1; buildtarget+=" all";;
 | 
			
		||||
        (--clean) shift; configure=1; build=1; buildtarget+=" maintainer-clean";;
 | 
			
		||||
        (--all|-a) configure=1; build=1; buildtarget+=" all";;
 | 
			
		||||
        (--install|-i) configure=1; build=1; buildtarget+=" all install";;
 | 
			
		||||
        (--clean) configure=1; build=1; buildtarget+=" maintainer-clean";;
 | 
			
		||||
        (--target|-t) shift; configure=1; build=1; buildtarget+=" $1";;
 | 
			
		||||
        (--overwrite|-o) overwrite=1;;
 | 
			
		||||
        (--rebuild|-r) rebuild=1;;
 | 
			
		||||
@@ -53,6 +54,7 @@ OPTIONS
 | 
			
		||||
  --docker, -d               build and run tests in a docker instance
 | 
			
		||||
  --build, -b                build, also call ./configure && make distcheck
 | 
			
		||||
  --all, -a                  same as -b, but make target all
 | 
			
		||||
  --install, -i              same as -a, but add make install
 | 
			
		||||
  --clean                    same as -b, but make target maintainer-clean
 | 
			
		||||
  --target, -t <target>      same as -b, but specify target instead of distcheck
 | 
			
		||||
  --overwrite, -o            overwrite all basic files (bootstrap.sh, m4-macros)
 | 
			
		||||
@@ -138,10 +140,12 @@ GENERATED FILES
 | 
			
		||||
    * build-resource-file.sh - build resource.qrc file from a resource directory
 | 
			
		||||
    * sql-to-dot.sed - script to convert SQL schema files to graphviz dot in doxygen
 | 
			
		||||
    * mac-create-app-bundle.sh - script to create apple mac os-x app-bundle
 | 
			
		||||
    * dependency-graph.sh - script to draw project dependencies
 | 
			
		||||
    * template.sh - generic template for bash scripts
 | 
			
		||||
    * test/runtests.sh - template file to run test scripts, i.e. docker based
 | 
			
		||||
    * AUTHORS - replace your name in AUTHORS before first run
 | 
			
		||||
    * NEWS - empty file add your project's news
 | 
			
		||||
    * README - add project description (first line is header, followed by an empty line)
 | 
			
		||||
    * README (or README.md) - add project description (first line: header, followed by empty line)
 | 
			
		||||
    * configure.ac - global configuration file template
 | 
			
		||||
    * makefile.am - global makefile template
 | 
			
		||||
    * ${DEFAULT_PROJECT_NAME}.desktop.in - linux desktop file
 | 
			
		||||
@@ -300,7 +304,91 @@ EOF
 | 
			
		||||
    shift;
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
echo -en "\e[1m-> checking:\e[0m for version control system ..."
 | 
			
		||||
# check if stdout is a terminal...
 | 
			
		||||
if test -t 1; then
 | 
			
		||||
 | 
			
		||||
    # see if it supports colors...
 | 
			
		||||
    ncolors=$(tput colors)
 | 
			
		||||
 | 
			
		||||
    if test -n "$ncolors" && test $ncolors -ge 8; then
 | 
			
		||||
        bold="$(tput bold)"
 | 
			
		||||
        underline="$(tput smul)"
 | 
			
		||||
        standout="$(tput smso)"
 | 
			
		||||
        normal="$(tput sgr0)"
 | 
			
		||||
        black="$(tput setaf 0)"
 | 
			
		||||
        red="$(tput setaf 1)"
 | 
			
		||||
        green="$(tput setaf 2)"
 | 
			
		||||
        yellow="$(tput setaf 3)"
 | 
			
		||||
        blue="$(tput setaf 4)"
 | 
			
		||||
        magenta="$(tput setaf 5)"
 | 
			
		||||
        cyan="$(tput setaf 6)"
 | 
			
		||||
        white="$(tput setaf 7)"
 | 
			
		||||
    fi
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
notice() {
 | 
			
		||||
    echo "${yellow}→ notice: ${bold}$*${normal}"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
running() {
 | 
			
		||||
    echo -n "${bold}${blue}→ running: ${bold}${white}$*${normal} … "
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
checking() {
 | 
			
		||||
    echo -n "${bold}${blue}→ checking: ${bold}${white}$*${normal} … "
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
generating() {
 | 
			
		||||
    echo -n "${bold}${blue}→ generating: ${bold}${white}$*${normal} … "
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
configuring() {
 | 
			
		||||
    echo -n "${bold}${blue}→ configuring ${bold}${white}$1${normal}:"
 | 
			
		||||
    shift
 | 
			
		||||
    echo -n "${white}$*${normal} … "
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
ignored() {
 | 
			
		||||
    echo "${bold}${yellow}ignored $*${normal}"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
success() {
 | 
			
		||||
    echo "${bold}${green}success $*${normal}"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
error() {
 | 
			
		||||
    echo "${bold}${red}→ error: $1${normal}"
 | 
			
		||||
    shift
 | 
			
		||||
    if test -n "$*"; then
 | 
			
		||||
        echo "${bold}$*${normal}"
 | 
			
		||||
    fi
 | 
			
		||||
    exit 1
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
run() {
 | 
			
		||||
    check=1
 | 
			
		||||
    while test $# -gt 0; do
 | 
			
		||||
        case "$1" in
 | 
			
		||||
            (--no-check) check=0;;
 | 
			
		||||
            (*) break;;
 | 
			
		||||
        esac
 | 
			
		||||
        shift;
 | 
			
		||||
    done
 | 
			
		||||
    running $*
 | 
			
		||||
    result=$($* 2>&1)
 | 
			
		||||
    res=$?
 | 
			
		||||
    if test $res -ne 0; then
 | 
			
		||||
        if test $check -eq 1; then
 | 
			
		||||
            error "Failed with return code: $res" "$result"
 | 
			
		||||
        else
 | 
			
		||||
            ignored
 | 
			
		||||
        fi
 | 
			
		||||
    else
 | 
			
		||||
        success
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
checking for version control system
 | 
			
		||||
VCS=""
 | 
			
		||||
VCSDEPENDS=""
 | 
			
		||||
for path in . .. ../.. ../../..; do
 | 
			
		||||
@@ -308,18 +396,18 @@ for path in . .. ../.. ../../..; do
 | 
			
		||||
        VCS="svn"
 | 
			
		||||
        VCSDEPENDS_DEB="svn2cl, subversion, subversion-tools,"
 | 
			
		||||
        VCSDEPENDS_RPM="subversion, "
 | 
			
		||||
        echo -e " \e[32msuccess\e[0m detected ${VCS}"
 | 
			
		||||
        success detected ${VCS}
 | 
			
		||||
        break
 | 
			
		||||
    elif test -d ${path}/.git; then
 | 
			
		||||
        VCS="git"
 | 
			
		||||
        VCSDEPENDS_DEB="git2cl, git,"
 | 
			
		||||
        VCSDEPENDS_RPM="git, "
 | 
			
		||||
        echo -e " \e[32msuccess\e[0m detected ${VCS}"
 | 
			
		||||
        success detected ${VCS}
 | 
			
		||||
        break
 | 
			
		||||
    fi
 | 
			
		||||
done
 | 
			
		||||
if test -z "$VCS"; then
 | 
			
		||||
    echo -e " \e[33mignored\e[0m"
 | 
			
		||||
    ignored
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
HEADER='## @id '"\$Id\$"'
 | 
			
		||||
@@ -347,38 +435,6 @@ CHEADER='/** @id '"\$Id\$"'
 | 
			
		||||
 | 
			
		||||
'
 | 
			
		||||
 | 
			
		||||
notice() {
 | 
			
		||||
    echo -e "\e[1;33m$*\e[0m"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
run() {
 | 
			
		||||
    check=1
 | 
			
		||||
    while test $# -gt 0; do
 | 
			
		||||
        case "$1" in
 | 
			
		||||
            (--no-check) check=0;;
 | 
			
		||||
            (*) break;;
 | 
			
		||||
        esac
 | 
			
		||||
        shift;
 | 
			
		||||
    done
 | 
			
		||||
    echo -en "\e[1m-> running:\e[0m $* ..."
 | 
			
		||||
    result=$($* 2>&1)
 | 
			
		||||
    res=$?
 | 
			
		||||
    if test $res -ne 0; then
 | 
			
		||||
        if test $check -eq 1; then
 | 
			
		||||
            echo -e " \e[31merror\e[0m"
 | 
			
		||||
            echo -e "\e[1m*** Failed with return code: $res\e[0m"
 | 
			
		||||
            if test -n "$result"; then
 | 
			
		||||
                echo "$result"
 | 
			
		||||
            fi
 | 
			
		||||
            exit 1
 | 
			
		||||
        else
 | 
			
		||||
            echo -e " \e[33mignored\e[0m"
 | 
			
		||||
        fi
 | 
			
		||||
    else
 | 
			
		||||
        echo -e " \e[32msuccess\e[0m"
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
testtag() {
 | 
			
		||||
    local IFS="|"
 | 
			
		||||
    egrep -q '^ *'"($*)"' *(\(.*)? *$' configure.ac
 | 
			
		||||
@@ -431,18 +487,13 @@ to() {
 | 
			
		||||
        return 1
 | 
			
		||||
    fi
 | 
			
		||||
    checkdir "$(dirname ${1})"
 | 
			
		||||
    echo -en "\e[1m-> generating:\e[0m $1 ..."
 | 
			
		||||
    generating $1
 | 
			
		||||
    result=$(cat > "$1" 2>&1)
 | 
			
		||||
    res=$?
 | 
			
		||||
    if test $res -ne 0; then
 | 
			
		||||
        echo -e " \e[31merror\e[0m"
 | 
			
		||||
        echo -e "\e[1m*** Failed with return code: $res\e[0m"
 | 
			
		||||
        if test -n "$result"; then
 | 
			
		||||
            echo "$result"
 | 
			
		||||
        fi
 | 
			
		||||
        exit 1
 | 
			
		||||
        error "Failed with return code: $res" "$result"
 | 
			
		||||
    else
 | 
			
		||||
        echo -e " \e[32msuccess\e[0m"
 | 
			
		||||
        success
 | 
			
		||||
    fi
 | 
			
		||||
    run chmod $mode $1
 | 
			
		||||
    if test $exists -eq 0; then
 | 
			
		||||
@@ -484,24 +535,20 @@ copy() {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
doxyreplace() {
 | 
			
		||||
    echo -en "\e[1m-> doxyfile:\e[0m configure $1 ..."
 | 
			
		||||
    configuring doxyfile $1
 | 
			
		||||
    if sed -i 's|\(^'"$1"' *=\) *.*|\1'" $2"'|g' doc/doxyfile.in; then
 | 
			
		||||
        echo -e " \e[32msuccess\e[0m"
 | 
			
		||||
        success
 | 
			
		||||
    else
 | 
			
		||||
        echo -e " \e[31merror\e[0m"
 | 
			
		||||
        echo -e "\e[1m**** command: $0 $*\e[0m"
 | 
			
		||||
        exit 1
 | 
			
		||||
        error $0 $*
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
doxyadd() {
 | 
			
		||||
    echo -en "\e[1m-> doxyfile:\e[0m configure $1 ..."
 | 
			
		||||
    configuring  doxyfile $1
 | 
			
		||||
    if sed -i '/^'"$1"' *=/a'"$1"' += '"$2" doc/doxyfile.in; then
 | 
			
		||||
        echo -e " \e[32msuccess\e[0m"
 | 
			
		||||
        success
 | 
			
		||||
    else
 | 
			
		||||
        echo -e " \e[31merror\e[0m"
 | 
			
		||||
        echo -e "\e[1m**** command: $0 $*\e[0m"
 | 
			
		||||
        exit 1
 | 
			
		||||
        error $0 $*
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -512,13 +559,18 @@ vcs2cl() {
 | 
			
		||||
    else
 | 
			
		||||
        touch "ChangeLog"
 | 
			
		||||
    fi
 | 
			
		||||
    if test -x $(which timeout); then
 | 
			
		||||
        local TIMEOUT="timeout 10"
 | 
			
		||||
    else
 | 
			
		||||
        local TIMEOUT=
 | 
			
		||||
    fi
 | 
			
		||||
    if test -x $(which ${VCS}2cl); then
 | 
			
		||||
        if test "${VCS}" = "git"; then
 | 
			
		||||
            ${VCS}2cl > ChangeLog
 | 
			
		||||
            $TIMEOUT ${VCS}2cl || true > ChangeLog
 | 
			
		||||
        elif test "${VCS}" = "svn"; then
 | 
			
		||||
            ${VCS}2cl --break-before-msg -a -i
 | 
			
		||||
            $TIMEOUT ${VCS}2cl --break-before-msg -a -i || true
 | 
			
		||||
        elif test -n "${VCS}"; then
 | 
			
		||||
            ${VCS}2cl
 | 
			
		||||
            $TIMEOUT ${VCS}2cl || true
 | 
			
		||||
        fi
 | 
			
		||||
    fi
 | 
			
		||||
    if test $exists -eq 0; then
 | 
			
		||||
@@ -549,6 +601,8 @@ copy rpmsign.exp
 | 
			
		||||
copy build-resource-file.sh
 | 
			
		||||
copy sql-to-dot.sed
 | 
			
		||||
copy mac-create-app-bundle.sh
 | 
			
		||||
copy dependency-graph.sh
 | 
			
		||||
copy template.sh
 | 
			
		||||
AUTHOR=$(gpg -K 2>/dev/null | sed -n 's,uid *\(\[ultimate\] *\)\?,,p' | head -1)
 | 
			
		||||
if test -z "${AUTHOR}"; then
 | 
			
		||||
    AUTHOR="FIRSTNAME LASTNAME (URL) <EMAIL>"
 | 
			
		||||
@@ -559,11 +613,18 @@ EOF
 | 
			
		||||
to NEWS <<EOF && notice "please edit NEWS"
 | 
			
		||||
$(date) created ${DEFAULT_PROJECT_NAME}
 | 
			
		||||
EOF
 | 
			
		||||
to README <<EOF && notice "please edit README"
 | 
			
		||||
if test -e README.md; then
 | 
			
		||||
    README=README.md
 | 
			
		||||
else
 | 
			
		||||
    README=README
 | 
			
		||||
    to README <<EOF && notice "please edit README"
 | 
			
		||||
 | 
			
		||||
${DEFAULT_PROJECT_NAME}
 | 
			
		||||
 | 
			
		||||
add description for ${DEFAULT_PROJECT_NAME}
 | 
			
		||||
EOF
 | 
			
		||||
fi
 | 
			
		||||
DESCRIPTION=$(head -1 $README | sed 's,^#\+ *,,;s, *#\+$,,')
 | 
			
		||||
to configure.ac <<EOF && notice "please edit configure.ac, then rerun $0" && exit 0
 | 
			
		||||
${HEADER}# default is generated from AUTHORS and project name
 | 
			
		||||
PROJECT_URL=
 | 
			
		||||
@@ -1040,15 +1101,16 @@ to --condition AX_USE_NODEJS nodejs/etc/${PACKAGE_NAME}.json <<EOF
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
EOF
 | 
			
		||||
PACKAGE_NAME_UPPER=$(echo ${PACKAGE_NAME} | tr '+[:lower:]' 'X[:upper:]' | tr -cd '[[:alnum:]]_-.')
 | 
			
		||||
to --condition AX_USE_NODEJS nodejs/etc/default/${PACKAGE_NAME} <<EOF
 | 
			
		||||
#EXEC_${PACKAGE_NAME^^}="/usr/bin/nodejs /usr/share/${PACKAGE_NAME}/nodejs/${PACKAGE_NAME}"
 | 
			
		||||
#${PACKAGE_NAME^^}_LOG="/var/log/${PACKAGE_NAME^^}.log"
 | 
			
		||||
#${PACKAGE_NAME^^}="${PACKAGE_NAME}"
 | 
			
		||||
#${PACKAGE_NAME^^}_PORT="8888"
 | 
			
		||||
#EXEC_${PACKAGE_NAME_UPPER}="/usr/bin/nodejs /usr/share/${PACKAGE_NAME}/nodejs/${PACKAGE_NAME}"
 | 
			
		||||
#${PACKAGE_NAME_UPPER}_LOG="/var/log/${PACKAGE_NAME}.log"
 | 
			
		||||
#${PACKAGE_NAME_UPPER}="${PACKAGE_NAME}"
 | 
			
		||||
#${PACKAGE_NAME_UPPER}_PORT="8888"
 | 
			
		||||
EOF
 | 
			
		||||
to --condition AX_USE_NODEJS nodejs/etc/init/${PACKAGE_NAME}.conf <<EOF
 | 
			
		||||
#!upstart
 | 
			
		||||
description "$(head -1 README)"
 | 
			
		||||
description "$DESCRIPTION"
 | 
			
		||||
author      "$(head -1 AUTHORS)"
 | 
			
		||||
 | 
			
		||||
start on (local-filesystems and net-device-up)
 | 
			
		||||
@@ -1060,35 +1122,35 @@ script
 | 
			
		||||
    echo \$\$ > /var/run/${PACKAGE_NAME}.pid
 | 
			
		||||
    # there are some useful defaults
 | 
			
		||||
    # do not edit this file, overwrite values in /etc/default/${PACKAGE_NAME}
 | 
			
		||||
    EXEC_${PACKAGE_NAME^^}="/usr/bin/nodejs /usr/share/${PACKAGE_NAME}/nodejs/${PACKAGE_NAME}"
 | 
			
		||||
    ${PACKAGE_NAME^^}_LOG="/var/log/${PACKAGE_NAME}.log"
 | 
			
		||||
    ${PACKAGE_NAME^^}_USER="${PACKAGE_NAME}"
 | 
			
		||||
    ${PACKAGE_NAME^^}_PORT=""
 | 
			
		||||
    EXEC_${PACKAGE_NAME_UPPER}="/usr/bin/nodejs /usr/share/${PACKAGE_NAME}/nodejs/${PACKAGE_NAME}"
 | 
			
		||||
    ${PACKAGE_NAME_UPPER}_LOG="/var/log/${PACKAGE_NAME}.log"
 | 
			
		||||
    ${PACKAGE_NAME_UPPER}_USER="${PACKAGE_NAME}"
 | 
			
		||||
    ${PACKAGE_NAME_UPPER}_PORT=""
 | 
			
		||||
    [ -r /etc/default/${PACKAGE_NAME} ] && . /etc/default/${PACKAGE_NAME}
 | 
			
		||||
    if test -n "\${${PACKAGE_NAME^^}_USER}"; then
 | 
			
		||||
        exec sudo -u "\${${PACKAGE_NAME^^}_USER}" \${EXEC_${PACKAGE_NAME^^}} \${${PACKAGE_NAME^^}_PORT} >> \${${PACKAGE_NAME^^}_LOG} 2>&1
 | 
			
		||||
    if test -n "\${${PACKAGE_NAME_UPPER}_USER}"; then
 | 
			
		||||
        exec sudo -u "\${${PACKAGE_NAME_UPPER}_USER}" \${EXEC_${PACKAGE_NAME_UPPER}} \${${PACKAGE_NAME_UPPER}_PORT} >> \${${PACKAGE_NAME_UPPER}_LOG} 2>&1
 | 
			
		||||
    else
 | 
			
		||||
        exec \${EXEC_${PACKAGE_NAME^^}} \${${PACKAGE_NAME^^}_PORT} >> \${${PACKAGE_NAME^^}_LOG} 2>&1
 | 
			
		||||
        exec \${EXEC_${PACKAGE_NAME_UPPER}} \${${PACKAGE_NAME_UPPER}_PORT} >> \${${PACKAGE_NAME_UPPER}_LOG} 2>&1
 | 
			
		||||
    fi
 | 
			
		||||
end script
 | 
			
		||||
 | 
			
		||||
pre-start script
 | 
			
		||||
    ${PACKAGE_NAME^^}_LOG="/var/log/${PACKAGE_NAME}.log"
 | 
			
		||||
    ${PACKAGE_NAME_UPPER}_LOG="/var/log/${PACKAGE_NAME}.log"
 | 
			
		||||
    [ -r /etc/default/${PACKAGE_NAME} ] && . /etc/default/${PACKAGE_NAME}
 | 
			
		||||
    # Date format same as (new Date()).toISOString() for consistency
 | 
			
		||||
    echo "[`date -u +%Y-%m-%dT%T.%3NZ`] (sys) Starting" >> \${${PACKAGE_NAME^^}_LOG}
 | 
			
		||||
    echo "[`date -u +%Y-%m-%dT%T.%3NZ`] (sys) Starting" >> \${${PACKAGE_NAME_UPPER}_LOG}
 | 
			
		||||
end script
 | 
			
		||||
 | 
			
		||||
pre-stop script
 | 
			
		||||
    ${PACKAGE_NAME^^}_LOG="/var/log/${PACKAGE_NAME}.log"
 | 
			
		||||
    ${PACKAGE_NAME_UPPER}_LOG="/var/log/${PACKAGE_NAME}.log"
 | 
			
		||||
    [ -r /etc/default/${PACKAGE_NAME} ] && . /etc/default/${PACKAGE_NAME}
 | 
			
		||||
    rm /var/run/${PACKAGE_NAME}.pid
 | 
			
		||||
    echo "[`date -u +%Y-%m-%dT%T.%3NZ`] (sys) Stopping" >> \${${PACKAGE_NAME^^}_LOG}
 | 
			
		||||
    echo "[`date -u +%Y-%m-%dT%T.%3NZ`] (sys) Stopping" >> \${${PACKAGE_NAME_UPPER}_LOG}
 | 
			
		||||
end script
 | 
			
		||||
EOF
 | 
			
		||||
to --condition AX_USE_NODEJS nodejs/etc/systemd/system/${PACKAGE_NAME}.service <<EOF
 | 
			
		||||
[Unit]
 | 
			
		||||
Description=$(head -1 README)
 | 
			
		||||
Description=$DESCRIPTION
 | 
			
		||||
 | 
			
		||||
[Service]
 | 
			
		||||
ExecStart=/usr/bin/nodejs /usr/share/${PACKAGE_NAME}/nodejs/${PACKAGE_NAME}
 | 
			
		||||
@@ -1216,11 +1278,11 @@ to --condition AX_USE_NODEJS nodejs/views/index.ejs <<EOF
 | 
			
		||||
    <link href="stylesheets/style.css" rel="stylesheet" type="text/css" />
 | 
			
		||||
    <script type="text/javascript" src="/socket.io/socket.io.js"></script>
 | 
			
		||||
    <script type="text/javascript" src="javascripts/${PACKAGE_NAME}.js"></script>
 | 
			
		||||
    <title>$(head -1 README)</title>
 | 
			
		||||
    <title>$DESCRIPTION</title>
 | 
			
		||||
  </head>
 | 
			
		||||
 | 
			
		||||
  <body>
 | 
			
		||||
    <h1>$(head -1 README)</h1>
 | 
			
		||||
    <h1>$DESCRIPTION</h1>
 | 
			
		||||
    <p>generated by bootstrap, please edit</p>
 | 
			
		||||
  </body>
 | 
			
		||||
</html>
 | 
			
		||||
@@ -1571,7 +1633,7 @@ EOF2
 | 
			
		||||
EOF
 | 
			
		||||
    to debian/docs <<EOF
 | 
			
		||||
NEWS
 | 
			
		||||
README
 | 
			
		||||
$README
 | 
			
		||||
EOF
 | 
			
		||||
    to --condition AX_USE_LIBTOOL debian/${PACKAGE_NAME}.install <<EOF
 | 
			
		||||
usr/lib/lib*.so.*
 | 
			
		||||
@@ -1616,7 +1678,7 @@ fi)
 | 
			
		||||
$(if testtag AX_RPM_DEPEND; then echo "Requires: @RPM_DEPEND@"; fi)
 | 
			
		||||
Source0: %{name}-%{version}.tar.gz
 | 
			
		||||
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
 | 
			
		||||
BuildRequires: which, pkgconfig, gnupg, expect, ${VCSDEPENDS_RPM}make, automake, autoconf, rpm-build$(
 | 
			
		||||
BuildRequires: which, pkgconfig, pandoc, gnupg, expect, ${VCSDEPENDS_RPM}make, automake, autoconf, rpm-build$(
 | 
			
		||||
    if testtag AX_USE_CXX; then
 | 
			
		||||
      echo -n ", binutils-devel, gcc-c++"
 | 
			
		||||
    fi
 | 
			
		||||
@@ -1695,25 +1757,20 @@ rm -rf \$RPM_BUILD_ROOT
 | 
			
		||||
$(if testtag AX_USE_LIBTOOL; then
 | 
			
		||||
echo '/usr/%_lib/*.so.*'
 | 
			
		||||
else
 | 
			
		||||
echo '/usr/bin/*'
 | 
			
		||||
echo '/usr/share/applications/*'
 | 
			
		||||
echo '/usr/bin'
 | 
			
		||||
echo '/usr/share/applications'
 | 
			
		||||
fi)
 | 
			
		||||
$(if testtag AX_USE_NODEJS AX_BUILD_HTML AX_BUILD_HTML_NPM; then
 | 
			
		||||
echo '/usr/share/@PACKAGE_NAME@'
 | 
			
		||||
/usr/share/@PACKAGE_NAME@
 | 
			
		||||
$(if testtag AX_USE_ETC; then
 | 
			
		||||
 | 
			
		||||
cat <<EOF2
 | 
			
		||||
%config
 | 
			
		||||
/etc/*
 | 
			
		||||
 | 
			
		||||
EOF2
 | 
			
		||||
fi)
 | 
			
		||||
%doc
 | 
			
		||||
$(if testtag AX_USE_LIBTOOL; then
 | 
			
		||||
  cat <<EOF2
 | 
			
		||||
/usr/share/doc/packages/@PACKAGE_NAME@/AUTHORS
 | 
			
		||||
/usr/share/doc/packages/@PACKAGE_NAME@/COPYING
 | 
			
		||||
/usr/share/doc/packages/@PACKAGE_NAME@/ChangeLog
 | 
			
		||||
/usr/share/doc/packages/@PACKAGE_NAME@/INSTALL
 | 
			
		||||
/usr/share/doc/packages/@PACKAGE_NAME@/NEWS
 | 
			
		||||
/usr/share/doc/packages/@PACKAGE_NAME@/README
 | 
			
		||||
EOF2
 | 
			
		||||
else
 | 
			
		||||
  echo '/usr/share'
 | 
			
		||||
fi)
 | 
			
		||||
/usr/share/doc
 | 
			
		||||
 | 
			
		||||
$(if testtag AX_USE_LIBTOOL; then
 | 
			
		||||
cat <<EOF2
 | 
			
		||||
@@ -1783,7 +1840,18 @@ $(case "$VCS" in
 | 
			
		||||
esac)
 | 
			
		||||
fi
 | 
			
		||||
aclocal
 | 
			
		||||
$(if testtag AX_USE_LIBTOOL; then echo libtoolize --force; fi)
 | 
			
		||||
$(if testtag AX_USE_LIBTOOL; then
 | 
			
		||||
cat <<EOF1
 | 
			
		||||
if which libtoolize > /dev/null; then
 | 
			
		||||
  run libtoolize --force;
 | 
			
		||||
elif which glibtoolize > /dev/null; then
 | 
			
		||||
  run glibtoolize --force;
 | 
			
		||||
else
 | 
			
		||||
  echo "error: libtoolize not found" 1>&2
 | 
			
		||||
  exit 1
 | 
			
		||||
fi
 | 
			
		||||
EOF1
 | 
			
		||||
fi)
 | 
			
		||||
automake -a
 | 
			
		||||
autoconf
 | 
			
		||||
EOF
 | 
			
		||||
@@ -1792,15 +1860,24 @@ ${HEADER}SUBDIRS =${SUBDIRS}
 | 
			
		||||
 | 
			
		||||
desktopdir = \${datadir}/applications
 | 
			
		||||
desktop_DATA = @PACKAGE_DESKTOP@
 | 
			
		||||
dist_pkgdata_DATA = @PACKAGE_ICON@ ax_check_qt.m4 bootstrap.sh		\\
 | 
			
		||||
dist_pkgdata_DATA = @PACKAGE_ICON@
 | 
			
		||||
dist_noinst_DATA = ax_check_qt.m4 bootstrap.sh				\\
 | 
			
		||||
                   resolve-rpmbuilddeps.sh autogen.sh			\\
 | 
			
		||||
                    ax_cxx_compile_stdcxx_11.m4 build-in-docker.sh	\\
 | 
			
		||||
                    build-resource-file.sh				\\
 | 
			
		||||
                    ax_init_standard_project.m4				\\
 | 
			
		||||
                    mac-create-app-bundle.sh resolve-debbuilddeps.sh    \\
 | 
			
		||||
                    dependency-graph.sh template.sh                     \\
 | 
			
		||||
                    sql-to-dot.sed
 | 
			
		||||
dist_doc_DATA = AUTHORS NEWS README COPYING INSTALL ChangeLog
 | 
			
		||||
dist_doc_DATA = AUTHORS NEWS $README COPYING INSTALL ChangeLog
 | 
			
		||||
$(if test -e README.md -a ! -e README; then
 | 
			
		||||
cat <<EOF2
 | 
			
		||||
 | 
			
		||||
README: README.md
 | 
			
		||||
 | 
			
		||||
CLEANFILES = README
 | 
			
		||||
EOF2
 | 
			
		||||
fi)
 | 
			
		||||
MAINTAINERCLEANFILES = makefile.in
 | 
			
		||||
EOF
 | 
			
		||||
to --condition AX_USE_LIBTOOL src/${PACKAGE_NAME}.pc.in <<EOF
 | 
			
		||||
@@ -1842,7 +1919,15 @@ else
 | 
			
		||||
    #### Bootstrap Before Configure ####
 | 
			
		||||
    run --no-check vcs2cl
 | 
			
		||||
    run aclocal
 | 
			
		||||
    if testtag AX_USE_LIBTOOL; then run libtoolize --force; fi
 | 
			
		||||
    if testtag AX_USE_LIBTOOL; then
 | 
			
		||||
        if which libtoolize > /dev/null; then
 | 
			
		||||
            run libtoolize --force;
 | 
			
		||||
        elif which glibtoolize > /dev/null; then
 | 
			
		||||
            run glibtoolize --force;
 | 
			
		||||
        else
 | 
			
		||||
            error libtoolize not found
 | 
			
		||||
        fi
 | 
			
		||||
    fi
 | 
			
		||||
    run automake -a
 | 
			
		||||
    run autoconf
 | 
			
		||||
    
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										171
									
								
								dependency-graph.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										171
									
								
								dependency-graph.sh
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,171 @@
 | 
			
		||||
#!/bin/bash -e
 | 
			
		||||
 | 
			
		||||
# template for bash scripts
 | 
			
		||||
 | 
			
		||||
# internal use only
 | 
			
		||||
append_msg() {
 | 
			
		||||
    if test $# -ne 0; then
 | 
			
		||||
        echo -en ":\e[0m \e[1m$*"
 | 
			
		||||
    fi
 | 
			
		||||
    echo -e "\e[0m"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# write a notice
 | 
			
		||||
notice() {
 | 
			
		||||
    if test $# -eq 0; then
 | 
			
		||||
        return
 | 
			
		||||
    fi
 | 
			
		||||
    echo -e "\e[1m$*\e[0m" 1>&3
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# write error message
 | 
			
		||||
error() {
 | 
			
		||||
    echo -en "\e[1;31merror" 1>&2
 | 
			
		||||
    append_msg $* 1>&2
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# write a warning message
 | 
			
		||||
warning() {
 | 
			
		||||
    echo -en "\e[1;33mwarning" 1>&2
 | 
			
		||||
    append_msg $* 1>&2
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# write a success message
 | 
			
		||||
success() {
 | 
			
		||||
    echo -en "\e[1;32msuccess" 1>&2
 | 
			
		||||
    append_msg $* 1>&2
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# commandline parameter evaluation
 | 
			
		||||
files=${0%/*}/configure.ac
 | 
			
		||||
short=0
 | 
			
		||||
while test $# -gt 0; do
 | 
			
		||||
    case "$1" in
 | 
			
		||||
        (--short|-s) short=1;;
 | 
			
		||||
        (--help|-h) less <<EOF
 | 
			
		||||
SYNOPSIS
 | 
			
		||||
 | 
			
		||||
  $0 [OPTIONS] <files>
 | 
			
		||||
 | 
			
		||||
OPTIONS
 | 
			
		||||
 | 
			
		||||
  --help, -h                 show this help
 | 
			
		||||
  --short, -s                short graph with no external dependencies
 | 
			
		||||
 | 
			
		||||
  <files>                    list of zero or more configure.ac files
 | 
			
		||||
                             (default: ${files})
 | 
			
		||||
 | 
			
		||||
DESCRIPTION
 | 
			
		||||
 | 
			
		||||
  Evaluates dependencies of all the given configure.ac file. By
 | 
			
		||||
  default takes the local configure.ac. Outputs a graphwiz dot file
 | 
			
		||||
  with the dependencies. Solid lines are required dependencies, dotted
 | 
			
		||||
  lines are optional dependencies.
 | 
			
		||||
 | 
			
		||||
EXAMPLE
 | 
			
		||||
 | 
			
		||||
  Evaluate all dependencies between all local subversion and git
 | 
			
		||||
  projects, if they are in the path ~/svn and ~/git:
 | 
			
		||||
 | 
			
		||||
    $0 ~/svn/*/configure.ac ~/git/*/configure.ac 
 | 
			
		||||
 | 
			
		||||
EOF
 | 
			
		||||
            exit;;
 | 
			
		||||
        (*) files=$*; break;;
 | 
			
		||||
    esac
 | 
			
		||||
    if test $# -eq 0; then
 | 
			
		||||
        error "missing parameter, try $0 --help"; exit 1
 | 
			
		||||
    fi
 | 
			
		||||
    shift;
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
# run a command, print the result and abort in case of error
 | 
			
		||||
# option: --no-check: ignore the result, continue in case of error
 | 
			
		||||
run() {
 | 
			
		||||
    check=1
 | 
			
		||||
    while test $# -gt 0; do
 | 
			
		||||
        case "$1" in
 | 
			
		||||
            (--no-check) check=0;;
 | 
			
		||||
            (*) break;;
 | 
			
		||||
        esac
 | 
			
		||||
        shift;
 | 
			
		||||
    done
 | 
			
		||||
    echo -en "\e[1m-> running:\e[0m $* ..."
 | 
			
		||||
    result=$($* 2>&1)
 | 
			
		||||
    res=$?
 | 
			
		||||
    if test $res -ne 0; then
 | 
			
		||||
        if test $check -eq 1; then
 | 
			
		||||
            error "failed with return code: $res"
 | 
			
		||||
            if test -n "$result"; then
 | 
			
		||||
                echo "$result"
 | 
			
		||||
            fi
 | 
			
		||||
            exit 1
 | 
			
		||||
        else
 | 
			
		||||
            warning "ignored return code: $res"
 | 
			
		||||
        fi
 | 
			
		||||
    else
 | 
			
		||||
        success
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# error handler
 | 
			
		||||
function traperror() {
 | 
			
		||||
    set +x
 | 
			
		||||
    local err=($1) # error status
 | 
			
		||||
    local line="$2" # LINENO
 | 
			
		||||
    local linecallfunc="$3"
 | 
			
		||||
    local command="$4"
 | 
			
		||||
    local funcstack="$5"
 | 
			
		||||
    for e in ${err[@]}; do
 | 
			
		||||
        if test -n "$e" -a "$e" != "0"; then
 | 
			
		||||
            error "line $line - command '$command' exited with status: $e (${err[@]})"
 | 
			
		||||
            if [ "${funcstack}" != "main" -o "$linecallfunc" != "0" ]; then
 | 
			
		||||
                echo -n "   ... error at ${funcstack} "
 | 
			
		||||
                if [ "$linecallfunc" != "" ]; then
 | 
			
		||||
                    echo -n "called at line $linecallfunc"
 | 
			
		||||
                fi
 | 
			
		||||
                echo
 | 
			
		||||
            fi
 | 
			
		||||
            exit $e
 | 
			
		||||
        fi
 | 
			
		||||
    done
 | 
			
		||||
    success
 | 
			
		||||
    exit 0
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# catch errors
 | 
			
		||||
trap 'traperror "$? ${PIPESTATUS[@]}" $LINENO $BASH_LINENO "$BASH_COMMAND" "${FUNCNAME[@]}" "${FUNCTION}"' ERR SIGINT INT TERM EXIT
 | 
			
		||||
 | 
			
		||||
##########################################################################################
 | 
			
		||||
 | 
			
		||||
filter() {
 | 
			
		||||
    if test $short -eq 1; then
 | 
			
		||||
        all=$(cat)
 | 
			
		||||
        allowed=$(sed -n '/"\(.*\)" \[style=solid\];/{s//\1/;H};${x;s/\n//;s/\n/\\|/gp}' <<<"${all}")
 | 
			
		||||
        sed -n '/"\('"${allowed}"'\)" -> "\('"${allowed}"'\)"/p' <<<"${all}"
 | 
			
		||||
    else
 | 
			
		||||
        cat
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
echo "digraph G {"
 | 
			
		||||
if test $short -eq 0; then
 | 
			
		||||
    echo "node [style=dashed];"
 | 
			
		||||
fi
 | 
			
		||||
(
 | 
			
		||||
    for file in $files; do
 | 
			
		||||
        if ! test -e $file; then
 | 
			
		||||
            error "file $file not found"; exit 1
 | 
			
		||||
        fi
 | 
			
		||||
        sed -n '
 | 
			
		||||
      /^ *m4_define(x_package_name, */ {s//"/;s/ *).*/"/;h;s/.*/& [style=solid];/p}
 | 
			
		||||
      /^ *AX_REQUIRE_QT/ {s/.*/"qt" -> /;G;s/\n//;s/.*/&;/p}
 | 
			
		||||
      /^ *AX_PKG_REQUIRE(\[\?\([^],)]\+\)\]\?, \[\?\([^],)]\+\)\]\?.*/ {s//"\2" -> /;G;s/\n//;s/.*/&;/p}
 | 
			
		||||
      /^ *AX_PKG_REQUIRE(\[\?\([^],)]\+\)\]\?.*/ {s//"\1" -> /;G;s/\n//;s/.*/&;/p}
 | 
			
		||||
      /^ *AX_CHECK_QT/ {s/.*/"qt" -> /;G;s/\n//;s/.*/& [style=dashed];/p}
 | 
			
		||||
      /^ *AX_PKG_CHECK(\[\?\([^],)]\+\)\]\?, \[\?\([^],)]\+\)\]\?.*/ {s//"\2" -> /;G;s/\n//;s/.*/& [style=dotted];/p}
 | 
			
		||||
      /^ *AX_PKG_CHECK(\[\?\([^],)]\+\)\]\?.*/ {s//"\1" -> /;G;s/\n//;s/.*/& [style=dotted];/p}
 | 
			
		||||
    ' $file
 | 
			
		||||
    done
 | 
			
		||||
) | filter
 | 
			
		||||
echo "}"
 | 
			
		||||
							
								
								
									
										159
									
								
								template.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										159
									
								
								template.sh
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,159 @@
 | 
			
		||||
#!/bin/bash -e
 | 
			
		||||
 | 
			
		||||
##########################################################################################
 | 
			
		||||
#### template for bash scripts #### START BELOW ##########################################
 | 
			
		||||
##########################################################################################
 | 
			
		||||
 | 
			
		||||
############################################################################ begin logging
 | 
			
		||||
# check if stdout is a terminal...
 | 
			
		||||
if test -t 1; then
 | 
			
		||||
 | 
			
		||||
    # see if it supports colors...
 | 
			
		||||
    ncolors=$(tput colors)
 | 
			
		||||
 | 
			
		||||
    if test -n "$ncolors" && test $ncolors -ge 8; then
 | 
			
		||||
        bold="$(tput bold)"
 | 
			
		||||
        underline="$(tput smul)"
 | 
			
		||||
        standout="$(tput smso)"
 | 
			
		||||
        normal="$(tput sgr0)"
 | 
			
		||||
        black="$(tput setaf 0)"
 | 
			
		||||
        red="$(tput setaf 1)"
 | 
			
		||||
        green="$(tput setaf 2)"
 | 
			
		||||
        yellow="$(tput setaf 3)"
 | 
			
		||||
        blue="$(tput setaf 4)"
 | 
			
		||||
        magenta="$(tput setaf 5)"
 | 
			
		||||
        cyan="$(tput setaf 6)"
 | 
			
		||||
        white="$(tput setaf 7)"
 | 
			
		||||
    fi
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
append_msg() {
 | 
			
		||||
    if test $# -ne 0; then
 | 
			
		||||
        echo -n ": ${bold}$*"
 | 
			
		||||
    fi
 | 
			
		||||
    echo "${normal}"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# write a message
 | 
			
		||||
message() {
 | 
			
		||||
    if test $# -eq 0; then
 | 
			
		||||
        return
 | 
			
		||||
    fi
 | 
			
		||||
    echo "${bold}${while}$*${normal}" 1>&2
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# write a success message
 | 
			
		||||
success() {
 | 
			
		||||
    echo -n "${bold}${green}success" 1>&2
 | 
			
		||||
    append_msg $* 1>&2
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# write a notice
 | 
			
		||||
notice() {
 | 
			
		||||
    echo -n "${bold}${yellow}notice" 1>&2
 | 
			
		||||
    append_msg $* 1>&2
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# write a warning message
 | 
			
		||||
warning() {
 | 
			
		||||
    echo -en "${bold}${red}warning" 1>&2
 | 
			
		||||
    append_msg $* 1>&2
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# write error message
 | 
			
		||||
error() {
 | 
			
		||||
    echo -en "${bold}${red}error" 1>&2
 | 
			
		||||
    append_msg $* 1>&2
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# run a command, print the result and abort in case of error
 | 
			
		||||
# option: --ignore: ignore the result, continue in case of error
 | 
			
		||||
run() {
 | 
			
		||||
    ignore=1
 | 
			
		||||
    while test $# -gt 0; do
 | 
			
		||||
        case "$1" in
 | 
			
		||||
            (--ignore) ignore=0;;
 | 
			
		||||
            (*) break;;
 | 
			
		||||
        esac
 | 
			
		||||
        shift;
 | 
			
		||||
    done
 | 
			
		||||
    echo -n "${bold}${yellow}running:${white} $*${normal} … "
 | 
			
		||||
    set +e
 | 
			
		||||
    result=$($* 2>&1)
 | 
			
		||||
    res=$?
 | 
			
		||||
    set -e
 | 
			
		||||
    if test $res -ne 0; then
 | 
			
		||||
        if test $ignore -eq 1; then
 | 
			
		||||
            error "failed with return code: $res"
 | 
			
		||||
            if test -n "$result"; then
 | 
			
		||||
                echo "$result"
 | 
			
		||||
            fi
 | 
			
		||||
            exit 1
 | 
			
		||||
        else
 | 
			
		||||
            warning "ignored return code: $res"
 | 
			
		||||
        fi
 | 
			
		||||
    else
 | 
			
		||||
        success
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
############################################################################ error handler
 | 
			
		||||
function traperror() {
 | 
			
		||||
    set +x
 | 
			
		||||
    local err=($1) # error status
 | 
			
		||||
    local line="$2" # LINENO
 | 
			
		||||
    local linecallfunc="$3"
 | 
			
		||||
    local command="$4"
 | 
			
		||||
    local funcstack="$5"
 | 
			
		||||
    for e in ${err[@]}; do
 | 
			
		||||
        if test -n "$e" -a "$e" != "0"; then
 | 
			
		||||
            error "line $line - command '$command' exited with status: $e (${err[@]})"
 | 
			
		||||
            if [ "${funcstack}" != "main" -o "$linecallfunc" != "0" ]; then
 | 
			
		||||
                echo -n "   ... error at ${funcstack} " 1>&2
 | 
			
		||||
                if [ "$linecallfunc" != "" ]; then
 | 
			
		||||
                    echo -n "called at line $linecallfunc" 1>&2
 | 
			
		||||
                fi
 | 
			
		||||
                echo
 | 
			
		||||
            fi
 | 
			
		||||
            exit $e
 | 
			
		||||
        fi
 | 
			
		||||
    done
 | 
			
		||||
    success
 | 
			
		||||
    exit 0
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# catch errors
 | 
			
		||||
trap 'traperror "$? ${PIPESTATUS[@]}" $LINENO $BASH_LINENO "$BASH_COMMAND" "${FUNCNAME[@]}" "${FUNCTION}"' ERR SIGINT INT TERM EXIT
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
##########################################################################################
 | 
			
		||||
#### START HERE ##########################################################################
 | 
			
		||||
##########################################################################################
 | 
			
		||||
 | 
			
		||||
######################################################### commandline parameter evaluation
 | 
			
		||||
while test $# -gt 0; do
 | 
			
		||||
    case "$1" in
 | 
			
		||||
        (--help|-h) less <<EOF
 | 
			
		||||
SYNOPSIS
 | 
			
		||||
 | 
			
		||||
  $0 [OPTIONS]
 | 
			
		||||
 | 
			
		||||
OPTIONS
 | 
			
		||||
 | 
			
		||||
  --help, -h                 show this help
 | 
			
		||||
 | 
			
		||||
DESCRIPTION
 | 
			
		||||
 | 
			
		||||
EOF
 | 
			
		||||
            exit;;
 | 
			
		||||
        (*) error "unknow option $1, try $0 --help"; exit 1;;
 | 
			
		||||
    esac
 | 
			
		||||
    if test $# -eq 0; then
 | 
			
		||||
        error "missing parameter, try $0 --help"; exit 1
 | 
			
		||||
    fi
 | 
			
		||||
    shift;
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
##################################################################################### Main
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user