repowarden 4.7.1 → 4.8.0-next.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -100,6 +100,7 @@ _msg_fr() {
100
100
  install.replaced) _M="core.hooksPath (%s) valait '%s', remplacé." ;;
101
101
  install.enabled) _M="Hooks activés (%s) → %s" ;;
102
102
  install.local_wins) _M="Un core.hooksPath local (ex. husky) reste prioritaire dans le dépôt concerné." ;;
103
+ install.bots_never) _M="Les bots du dépôt ne seront plus proposés (repowarden.bots = off) ; à la demande : repowarden bots" ;;
103
104
  install.lang_set) _M="Langue des messages : français (changer : %s --global --lang en)" ;;
104
105
  install.lang_invalid) _M="--lang : fr ou en." ;;
105
106
  install.keys_migrated) _M="Réglages repogarde.* (%s) renommés en repowarden.*" ;;
@@ -232,6 +233,7 @@ _msg_fr() {
232
233
  ci.check.16) _M="Cible « %s » conforme au flux." ;;
233
234
  ci.check.17) _M="PR de « %s » vers « %s » : cible attendue %s (réglage integrationBranch)." ;;
234
235
  ci.check.18) _M=" Corriger : modifier la branche de base de la PR (Edit, à côté du titre), ou gh pr edit --base %s" ;;
236
+ ci.check.develop_undeclared) _M="PR %s → %s : la branche develop existe mais .repowarden.conf ne déclare pas le flux develop → main. Ajouter integrationBranch = develop (le travail passe alors par develop), ou supprimer develop si le projet n'en veut pas." ;;
235
237
  ci.check.19) _M="gitleaks absent : lancer ci/install-tool.sh gitleaks avant ce script." ;;
236
238
  ci.check.20) _M="Dossier de travail modifié avant la vérification : impossible de contrôler le formatage." ;;
237
239
  ci.check.21) _M="Un formateur a échoué (erreur de syntaxe, ou outil / dépendance indisponible) : voir le log ci-dessus." ;;
@@ -296,16 +298,57 @@ _msg_fr() {
296
298
  ci.proteger.verify_ok) _M="Règles en ligne à jour." ;;
297
299
  ci.proteger.delivery) _M=" livraison vers main : %s approbation(s) exigée(s) (passage à une nouvelle version) ; merge automatique des PR de travail vers develop : %s" ;;
298
300
  ci.proteger.methods_flow) _M="main : merge commit ; %s : squash ou merge commit" ;;
301
+ ci.proteger.livraison_check) _M=" vérification « livraison » exigée sur la branche principale (préversion publiée, protection en place)" ;;
299
302
  ci.proteger.tags_org) _M="réservés aux workflows" ;;
300
303
  ci.proteger.tags_user) _M="ni déplacés ni supprimés (compte personnel : création libre)" ;;
301
304
  ci.proteger.tags_none) _M="non protégés (--sans-tags)" ;;
302
305
  ci.proteger.unknown_team) _M="Équipe inconnue ou inaccessible : %s (format @organisation/equipe)" ;;
303
306
  ci.proteger.unknown_user) _M="Utilisateur inconnu : %s" ;;
