%{?nodejs_find_provides_and_requires}
%{?nodejs_default_filter}
%global pkg_name Podman-Desktop
%global _optpkgdir /opt/%{pkg_name}
%global _icondir %{_datadir}/icons/hicolor/512x512/apps
%global debug_package %{nil}

Name: podman-desktop
Version: 1.17.2
Release: 1%{?dist}
Summary: Manage Podman and other container engines from a single UI and tray
License: Apache-2.0
URL: https://github.com/containers/%{name}
Source0: %{url}/archive/v%{version}.tar.gz
Source1: %{name}.desktop
Patch0: 0001-remove-post-install-browser-download.patch
Patch1: 0002-remove-flatpak-build-option-and-fuses.patch
Patch2: 0003-remove-playwright-image-prebuilt.patch
BuildRequires: nodejs-electron-devel
BuildRequires: pnpm
BuildRequires: nodejs-devel
BuildRequires: nodejs-packaging
BuildRequires: git-core
BuildRequires: nodejs-npm

# TODO: These don't work
#BuildRequires: npm(vite)
#BuildRequires: npm(electron-builder)

Requires: nodejs-electron%{?_isa}
Requires: podman
Suggests: libappindicator3-1

ExclusiveArch: x86_64 aarch64

%description
%{summary}

%prep
%autosetup -Sgit -n %{name}-%{version}

%build

# define exports for local source build
export ELECTRON_SKIP_BINARY_DOWNLOAD=1
export PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1
export MODE=production
export USE_SYSTEM_FPM="true"
export COREPACK_ENABLE_STRICT=0
export CXXFLAGS="%{optflags}"

# TODO: In theory, one could do --prod --frozen-lockfile
# This would make path0 and patch3 obsolete
# However, vite and electron-builder are dev-deps, so prod can't be used
pnpm install --ignore-scripts

# For some reason nodejs-electron's node has a few undefined http methods
# To avoid crashin on startup, add optional chain
sed -i 's/method.toLowerCase()/method?.toLowerCase()/g' node_modules/methods/index.js

pnpm run build
pnpm electron-builder build --linux dir --universal --config .electron-builder.config.cjs -c.electronDist=%{_libdir}/electron

rm -rf dist/linux-universal-unpacked/resources/app.asar.unpacked/node_modules/win-ca

%install
# install everything to /opt/%%{pkg_name}
install -dp %{buildroot}%{_optpkgdir}
cp -Rp dist/linux-universal-unpacked/* %{buildroot}%{_optpkgdir}

# install icon
install -dp %{buildroot}%{_icondir}
install -Dp -m0755 buildResources/icon-512x512.png %{buildroot}%{_icondir}/%{name}.png

# install desktop file
install -dp %{buildroot}%{_datadir}/applications
install -Dp -m0755 %{SOURCE1} %{buildroot}%{_datadir}/applications

# symlink main binary to /usr/bin
install -dp %{buildroot}%{_bindir}
ln -s %{_optpkgdir}/%{name} %{buildroot}%{_bindir}/%{name}

%files
%license LICENSE
%doc CODE-OF-CONDUCT.md CONTRIBUTING.md README.md SECURITY.md
%{_bindir}/%{name}
%dir %{_optpkgdir}
%{_optpkgdir}/*
%dir %{_icondir}
%{_icondir}/%{name}.png
%dir %{_datadir}/applications
%{_datadir}/applications/%{name}.desktop

%changelog
* Fri Mar 21 2025 curtisy <curtisy@mailbox.org> - 1.17.2-1
- New upstream release

* Mon Mar 10 2025 curtisy <curtisy@mailbox.org> - 1.17.1-1
- New upstream release

* Fri Feb 07 2025 curtisy <curtisy@mailbox.org> - 1.16.1-2
- Require podman

* Fri Feb 07 2025 curtisy <curtisy@mailbox.org> - 1.16.1-1
- Update to new minor version

* Sun Feb 02 2025 curtisy <curtisy@mailbox.org> - 1.16.0-1
- Initial version of the package