@@ -361,6 +361,9 @@ def main():
361361 help = "nouveau tag git à créer → déclenche release.yml (rebuild complet)" )
362362 parser .add_argument ("--skip-push" , action = "store_true" ,
363363 help = "sauter push+détection, patcher directement la release" )
364+ parser .add_argument ("--push-only" , action = "store_true" ,
365+ help = "pousser les sources sur main SANS patcher les bundles "
366+ "(itération debug/mesure : récup via git pull + run direct)" )
364367 parser .add_argument ("--dry-run" , action = "store_true" ,
365368 help = "afficher le diff sans commit ni push" )
366369 parser .add_argument ("--repo" , default = REPO_DEFAULT ,
@@ -374,6 +377,10 @@ def main():
374377 fail ("--new-tag et --patch-tag sont contradictoires (rebuild vs patch existant)" )
375378 if args .dry_run and args .skip_push :
376379 fail ("--dry-run et --skip-push sont contradictoires" )
380+ if args .push_only and args .skip_push :
381+ fail ("--push-only et --skip-push sont contradictoires (pousser sans patcher vs patcher sans pousser)" )
382+ if args .push_only and args .new_tag :
383+ fail ("--push-only et --new-tag sont contradictoires (push seul vs rebuild via tag)" )
377384
378385 # --- Mode --skip-push : patch direct, pas de push ni de détection ---
379386 if args .skip_push :
@@ -408,6 +415,12 @@ def main():
408415 for c in changed :
409416 print (f" { c } " )
410417
418+ # --- Mode --push-only : sources poussées, on saute le patch des bundles ---
419+ if args .push_only :
420+ cprint ("\n ==> --push-only : sources sur main, patch des bundles sauté." , "green" )
421+ cprint (" Récup : git pull && python gpxsolar.py ..." , "cyan" )
422+ return 0
423+
411424 # --- Phase 2 : catégorisation -> action ---
412425 rebuild = [c for c in changed if is_rebuild_file (c )]
413426 code_changed = APP_PY in changed
0 commit comments