304
- ci.version.usage) _M="Usage : ci/version.sh next|notes [ref]" ;;
307
+ mig.no_major) _M="Version majeure de repowarden introuvable (%s) : REPOWARDEN_MAJEURE=4 repowarden migrer." ;;
308
+ mig.dirty) _M="Modifications en cours : commiter ou remiser avant repowarden migrer --pr." ;;
309
+ mig.pr_open) _M="PR de migration déjà ouverte (%s) : rien à faire." ;;
310
+ mig.both) _M="%s et %s existent tous les deux : garder le second, fusionner puis supprimer le premier à la main." ;;
311
+ mig.conf) _M=".repogarde.conf → .repowarden.conf (section [repowarden], version à jour)" ;;
312
+ mig.dir) _M=".repogarde/ → .repowarden/" ;;
313
+ mig.workflow) _M="%s : uses: vers simdevWarden/repowarden, anciens noms remplacés" ;;
314
+ mig.renamed) _M="%s → %s" ;;
315
+ mig.tickets_events) _M="%s : événements du suivi des tickets complétés (push, revue, assignation, fermeture) : PR brouillon préremplie au premier push" ;;
316
+ mig.tickets_labels) _M="Étiquettes du suivi (type: feat, statuts…) : repowarden tickets init (relançable, ne réécrit aucun fichier)" ;;
317
+ mig.hooks_moved) _M="Hooks lefthook résiduels (%s) déplacés dans %s" ;;
318
+ mig.hooks_left) _M="Hooks lefthook résiduels dans .git/hooks (%s), ignorés : repowarden migrer --hooks pour les mettre de côté." ;;
319
+ mig.lefthook_conf) _M="%s : lefthook n'est plus pris en charge ; déplacer ses commandes dans .repowarden/<hook>, puis supprimer ce fichier." ;;
320
+ mig.secrets) _M="Secrets ou variables renommés dans les workflows, à recréer sous le nouveau nom (Settings → Secrets and variables) :%s" ;;
321
+ mig.remaining) _M="Citent encore repogarde (à relire, non modifiés) : %s" ;;
322
+ mig.nothing) _M="Rien à migrer : le projet utilise déjà les noms de repowarden." ;;
323
+ mig.next) _M="Ensuite : vérifier le diff, puis repowarden proteger (la vérification exigée s'appelle désormais repowarden)." ;;
324
+ mig.commit_subject) _M="passage de repogarde à repowarden v%s" ;;
325
+ mig.commit_body) _M="Anciens noms et chemins remplacés par repowarden migrer (docs/migration-v4.md) : les workflows réutilisables de l'ancien dépôt ne sont plus redirigés par GitHub." ;;
326
+ mig.pr_body) _M="Migration de repogarde vers repowarden, faite par repowarden migrer (docs/migration-v4.md)." ;;
327
+ mig.pr_after) _M="Après le merge : lancer repowarden proteger (la vérification exigée s'appelle désormais repowarden) et recréer sous leur nouveau nom les secrets REPOGARDE_* éventuels." ;;
328
+ mig.pr_created) _M="PR de migration ouverte (%s)." ;;
329
+ st.repo_migrate) _M="Anciens noms repogarde dans ce projet : repowarden migrer" ;;
330
+ st.repo_develop_undeclared) _M="La branche develop existe mais le flux develop → main n'est pas déclaré : ajouter integrationBranch = develop dans .repowarden.conf (sinon le travail peut entrer directement dans main)." ;;
331
+ ci.proteger.legacy_taken) _M="Ruleset « %s » : ancien ruleset « %s » repris (vérification repogarde retirée)." ;;
332
+ ci.proteger.legacy_left) _M="Ancien ruleset « %s » (id %s) : exige encore la vérification repogarde, retirée en v4, et bloque ses branches. Le supprimer : Settings → Rules → Rulesets, ou gh api -X DELETE repos/%s/rulesets/%s." ;;
333
+ ci.proteger.verify_legacy) _M="%s (id %s) : ancien ruleset, exige encore la vérification repogarde (retirée en v4)" ;;
334
+ ci.proteger.api_error) _M="Ruleset « %s » refusé par GitHub : %s" ;;
335
+ ci.proteger.incomplete) _M="Protection incomplète : voir les erreurs ci-dessus." ;;
336
+ ci.proteger.rulesets_unavailable) _M="Rulesets indisponibles pour %s : GitHub les refuse sur un dépôt privé d'un compte gratuit. Rendre le dépôt public, ou passer à GitHub Pro / Team ; les autres réglages sont appliqués." ;;
337
+ ci.proteger.tags_fallback) _M="Ruleset des tags : exception « GitHub Actions » refusée dans cette organisation ; tags protégés comme sur un compte personnel (ni déplacés ni supprimés, création libre)." ;;
338
+ ci.version.usage) _M="Usage : ci/version.sh next|notes|notes-livraison [ref]" ;;
305
339
  ci.version.breaking) _M="Changements incompatibles" ;;
