Aller au contenu principal

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 / Flagloginwhoamilogoutreleasepatchpromotesymbols
-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