File miniserve.spec of Package miniserve

Name:           miniserve
Version:        0.29.0
Release:        0
Summary:        Tool to serve files via HTTP
#               If you know the license, put it's SPDX string here.
#               Alternately, you can use cargo lock2rpmprovides to help generate this.
License:        MIT
Url:            https://github.com/svenstaro/miniserve
Source0:        %{name}-%{version}.tar.zst
Source1:        vendor.tar.zst
BuildRequires:  cargo >= 1.85.0
BuildRequires:  cargo-packaging
BuildRequires:  openssl-devel
BuildRequires:  pkgconfig
ExclusiveArch:  %{rust_tier1_arches}

%description
Small, self-contained cross-platform CLI tool that allows you to serve some file(s) via HTTP.

%prep
%autosetup -p1 -a1
# Remove exec bits to prevent an issue in fedora shebang checking. Uncomment only if required.
# find vendor -type f -name \*.rs -exec chmod -x '{}' \;

%build
cargo build --release --locked

%install
install -D -d -m 0755 %{buildroot}%{_bindir}
install -m 0755 %{_builddir}/%{name}-%{version}/target/release/%{name} %{buildroot}%{_bindir}/%{name}

mkdir -p -m 0755 %{buildroot}%{_datadir}/bash-completion/completions
mkdir -p -m 0755 %{buildroot}%{_datadir}/zsh/site-functions
mkdir -p -m 0755 %{buildroot}%{_datadir}/fish/vendor_completions.d

%{buildroot}%{_bindir}/%{name} --print-completions bash > %{buildroot}%{_datadir}/bash-completion/completions/%{name}
%{buildroot}%{_bindir}/%{name} --print-completions zsh > %{buildroot}%{_datadir}/zsh/site-functions/_%{name}
%{buildroot}%{_bindir}/%{name} --print-completions fish > %{buildroot}%{_datadir}/fish/vendor_completions.d/%{name}.fish

mkdir -p -m 0755 %{buildroot}%{_mandir}/man1
%{buildroot}%{_bindir}/%{name} --print-manpage | gzip > %{buildroot}%{_mandir}/man1/%{name}.1.gz

mkdir -p -m 0755 %{buildroot}%{_libdir}/systemd/system
install -Dm644 packaging/%{name}@.service %{buildroot}%{_unitdir}/%{name}@.service

mkdir -p -m 0755 %{buildroot}%{_datadir}/licenses/%{name}
install -Dm644 LICENSE %{buildroot}%{_datadir}/licenses/%{name}/

%check
cargo test --release --locked -- --test-threads=1 --skip bind_ipv4_ipv6::case_2 --skip cant_navigate_up_the_root --skip qrcode_shown_in_tty_when_enabled

%files
%license LICENSE
# Binaries
%{_bindir}/%{name}
# Completions
%{_datadir}/bash-completion/completions/miniserve
%dir %{_datadir}/fish/
%dir %{_datadir}/fish/vendor_completions.d/
%{_datadir}/fish/vendor_completions.d/miniserve.fish
%dir %{_datadir}/zsh/
%dir %{_datadir}/zsh/site-functions/
%{_datadir}/zsh/site-functions/_miniserve
# Manpages
%{_mandir}/man1/%{name}.1.gz
# Services
%{_unitdir}/miniserve@.service
openSUSE Build Service is sponsored by