306
340
  ci.version.features) _M="Fonctionnalités" ;;
307
341
  ci.version.fixes) _M="Corrections" ;;
308
342
  ci.version.maintenance) _M="Maintenance" ;;
343
+ ci.version.summary) _M="En bref" ;;
344
+ ci.version.todo) _M="À faire" ;;
345
+ ci.version.update) _M="Mettre à jour" ;;
346
+ ci.version.tickets) _M="Tickets livrés" ;;
347
+ ci.livraison.protection) _M="Protection du flux %s absente (merge commit, pas de suppression) : lancer repowarden proteger" ;;
348
+ ci.livraison.maintenance) _M="Maintenance seule : aucune version à publier" ;;
349
+ ci.livraison.non_exigee) _M="%s : préversion non exigée" ;;
350
+ ci.livraison.ok) _M="%s : préversion testée, livrable" ;;
351
+ ci.livraison.preversion) _M="%s : aucune préversion %s ; attendre celle du soir, ou Actions → release → Run workflow sur %s" ;;
309
352
  ci.install_tool.os) _M="Système non supporté : %s" ;;
310
353
  ci.install_tool.arch) _M="Architecture non supportée : %s" ;;
311
354
  ci.install_tool.unknown) _M="Outil inconnu : %s" ;;
@@ -360,7 +403,16 @@ _msg_fr() {
360
403
  npm.first_published) _M="%s@%s publié par la pipeline." ;;
361
404
  npm.step_trust) _M="3/3 Publication sans jeton (publication de confiance)" ;;
362
405
  npm.trust_exists) _M="Publication de confiance déjà configurée." ;;
406
+ npm.trust_mismatch) _M="Relation de confiance existante mais ne correspond pas aux paramètres attendus :" ;;
407
+ npm.trust_confirm) _M="Confirmer la correction (nouvelle relation créée avant révocation de l'ancienne) ? [o/N] " ;;
408
+ npm.trust_cancelled) _M="Correction annulée." ;;
409
+ npm.trust_would_create) _M="[dry-run] Relation de confiance serait créée : %s, workflow %s, env %s" ;;
410
+ npm.trust_would_fix) _M="[dry-run] Relation de confiance serait corrigée (nouvelle créée, ancienne révoquée)" ;;
411
+ npm.trust_revoked) _M="Ancienne relation de confiance révoquée : %s" ;;
363
412
  npm.trust_set) _M="Publication de confiance : %s, workflow %s." ;;
413
+ npm.token_present) _M="Secret NPM_TOKEN encore présent alors que la publication de confiance fonctionne." ;;
414
+ npm.token_remove_confirm) _M="Supprimer le secret NPM_TOKEN ? [o/N] " ;;
415
+ npm.token_would_remove) _M="[dry-run] Secret NPM_TOKEN serait supprimé" ;;
364
416
  npm.token_removed) _M="Secret NPM_TOKEN supprimé du dépôt." ;;
365
417
  npm.token_revoked) _M="Jeton temporaire révoqué sur npm." ;;
366
418
  npm.done) _M="Terminé : chaque release publie %s sur npm, sans jeton." ;;
@@ -406,13 +458,93 @@ _msg_fr() {
406
458
  app.server_failed) _M="Page locale non démarrée." ;;
407
459
  app.open) _M="Ouvre %s puis clique sur le bouton vert de GitHub." ;;
408
460
  app.no_code) _M="Aucune réponse de GitHub (création annulée, ou délai de 15 min dépassé)." ;;
409
- app.created) _M="App %s créée ; identifiants rangés (variable REPOWARDEN_APP_CLIENT_ID, secret REPOWARDEN_APP_KEY)." ;;
461
+ app.created) _M="App %s créée ; identifiants rangés (variable %s, secret %s)." ;;
410
462
  app.step_install) _M="Installation sur le dépôt" ;;
