Matrice exhaustive des combinaisons CLI
Cette section recense l'ensemble des combinaisons syntaxiques possibles de la CLI tk-ota-push (alias tkushpatch), classées par intention opérationnelle. Chaque commande est validée contre l'implémentation du parser ArgParser (lib/src/cli/runner.dart et publisher.dart).
1. Matrice croisée des options et commandes
| Option / Flag | login | whoami | logout | release | patch | promote | symbols |
|---|---|---|---|---|---|---|---|
-p, --platform | — | — | — | ✅ | ✅ | — | — |
-a, --arch | — | — | — | ✅ | ✅ | — | — |
-c, --channel | — | — | — | ✅ | ✅ | — | — |
--[no-]obfuscate | — | — | — | ✅ | ✅ | — | — |
--split-debug-info | — | — | — | ✅ | ✅ | — | — |
--json | — | — | — | ✅ | ✅ | ✅ | — |
--server | — | — | — | ✅ | ✅ | ✅ | ✅ |
--tenant-id | — | — | — | ✅ | ✅ | ✅ | ✅ |
--app-id | — | — | — | ✅ | ✅ | — | — |
--project | ✅ | — | — | ✅ | ✅ | ✅ | ✅ |
-e, --env | — | — | — | ✅ | ✅ | — | — |
--flavor | — | — | — | ✅ | ✅ | — | — |
-t, --target | — | — | — | ✅ | ✅ | — | — |
--dart-define | — | — | — | ✅ | ✅ | — | — |
--dart-define-from-file | — | — | — | ✅ | ✅ | — | — |
--artifact | — | — | — | ✅ | ✅ | — | — |
--export-method | — | — | — | ✅ | ✅ | — | — |
--export-options-plist | — | — | — | ✅ | ✅ | — | — |
--build-name / --build-number | — | — | — | ✅ | ✅ | — | — |
--rollout | — | — | — | — | ✅ | — | — |
--countries | — | — | — | — | ✅ | — | — |
--staged | — | — | — | — | ✅ | — | — |
-f, --force | — | — | — | — | ✅ | — | — |
-m, --message | — | — | — | — | ✅ | — | — |
--web-url | ✅ | — | — | — | — | — | — |
--patch-id | — | — | — | — | — | ✅ (requis) | ✅ (requis) |
--to-channel | — | — | — | — | — | ✅ | — |
-o, --output | — | — | — | — | — | — | ✅ |
2. Commandes d'authentification et de session
# 1. Connexion standard (ouverture automatique du navigateur PKCE sur http://localhost:3000)
tk-ota-push login
# 2. Connexion avec portail Web personnalisé (ex: console de recette ou on-premise)
tk-ota-push login --web-url https://console-ota.entreprise.internal
# 3. Connexion en ciblant un sous-dossier de projet
tk-ota-push login --project ./apps/mobile_banking
# 4. Vérification de la session active
tk-ota-push whoami
# 5. Déconnexion (purge de ~/.tk_ota_push/credentials.json)
tk-ota-push logout
3. Combinaisons de la commande release
Android
# 1. Release standard APK universel (arm64-v8a + armeabi-v7a)
tk-ota-push release 1.0.0+1 -p android
# 2. Release Android App Bundle (AAB) pour Google Play Store
tk-ota-push release 1.0.0+1 -p android --artifact aab
# 3. Release AAB multi-flavor Production avec variables injectées
tk-ota-push release 1.0.0+1 \
-p android \
--flavor prod \
-t lib/main_prod.dart \
--artifact aab \
--dart-define-from-file=env/prod.json
# 4. Release Android avec ciblage strict 64-bits (aarch64 uniquement)
tk-ota-push release 1.0.0+1 -p android -a aarch64
# 5. Release désactivant l'obfuscation (développement / tests internes)
tk-ota-push release 1.0.0+1 -p android --no-obfuscate
# 6. Release avec dossier personnalisé pour les symboles de débogage
tk-ota-push release 1.0.0+1 -p android --split-debug-info=build/custom_symbols
# 7. Release headless avec sortie JSON pour pipeline CI/CD
tk-ota-push release 1.0.0+1 -p android --artifact aab --json
iOS
# 1. Release standard iOS (utilise Runner.app dans build/ios/iphoneos/)
tk-ota-push release 1.0.0+1 -p ios
# 2. Release IPA avec méthode d'exportation App Store
tk-ota-push release 1.0.0+1 -p ios --artifact ipa --export-method app-store
# 3. Release IPA Ad-Hoc avec fichier ExportOptions.plist d'entreprise
tk-ota-push release 1.0.0+1 \
-p ios \
--artifact ipa \
--export-options-plist ios/ExportOptions.plist \
--flavor staging \
-t lib/main_staging.dart
# 4. Release iOS avec surcharge du numéro de build
tk-ota-push release -p ios --build-name 2.0.0 --build-number 150
Multiplateforme unifiée (Android + iOS)
# Verrouille la Release sur Android ET iOS en une seule invocation
tk-ota-push release 1.0.0+1 -p all --artifact apk
4. Combinaisons de la commande patch
Déploiement progressif (Canary) et ciblage par pays
# 1. Patch immédiat 100 % mondial sur canal stable (défaut)
tk-ota-push patch 1.0.0+1 -p android -m "Correctif affichage solde"
# 2. Patch progressif déployé à 10 % des utilisateurs
tk-ota-push patch 1.0.0+1 -p android --rollout 10 -m "Canary 10% parcours virement"
# 3. Patch restreint à la Côte d'Ivoire, au Sénégal et au Cameroun
tk-ota-push patch 1.0.0+1 -p android --countries "CI,SN,CM" -m "Mise à jour taxe régionale"
# 4. Patch combinant 25 % de rollout et ciblage pays
tk-ota-push patch 1.0.0+1 -p android --rollout 25 --countries "CI,SN" -m "Canary ciblé UEMOA"
# 5. Patch forçant la diffusion mondiale (écrase les pays par défaut de shorebird.yaml)
tk-ota-push patch 1.0.0+1 -p android --countries "all" -m "Patch global sécurité"
Gouvernance, 4 yeux et contournement Dart pur
# 1. Patch STAGED (4 yeux) : publié et signé, mais non distribué avant approbation
tk-ota-push patch 1.0.0+1 -p android --staged -m "Patch soumis à validation RSSI"
# 2. Patch FORCÉ (--force) : autorise la publication si pubspec.lock a légèrement différé
tk-ota-push patch 1.0.0+1 -p android --force -m "Mise à jour purement Dart du package intl"
# 3. Patch combinant --staged et --force
tk-ota-push patch 1.0.0+1 -p android --staged --force -m "Mise à jour dépendances pour recette"
Multi-Flavors, Définitions et Multiplateforme
# 1. Patch Android ciblant le flavor 'prod' et son main dédié
tk-ota-push patch 1.0.0+1 \
-p android \
--flavor prod \
-t lib/main_prod.dart \
--dart-define-from-file=env/prod.json \
-m "Correctif API prod"
# 2. Patch iOS déployé sur le canal beta
tk-ota-push patch 1.0.0+1 -p ios -c beta -m "Correctif crash saisie clavier iOS"
# 3. Patch simultané Android + iOS
tk-ota-push patch 1.0.0+1 -p all -m "Correctif transversal multiplateforme"
5. Promotion et gestion des symboles
# 1. Promouvoir un patch de staging vers stable
tk-ota-push promote --patch-id 7c9e6679-7425-40de-944b-e07fc1f90ae7 --to-channel stable
# 2. Promotion avec sortie JSON pour audit automatisé
tk-ota-push promote \
--patch-id 7c9e6679-7425-40de-944b-e07fc1f90ae7 \
--to-channel stable \
--json
# 3. Promotion sur un serveur et un tenant spécifiques
tk-ota-push promote \
--patch-id 7c9e6679-7425-40de-944b-e07fc1f90ae7 \
--to-channel stable \
--server https://ota.banque.internal \
--tenant-id filiale-senegal
# 4. Télécharger le fichier .symbols d'un patch
tk-ota-push symbols --patch-id 7c9e6679-7425-40de-944b-e07fc1f90ae7
# 5. Télécharger les symboles vers un chemin de sortie précis
tk-ota-push symbols \
--patch-id 7c9e6679-7425-40de-944b-e07fc1f90ae7 \
-o crash_reports/patch_v13.symbols
# 6. Dé-obfusquer une stacktrace de production avec les symboles téléchargés
flutter symbolize -i stacktrace.txt -d crash_reports/patch_v13.symbols