Files
bible/scripts/sync_manifests.py
T
onyx_online 0ff628a902 sync version between manifests
add pyproject-fmt to pre-commit config
2026-09-15 08:24:26 +01:00

38 lines
1.1 KiB
Python
Executable File

#!/usr/bin/env python3
import pathlib
import tomllib
import tomlkit
root = pathlib.Path(__file__).resolve().parents[1]
pixi_path = root / 'pixi.toml'
pyproject_path = root / 'pyproject.toml'
pixi = tomllib.loads(pixi_path.read_text())
pyproject = tomllib.loads(pyproject_path.read_text())
# --- Sync version ---
if 'workspace' in pixi and 'version' in pixi['workspace']:
pixi_version = pixi['workspace']['version']
elif 'package' in pixi and 'version' in pixi['package']:
pixi_version = pixi['package']['version']
else:
raise KeyError('No version found in pixi.toml under [workspace] or [package].')
pyproject['project']['version'] = pixi_version
# --- Sync only [package.run-dependencies] ---
run_deps = pixi.get('package', {}).get('run-dependencies', {})
runtime_deps = [f'{k}{v}' if isinstance(v, str) else k for k, v in run_deps.items()]
pyproject['project']['dependencies'] = runtime_deps
# --- Write back ---
pixi_path.write_text(tomlkit.dumps(pixi))
pyproject_path.write_text(tomlkit.dumps(pyproject))
print(
f'Synced version {pixi_version} and {len(runtime_deps)} runtime dependencies '
'from [package.run-dependencies].'
)