#!@l_prefix@/bin/openpkg rc
##
##  rc.openpkg -- Run-Commands
##  Copyright (c) 2000-2012 OpenPKG GmbH <http://openpkg.com/>
##
##  This software is property of the OpenPKG GmbH, DE MUC HRB 160208.
##  All rights reserved. Licenses which grant limited permission to use,
##  copy, modify and distribute this software are available from the
##  OpenPKG GmbH.
##
##  THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED
##  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
##  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
##  IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR
##  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
##  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
##  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
##  USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
##  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
##  OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
##  OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
##  SUCH DAMAGE.
##

%config
    openpkg_rc_def="yes"
    openpkg_rc_all="$openpkg_rc_def"
    openpkg_enable="$openpkg_rc_def"
    openpkg_envprio="high"
    openpkg_reghour="3"
    openpkg_regrand="1"

%status -o
    openpkg_usable="unknown"
    openpkg_active="unknown"
    echo "openpkg_enable=\"$openpkg_enable\""
    echo "openpkg_usable=\"$openpkg_usable\""
    echo "openpkg_active=\"$openpkg_active\""

%info -o
    @l_prefix@/bin/openpkg uuid info

%start -p0
    rcService openpkg enable yes || exit 0

    #   update UUID information (in background to not slow down boot sequences)
    (nohup @l_prefix@/bin/openpkg uuid update </dev/null >/dev/null 2>&1 &) >/dev/null 2>&1

%hourly -u @l_musr@
    rcService openpkg enable yes || exit 0

    #   automatic (re-)registration
    reregister=0

    #   re-register if previously registered
    @l_prefix@/bin/openpkg register --printstatus >/dev/null 2>&1 && reregister=1

    #   re-register if "openpkg release" configured to pull packages directly from openpkg.(org|com|net)
    [ $reregister -eq 0 ] && @l_prefix@/bin/openpkg release --fmt='%u' \
    | egrep '^[^:]*://(([^:]*:)?([^@]*@)?)?([^/]*\.)?openpkg\.(com|org|net)/' >/dev/null && reregister=1

    #   perform (re-)registration
    if [ $reregister -eq 1 ]; then
        [ $openpkg_reghour -lt 00 -o $openpkg_reghour -gt 23 ] && openpkg_reghour="3"
        now=`date '+%H'`
        [ $openpkg_reghour -eq $now ] || exit 0
        [ $openpkg_regrand -lt 01 -o $openpkg_regrand -gt 04 ] && openpkg_regrand="1"
        rnd=`expr $RANDOM \* 3600 \* $openpkg_regrand / 32768`
        (nohup @l_prefix@/lib/openpkg/bash -c "sleep $rnd; @l_prefix@/bin/openpkg register" </dev/null >/dev/null 2>&1 &) >/dev/null 2>&1
    fi

%daily -p0
    rcService openpkg enable yes || exit 0

    #   update UUID information
    @l_prefix@/bin/openpkg uuid update >/dev/null 2>&1 || true

%env -p0
    rcService openpkg enable yes || exit 0

    #   determine append (low prio) or prepend (high prio) mode
    opt_prepend=""
    if [ ".$openpkg_envprio" = ".high" ]; then
        opt_prepend="-p"
    fi

    #   make sure the software package executables are found
    export PATH
    rcPath -a -e PATH \
        /bin /sbin /usr/bin /usr/sbin
    rcPath -a ${opt_prepend} PATH \
        @l_prefix@/bin @l_prefix@/sbin \
        @l_prefix@/local/bin @l_prefix@/local/sbin

    #   make sure the software package manual pages are found
    export MANPATH
    rcPath -a -e MANPATH \
        /usr/man /usr/share/man
    rcPath -a ${opt_prepend} MANPATH \
        @l_prefix@/man @l_prefix@/local/man

    #   make sure the software package info pages are found
    export INFOPATH
    rcPath -a -e INFOPATH \
        /usr/info /usr/share/info
    rcPath -a ${opt_prepend} INFOPATH \
        @l_prefix@/info @l_prefix@/local/info

    #   make sure the software package libraries are found
    export LD_LIBRARY_PATH
    rcPath -a -e LD_LIBRARY_PATH \
        /lib /usr/lib
    rcPath -a ${opt_prepend} LD_LIBRARY_PATH \
        @l_prefix@/lib @l_prefix@/local/lib

    #   cleanup
    unset opt_prepend

