# General defines
%define shortnname mtoken
%define daemonname mtoken
%define username mtoken
%define groupname mtoken


Name:           perl-MToken
Version:        1.04
Release:        1%{?dist}
Summary:        MToken - Tokens processing system (Security)
License:        GPL+ or Artistic
Group:          Development/Libraries
URL:            https://metacpan.org/release/MToken
Source:         https://cpan.metacpan.org/authors/id/A/AB/ABALAMA/MToken-%{version}.tar.gz
BuildArch:      noarch

# Build
BuildRequires:  perl
BuildRequires:  perl(ExtUtils::MakeMaker)

# Pragmas
BuildRequires:  perl(base)
BuildRequires:  perl(constant)
BuildRequires:  perl(constant)
BuildRequires:  perl(feature)
BuildRequires:  perl(vars)

# Runtime
BuildRequires:  perl(Archive::Tar)
BuildRequires:  perl(CTK) >= 2.03
BuildRequires:  perl(DBI)
BuildRequires:  perl(DBD::SQLite)
BuildRequires:  perl(Digest::MD5)
BuildRequires:  perl(Digest::SHA)
BuildRequires:  perl(Encode::Locale)
BuildRequires:  perl(File::HomeDir)
BuildRequires:  perl(Mojolicious)
BuildRequires:  perl(Try::Tiny)
BuildRequires:  perl(URI)

# General
Requires:       perl(:MODULE_COMPAT_%(eval "$(perl -V:version)"; echo $version))
Requires:       openssl
Requires:       gnupg2
Requires:       perl(Archive::Tar)
Requires:       perl(CTK) >= 2.03
Requires:       perl(DBI)
Requires:       perl(DBD::SQLite)
Requires:       perl(Digest::MD5)
Requires:       perl(Digest::SHA)
Requires:       perl(Encode::Locale)
Requires:       perl(File::HomeDir)
Requires:       perl(Mojolicious)
Requires:       perl(Try::Tiny)
Requires:       perl(URI)


%{?perl_default_filter}


%description
Tokens processing system (Security)


%prep
%setup -q -n MToken-%{version}


%build
%{__perl} Makefile.PL INSTALLDIRS=vendor
%{__make} %{?_smp_mflags}


%install
[ "%{buildroot}" != "/" ] && rm -rf %{buildroot}
%{__make} install DESTDIR=%{buildroot}
find %{buildroot} -type f -name .packlist -exec rm -f {} ';'
find %{buildroot} -type f -name perllocal.pod -exec rm -f {} ';'
%{_fixperms} %{buildroot}/*

# Filesystem.
mkdir -p %{buildroot}%{_sysconfdir}
%{__cp} -R conf %{buildroot}%{_sysconfdir}/%{shortnname}
mkdir -p %{buildroot}%{_datadir}
%{__cp} -R src/www %{buildroot}%{_datadir}/%{shortnname}
mkdir -p %{buildroot}%{_sharedstatedir}/%{shortnname}
mkdir -p %{buildroot}%{_rundir}/%{shortnname}


# Install systemd unit files.
mkdir -p %{buildroot}%{_unitdir}
%{__install} -pDm644 src/%{daemonname}.service %{buildroot}%{_unitdir}/%{daemonname}.service
%{__install} -pDm644 src/%{daemonname}.default %{buildroot}%{_sysconfdir}/sysconfig/%{daemonname}


%check
%{__make} test


%pre
getent group %{groupname} &> /dev/null || groupadd -r %{groupname} &> /dev/null
getent passwd %{username} &> /dev/null || useradd -r -g %{groupname} -s /sbin/nologin %{username} &> /dev/null


%post
%systemd_post %{daemonname}.service


%preun
%systemd_preun %{daemonname}.service


%postun
%systemd_postun_with_restart %{daemonname}.service


%clean
[ "%{buildroot}" != "/" ] && rm -rf %{buildroot}


%files
%defattr(-,root,root,-)
%doc Changes README
%license LICENSE
%config(noreplace) %{_sysconfdir}/%{shortnname}
%{perl_vendorlib}/*
%{_bindir}/*
%{_mandir}/man1/*.1*
%{_mandir}/man3/*.3*
%{_datadir}/%{shortnname}/*
%{_unitdir}/%{daemonname}.service
%config(noreplace) %{_sysconfdir}/sysconfig/%{daemonname}
%dir %attr(0755, %{username}, %{groupname}) %{_sharedstatedir}/%{shortnname}


%changelog
* Sun Oct 10 2021 Serz Minus <abalama@cpan.org> - 1.04-1
- Mojolicious added
- Initial RHEL build

* Sat Jul 20 2019 Serz Minus <abalama@cpan.org> - 1.03-1
- Changed SHA1 digest module

* Wed Jun 19 2019 Serz Minus <abalama@cpan.org> - 1.02-1
- Initial RHEL build

* Mon Jun 3 2019 Serz Minus <abalama@cpan.org> - 1.01-1
- Initial release