File cockpit-minesweeper.spec of Package cockpit-minesweeper
Name: cockpit-minesweeper
Version: 1
Release: 1%{?dist}
Summary: Minesweeper game for Cockpit
License: LGPL-2.1-or-later
# distributions which ship nodejs-esbuild can rebuild the bundle during package build
%if 0%{?fedora} >= 42
%define rebuild_bundle 1
%endif
Source0: https://github.com/rsimai/cockpit-minesweeper/releases/download/%{version}/%{name}-%{version}.tar.xz
%if %{defined rebuild_bundle}
Source1: https://github.com/rsimai/cockpit-minesweeper/releases/download/%{version}/%{name}-node-%{version}.tar.xz
%endif
BuildArch: noarch
%if ! 0%{?suse_version}
ExclusiveArch: %{nodejs_arches} noarch
%endif
BuildRequires: make
%if 0%{?suse_version}
BuildRequires: appstream-glib
%else
BuildRequires: libappstream-glib
%endif
BuildRequires: gettext
%if 0%{?rhel} && 0%{?rhel} <= 8
BuildRequires: libappstream-glib-devel
%endif
%if %{defined rebuild_bundle}
BuildRequires: /usr/bin/node
BuildRequires: nodejs-esbuild
%endif
Requires: cockpit-bridge
Provides: bundled(npm(@patternfly/react-core)) = 6.1.0
Provides: bundled(npm(@patternfly/react-icons)) = 6.1.0
Provides: bundled(npm(@patternfly/react-styles)) = 6.4.0
Provides: bundled(npm(@patternfly/react-tokens)) = 6.4.0
Provides: bundled(npm(focus-trap)) = 7.6.2
Provides: bundled(npm(react)) = 18.3.1
Provides: bundled(npm(react-dom)) = 18.3.1
Provides: bundled(npm(scheduler)) = 0.23.2
Provides: bundled(npm(tabbable)) = 6.4.0
Provides: bundled(npm(tslib)) = 2.8.1
%description
A fully playable Minesweeper game running as a Cockpit web application.
Features classic gameplay with selectable board sizes and mine counts,
a timer that starts on first click, and flag support via right-click.
%prep
%autosetup -n %{name}
%if %{defined rebuild_bundle}
%setup -q -D -T -a 1 -n %{name}
%endif
%build
%if %{defined rebuild_bundle}
rm -rf dist
NODE_ENV=production NODE_PATH=/usr/lib/node_modules:$(echo /usr/lib/node_modules_*) ./build.js
%endif
%install
%make_install PREFIX=/usr
# Relocate cockpit data to the expected package path
if [ -d %{buildroot}%{_datadir}/cockpit/minesweeper ]; then
mkdir -p %{buildroot}%{_datadir}/cockpit/cockpit-minesweeper
mv %{buildroot}%{_datadir}/cockpit/minesweeper/* %{buildroot}%{_datadir}/cockpit/cockpit-minesweeper/
rmdir %{buildroot}%{_datadir}/cockpit/minesweeper
fi
# Rename/relocate metainfo to openSUSE path
mkdir -p %{buildroot}%{_datadir}/metainfo
if [ -f %{buildroot}%{_datadir}/metainfo/org.cockpit_project.minesweeper.metainfo.xml ]; then
mv %{buildroot}%{_datadir}/metainfo/org.cockpit_project.minesweeper.metainfo.xml \
%{buildroot}%{_datadir}/metainfo/org.opensuse.cockpit_minesweeper.metainfo.xml
fi
# drop source maps
find %{buildroot}%{_datadir}/cockpit/ -name '*.map' | xargs --no-run-if-empty rm --verbose
%check
appstream-util validate-relax --nonet %{buildroot}/%{_datadir}/metainfo/*
%files
%license LICENSE
%doc README.md
%dir %{_datadir}/cockpit
%dir %{_datadir}/cockpit/cockpit-minesweeper
%{_datadir}/cockpit/cockpit-minesweeper/*
%{_datadir}/metainfo/org.opensuse.cockpit_minesweeper.metainfo.xml
%changelog