fix: skip empty or unparseable athlete.json in merge_all
This commit is contained in:
@@ -326,7 +326,7 @@ def _merge_all_locked(data_dir: Path) -> int:
|
||||
athlete_dest = merged_dir / "athlete.json"
|
||||
if athlete_dest.exists() or athlete_dest.is_symlink():
|
||||
athlete_dest.unlink()
|
||||
if athlete_src.exists():
|
||||
if athlete_src.exists() and athlete_src.stat().st_size > 0:
|
||||
athlete_edits_path = data_dir / "edits" / "athlete.yaml"
|
||||
if athlete_edits_path.exists():
|
||||
try:
|
||||
@@ -338,9 +338,12 @@ def _merge_all_locked(data_dir: Path) -> int:
|
||||
edits = {}
|
||||
_ATHLETE_EDITABLE = {"max_hr", "ftp_w", "hr_zones", "power_zones", "seasons", "gear"}
|
||||
if edits:
|
||||
athlete_data = json.loads(athlete_src.read_text(encoding="utf-8"))
|
||||
athlete_data.update({k: v for k, v in edits.items() if k in _ATHLETE_EDITABLE})
|
||||
athlete_dest.write_text(_dumps(athlete_data))
|
||||
try:
|
||||
athlete_data = json.loads(athlete_src.read_text(encoding="utf-8"))
|
||||
athlete_data.update({k: v for k, v in edits.items() if k in _ATHLETE_EDITABLE})
|
||||
athlete_dest.write_text(_dumps(athlete_data))
|
||||
except (json.JSONDecodeError, OSError):
|
||||
pass
|
||||
else:
|
||||
athlete_dest.symlink_to(athlete_src.resolve())
|
||||
|
||||
|
||||
Reference in New Issue
Block a user