411
463
  app.installed) _M="App %s installée sur %s." ;;
412
464
  app.not_installed) _M="App %s pas encore installée sur %s : relance repowarden app init une fois installée." ;;
413
465
  app.check_in_ci) _M="Installation vérifiée au premier run du suivi des tickets (étape « Jeton de l'App ») ; pour l'installer : %s" ;;
414
466
  app.done) _M="Les workflows repowarden utilisent désormais l'App : ce qu'ils font déclenche les autres workflows." ;;
415
467
  app.next) _M="Sans l'App (variable et secret absents), ils reprennent le jeton des Actions." ;;
468
+ app.bot_all_repos) _M="Bot d'organisation : à l'installation, choisir « All repositories » (les nouveaux dépôts seront couverts d'office ; seuls ceux avec un .repowarden.conf sont gérés)." ;;
469
+ bot.init_exists) _M="%s existe déjà : laissé tel quel." ;;
470
+ bot.init_done) _M="%s écrit : passage chaque nuit, et à la demande (Actions → bot → Run workflow, case dry-run pour voir sans rien modifier)." ;;
471
+ bot.init_next) _M="Identifiants du bot dans ce dépôt : repowarden app init --bot (une fois, installée sur « All repositories »)." ;;
472
+ bot.no_report) _M="Rapport introuvable : %s" ;;
473
+ bot.report_updated) _M="Rapport publié (issue #%s mise à jour)." ;;
474
+ bot.report_created) _M="Rapport publié (nouvelle issue)." ;;
475
+ bot.col_repo) _M="Dépôt" ;;
476
+ bot.col_mode) _M="Mode" ;;
477
+ bot.col_protection) _M="Protection" ;;
478
+ bot.col_migration) _M="Migration" ;;
479
+ bot.repo) _M="%s" ;;
480
+ bot.not_adopted) _M="non adopté (pas de .repowarden.conf)" ;;
481
+ bot.ignored) _M="ignoré (bot = off)" ;;
482
+ bot.mode_invalid) _M="bot = %s : auto, pr ou off attendu" ;;
483
+ bot.clone_failed) _M="clone impossible : %s" ;;
484
+ bot.prot_ok) _M="à jour" ;;
485
+ bot.prot_stale) _M="⚠ périmée : repowarden proteger" ;;
486
+ bot.prot_applied) _M="✔ appliquée" ;;
487
+ bot.error) _M="✖ %s" ;;
488
+ bot.mig_none) _M="rien à migrer" ;;
489
+ bot.mig_open) _M="PR déjà ouverte" ;;
490
+ bot.mig_todo) _M="⚠ à migrer : repowarden migrer" ;;
491
+ bot.mig_pr) _M="✔ PR ouverte" ;;
492
+ bot.report_head) _M="Passage du %s." ;;
493
+ bot.report_dry) _M="Aperçu (dry-run) : rien n'a été modifié." ;;
494
+ bot.failed) _M="Passage terminé avec %s erreur(s) : voir le rapport." ;;
495
+ bots.skip) _M="Bots du dépôt non proposés (%s) : plus tard, repowarden bots" ;;
496
+ bots.why_repo) _M="hors d'un dépôt Git" ;;
497
+ bots.why_github) _M="dépôt hors de GitHub" ;;
498
+ bots.why_gh) _M="gh absent : https://cli.github.com" ;;
499
+ bots.why_gh_login) _M="gh non connecté : gh auth login" ;;
500
+ bots.why_admin) _M="droits d'administration du dépôt nécessaires" ;;
501
+ bots.why_tty) _M="pas de terminal pour répondre aux questions" ;;
502
+ bots.ask_global) _M="Configurer les bots de ce dépôt (CI, releases, tickets, protection…) ? Rien n'est fait sans ton accord, bot par bot." ;;
503
+ bots.later) _M="Aucun bot configuré. Plus tard : repowarden bots" ;;
504
+ bots.flow_question) _M="Flux des branches :" ;;
505
+ bots.flow_main) _M="%s seule : chaque PR y est mergée (squash)" ;;
506
+ bots.flow_develop) _M="develop → %s : le travail s'intègre dans develop (préversions), seul develop entre dans %s (livraison)" ;;
507
+ bots.ask_create_develop) _M="La branche develop n'existe pas sur GitHub : la créer depuis la branche par défaut ?" ;;
508
+ bots.one_by_one) _M="Un accord par bot (Entrée : oui) :" ;;
509
+ bots.app_present) _M="GitHub App des workflows déjà configurée : utilisée par les autres bots." ;;
510
+ bots.desc_ci) _M=" CI : vérifie chaque PR (messages, branche, secrets, formatage, tests) ; écrit .github/workflows/repowarden.yml" ;;
511
+ bots.desc_release) _M=" Releases : version, notes et tag calculés depuis les commits ; écrit .github/workflows/release.yml" ;;
512
+ bots.desc_nettoyage) _M=" Nettoyage : supprime les branches mergées, garde les branches longues ; écrit .github/workflows/nettoyage.yml" ;;
513
+ bots.desc_tickets) _M=" Tickets : le ticket d'abord, PR préremplie, statuts jusqu'à la production ; étiquettes, modèle de ticket, workflow (repowarden tickets init)" ;;
514
+ bots.desc_app) _M=" GitHub App : ce que font les bots déclenche les autres workflows ; création dans le navigateur (repowarden app init)" ;;
515
+ bots.desc_proteger) _M=" Protection : PR et vérification exigées, ni suppression ni push forcé ; modifie les réglages GitHub (repowarden proteger)" ;;
516
+ bots.desc_npm) _M=" npm : publie le paquet à chaque release, sans jeton (repowarden npm-publication)" ;;
517
+ bots.ask_ci) _M="CI ?" ;;
518
+ bots.ask_release) _M="Releases ?" ;;
519
+ bots.ask_nettoyage) _M="Nettoyage des branches ?" ;;
520
+ bots.ask_tickets) _M="Suivi des tickets ?" ;;
521
+ bots.ask_app) _M="GitHub App ?" ;;
522
+ bots.ask_proteger) _M="Protection des branches ?" ;;
523
+ bots.ask_npm) _M="Publication npm ?" ;;
524
+ bots.preview) _M="Aperçu" ;;
525
+ bots.prev_develop) _M="branche %s créée sur GitHub depuis %s" ;;
526
+ bots.prev_conf) _M=".repowarden.conf : integrationBranch = %s, branches protégées" ;;
527
+ bots.prev_review) _M=".repowarden.conf : livraison validée par la revue de sa PR (sans GitHub App)" ;;
528
+ bots.prev_kept) _M="%s existe : gardé tel quel (écart avec le modèle : %s ligne(s))" ;;
529
+ bots.prev_file) _M="%s : créé" ;;
530
+ bots.prev_tickets) _M="tickets : étiquettes et modèle de ticket sur GitHub, workflow tickets.yml" ;;
531
+ bots.prev_app) _M="GitHub App : créée dans le navigateur, identifiants rangés en variable et secret du dépôt" ;;
532
+ bots.prev_proteger) _M="réglages GitHub : rulesets des branches et des tags, modes de merge" ;;
533
+ bots.prev_npm) _M="npm : publication de confiance du paquet, variable REPOWARDEN_NPM" ;;
534
+ bots.ask_confirm) _M="Appliquer ?" ;;
535
+ bots.run_tickets) _M="Suivi des tickets" ;;
536
+ bots.run_app) _M="GitHub App" ;;
537
+ bots.run_proteger) _M="Protection des branches" ;;
538
+ bots.run_npm) _M="Publication npm" ;;
539
+ bots.failed_one) _M="%s : échec, voir ci-dessus ; les autres bots sont configurés. Relancer : repowarden bots" ;;
540
+ bots.develop_created) _M="Branche %s créée depuis %s." ;;
541
+ bots.conf_written) _M="%s mis à jour." ;;
542
+ bots.kept) _M="%s existe : gardé tel quel." ;;
543
+ bots.written) _M="%s écrit." ;;
544
+ bots.done) _M="Bots configurés." ;;
545
+ bots.done_errors) _M="Bots configurés, %s en échec (voir ci-dessus)." ;;
546
+ bots.commit_files) _M="Fichiers à commiter par une PR (les workflows agissent une fois sur la branche par défaut) : git status" ;;
547
+ bots.verify) _M="Ensuite : repowarden proteger --verifier, et repowarden statut." ;;
416
548
  tk.reopened) _M="Rouvert : fermé par GitHub au merge de #%s dans \`%s\`, ce n'est pas encore la production. En préprod ; il sera fermé à la release." ;;
