#!/bin/sh
#
#  Copyright (c) 2017, The OpenThread Authors.
#  All rights reserved.
#
#  Redistribution and use in source and binary forms, with or without
#  modification, are permitted provided that the following conditions are met:
#  1. Redistributions of source code must retain the above copyright
#     notice, this list of conditions and the following disclaimer.
#  2. Redistributions in binary form must reproduce the above copyright
#     notice, this list of conditions and the following disclaimer in the
#     documentation and/or other materials provided with the distribution.
#  3. Neither the name of the copyright holder nor the
#     names of its contributors may be used to endorse or promote products
#     derived from this software without specific prior written permission.
#
#  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
#  AND ANY EXPRESS 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 COPYRIGHT HOLDER OR 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.
#

otbr_uninstall()
{
    if have systemctl; then
        sudo systemctl stop otbr-web otbr-agent wpantund || true
        sudo systemctl disable otbr-web otbr-agent wpantund || true
        ! sudo systemctl is-enabled otbr-web
        ! sudo systemctl is-enabled otbr-agent
        ! sudo systemctl is-enabled wpantund
    fi
    sudo killall otbr-web otbr-agent || true

    test ! -f config.status || sudo make uninstall || true
    if have systemctl; then
        sudo systemctl daemon-reload
    fi
}

otbr_install()
{
    test -f config.status || $(pwd)/configure \
        --exec-prefix=/usr \
        --prefix= \
        --sysconfdir=/etc \
        $(without COVERAGE || echo '--enable-coverage')

    make -j$(getconf _NPROCESSORS_ONLN)
    sudo make install
    if have systemctl; then
        sudo systemctl reload dbus
        sudo systemctl daemon-reload
        sudo systemctl enable wpantund otbr-web otbr-agent || true
        sudo systemctl is-enabled wpantund || die 'Failed to enable wpantund!'
        sudo systemctl is-enabled otbr-agent || die 'Failed to enable otbr-agent!'
        sudo systemctl is-enabled otbr-web || die 'Failed to enable otbr-web!'
    else
        >&2 echo ' *** WARNING: systemctl not found. otbr cannot start on boot.'
    fi
}

otbr_update()
{
    test ! -f config.status || make distclean
    test ! -f configure || find * -name Makefile.in -o -name configure | grep -v nlbuild-autotools | xargs rm -v
    script/bootstrap

    otbr_install
}
