Files
CCMA/pyproject.toml
T
Marcel Peterkau 302170230a feat: Add Windows compatibility, PyInstaller build setup, and custom icon
- Add Windows LibreOffice detection fallback for soffice path
  - Check standard install locations (%PROGRAMFILES%, %PROGRAMFILES(X86)%)
  - Graceful fallback with clear error messages

- Add PyInstaller build infrastructure
  - build/ccma.spec: PyInstaller configuration with icon generation
  - build/build.ps1: Automated build script for standalone exe
  - main.py: Entry point for PyInstaller
  - Supports versioning and architecture tagging

- Create custom CCMA icon
  - Person + Gear symbol representing member administration
  - Cyan/White/Orange color scheme
  - Auto-converts PNG to ICO during build

- Update documentation
  - README: Windows PowerShell setup instructions
  - README: Linux/macOS bash setup instructions
  - README: Standalone executable build guide
  - pyproject.toml: Add 'build' extra with pyinstaller+pillow

- Add regression tests
  - Test office executable detection and Windows fallback
  - Verify all tests pass (80 passed)
2026-06-23 11:08:18 +02:00

59 lines
1.1 KiB
TOML

[build-system]
requires = ["setuptools>=69"]
build-backend = "setuptools.build_meta"
[project]
name = "ccma"
dynamic = ["version"]
description = "Chaotic Creature Member Administration for Chaos Computer Club Mannheim e.V."
readme = "README.md"
requires-python = ">=3.11"
license = "MIT"
authors = [{name = "Chaos Computer Club Mannheim e.V."}]
dependencies = [
"screeninfo>=0.8.1,<1",
"ttkbootstrap-icons",
"ttkbootstrap-icons-mat",
]
[project.optional-dependencies]
dev = [
"pytest>=8",
"ruff>=0.6",
]
build = [
"pyinstaller>=6",
"pillow>=9",
]
[project.scripts]
ccma = "ccma.app:main"
[tool.setuptools]
package-dir = {"" = "src"}
include-package-data = true
[tool.setuptools.packages.find]
where = ["src"]
[tool.setuptools.package-data]
ccma = [
"VERSION",
"assets/CHANGELOG.json",
"assets/splash.png",
"assets/templates/*",
"assets/themes/forest/**/*",
"assets/themes/forest/*",
]
[tool.pytest.ini_options]
testpaths = ["tests"]
pythonpath = ["src"]
[tool.ruff]
line-length = 110
target-version = "py311"
[tool.ruff.lint]
select = ["E", "F", "I", "UP", "B"]