417
549
  tk.sync.ready) _M="Ticket #%s assigné : branche locale %s prête (repowarden ticket %s)." ;;
418
550
  tk.sync.not_validated) _M="Ticket #%s assigné mais pas encore validé : pas de branche pour l'instant." ;;
package/install.sh CHANGED
@@ -4,6 +4,9 @@
4
4
  # ./install.sh --global active les hooks pour tous les dépôts
5
5
  # (et l'assistant de commit : git cc)
6
6
  # ./install.sh --global --lang en langue des messages (fr, en) ; demandée une fois sinon
7
+ # ./install.sh --bots propose ensuite les bots du dépôt GitHub (repowarden bots) ;
8
+ # proposés d'office dans un dépôt GitHub, avec un terminal
9
+ # ./install.sh --sans-bots ne plus jamais les proposer
7
10
  # ./install.sh --uninstall [--global]
8
11
  # retire les hooks (seulement s'ils sont ceux de repowarden)
9
12
  # ./install.sh --uninstall --global --purge [--scan DOSSIER]
@@ -22,12 +25,15 @@ ACTION="install"
22
25
  PURGE=""
23
26
  SCAN=""
24
27
  LANG_CHOICE=""
28
+ BOTS=""
25
29
 
26
30
  while [ $# -gt 0 ]; do
27
31
  case "$1" in
28
32
  --global) SCOPE="--global" ;;
