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