##
##  beehive.spec -- OpenPKG RPM Package Specification
##  Copyright (c) 2000-2025 OpenPKG Project <http://openpkg.org/>
##
##  Permission to use, copy, modify, and distribute this software for
##  any purpose with or without fee is hereby granted, provided that
##  the above copyright notice and this permission notice appear in all
##  copies.
##
##  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.
##

#   package version
%define       V_opkg  0.4.0
%define       V_dist  20210516

#   package information
Name:         beehive
Summary:      Event and Agent System
URL:          https://github.com/muesli/beehive
Vendor:       Christian Muehlhaeuser
Packager:     OpenPKG Project
Distribution: OpenPKG Community
Class:        EVAL
Group:        Networking
License:      AGPL
Version:      %{V_opkg}.%{V_dist}
Release:      20210516

#   list of sources
Source0:      http://download.openpkg.org/components/versioned/beehive/beehive-%{V_dist}.tar.xz
Source1:      beehive.conf
Source2:      rc.beehive
Patch0:       beehive.patch

#   build information
BuildPreReq:  OpenPKG, openpkg >= 20160101, go
PreReq:       OpenPKG, openpkg >= 20160101

%description
    Beehive is an event and agent system, which allows you to create
    your own agents that perform automated tasks triggered by events
    and filters. It is modular, flexible and really easy to extend for
    anyone. It has modules (we call them Hives), so it can interface
    with, talk to, or retrieve information from Twitter, Tumblr, Email,
    IRC, Jabber, RSS, Jenkins, Hue - to name just a few.

%track
    prog beehive:release = {
        version   = %{V_opkg}
        url       = https://github.com/muesli/beehive/releases
        regex     = (\d+\.\d+\.\d+)\.tar\.gz
    }
    prog beehive:snapshot = {
        version   = %{V_dist}
        url       = http://download.openpkg.org/components/versioned/beehive/
        regex     = beehive-(__VER__)\.tar\.xz
    }

%prep
    %setup -q -n beehive
    %patch -p0

%build
    #   build program
    export GOPATH=`pwd`
    cd src/github.com/muesli/beehive
    %{l_make} %{l_mflags} embed

%install
    #   create directory hierarchy
    %{l_shtool} mkdir -f -p -m 755 \
        $RPM_BUILD_ROOT%{l_prefix}/sbin \
        $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d \
        $RPM_BUILD_ROOT%{l_prefix}/etc/beehive \
        $RPM_BUILD_ROOT%{l_prefix}/var/beehive/run \
        $RPM_BUILD_ROOT%{l_prefix}/var/beehive/log

    #   install program
    %{l_shtool} install -c -s -m 755 \
        src/github.com/muesli/beehive/beehive \
        $RPM_BUILD_ROOT%{l_prefix}/sbin/

    #   install default configuration
    %{l_shtool} install -c -m 644 %{l_value -s -a} \
        %{SOURCE beehive.conf} $RPM_BUILD_ROOT%{l_prefix}/etc/beehive/

    #   install run-command script
    %{l_shtool} install -c -m 755 %{l_value -s -a} \
        %{SOURCE rc.beehive} $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d/

    #   determine installation files
    %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT \
        %{l_files_std} \
        '%attr(-,%{l_rusr},%{l_rgrp}) %{l_prefix}/etc/beehive' \
        '%config %attr(-,%{l_rusr},%{l_rgrp}) %{l_prefix}/etc/beehive/*' \
        '%attr(-,%{l_rusr},%{l_rgrp}) %{l_prefix}/var/beehive/*'

%files -f files

%clean

%post
    if [ $1 -eq 2 ]; then
        #   after upgrade, restart service
        eval `%{l_rc} beehive status 2>/dev/null`
        [ ".$beehive_active" = .yes ] && %{l_rc} beehive restart
    fi
    exit 0

%preun
    if [ $1 -eq 0 ]; then
        #   before erase, stop service and remove log files
        %{l_rc} beehive stop 2>/dev/null
        rm -rf $RPM_INSTALL_PREFIX/var/beehive/log/*  >/dev/null 2>&1 || true
        rm -rf $RPM_INSTALL_PREFIX/var/beehive/run/*  >/dev/null 2>&1 || true
    fi
    exit 0