29
33
  --uninstall) ACTION="uninstall" ;;
30
34
  --purge) PURGE=1 ;;
35
+ --bots) BOTS=demande ;;
36
+ --sans-bots) BOTS=jamais ;;
31
37
  --lang)
32
38
  shift
33
39
  LANG_CHOICE="${1:-}"
@@ -37,7 +43,7 @@ while [ $# -gt 0 ]; do
37
43
  SCAN="${1:?--scan attend un dossier}"
38
44
  ;;
39
45
  -h | --help)
40
- sed -n '2,11p' "$0" | sed 's/^# \{0,1\}//'
46
+ sed -n '2,14p' "$0" | sed 's/^# \{0,1\}//'
41
47
  exit 0
42
48
  ;;
43
49
  *)
@@ -243,3 +249,15 @@ if [ "$SCOPE" = --global ]; then
243
249
  t install.local_wins
244
250
  info "$REPLY"
245
251
  fi
252
+
253
+ # Bots du dépôt GitHub courant (CI, releases, tickets, protection…) : proposés,
254
+ # jamais configurés sans accord ; --sans-bots : plus jamais proposés
255
+ case "$BOTS" in
256
+ jamais)
257
+ git config "$SCOPE" repowarden.bots off
258
+ t install.bots_never
259
+ info "$REPLY"
260
+ ;;
261
+ demande) bash "$ROOT/bin/bots" ;;
262
+ *) ! git rev-parse --git-dir >/dev/null 2>&1 || bash "$ROOT/bin/bots" --depuis-install || true ;;
263
+ esac
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "repowarden",
3
- "version": "4.7.1",
3
+ "version": "4.8.0-next.12",
4
4
  "description": "Hooks git et CI multi-langages : messages de commit, nommage des branches, secrets, formatage, tests ciblés, code mort, releases.",
5
5
  "keywords": [
6
6
  "git-hooks",