codemagic-cli-tools 0.53.4__tar.gz → 0.53.5__tar.gz

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.
Files changed (434) hide show
  1. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/PKG-INFO +1 -1
  2. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/pyproject.toml +1 -1
  3. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/__version__.py +1 -1
  4. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/__version__.py-e +1 -1
  5. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/cli/__init__.py +1 -0
  6. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/cli/argument/__init__.py +1 -0
  7. codemagic_cli_tools-0.53.5/src/codemagic/cli/argument/argument_parser_builder.py +220 -0
  8. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/cli/argument/argument_properties.py +5 -0
  9. codemagic_cli_tools-0.53.5/src/codemagic/cli/argument/mutually_exclusive_groups.py +35 -0
  10. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/firebase_app_distribution/action_groups/releases_action_group.py +1 -1
  11. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/firebase_app_distribution/actions/get_latest_build_version_action.py +1 -1
  12. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/firebase_app_distribution/arguments.py +14 -3
  13. codemagic_cli_tools-0.53.5/src/codemagic/tools/firebase_app_distribution/firebase_app_distribution.py +88 -0
  14. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/firebase_app_distribution/firebase_app_distribution_action.py +1 -1
  15. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/tools/test_firebase_app_distribution.py +4 -2
  16. codemagic_cli_tools-0.53.4/src/codemagic/cli/argument/argument_parser_builder.py +0 -154
  17. codemagic_cli_tools-0.53.4/src/codemagic/tools/firebase_app_distribution/firebase_app_distribution.py +0 -53
  18. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/LICENSE +0 -0
  19. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/README.md +0 -0
  20. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/__init__.py +0 -0
  21. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/__init__.py +0 -0
  22. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/app_store_connect/__init__.py +0 -0
  23. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/app_store_connect/api_client.py +0 -0
  24. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/app_store_connect/api_error.py +0 -0
  25. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/app_store_connect/api_session.py +0 -0
  26. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/app_store_connect/app_store_publishing/__init__.py +0 -0
  27. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/app_store_connect/app_store_publishing/app_store_version_phased_releases.py +0 -0
  28. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/app_store_connect/apps/__init__.py +0 -0
  29. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/app_store_connect/apps/apps.py +0 -0
  30. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/app_store_connect/builds/__init__.py +0 -0
  31. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/app_store_connect/builds/builds.py +0 -0
  32. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/app_store_connect/json_web_token_manager.py +0 -0
  33. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/app_store_connect/provisioning/__init__.py +0 -0
  34. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/app_store_connect/provisioning/bundle_id_capabilities.py +0 -0
  35. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/app_store_connect/provisioning/bundle_ids.py +0 -0
  36. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/app_store_connect/provisioning/devices.py +0 -0
  37. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/app_store_connect/provisioning/profiles.py +0 -0
  38. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/app_store_connect/provisioning/signing_certificates.py +0 -0
  39. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/app_store_connect/resource_manager.py +0 -0
  40. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/app_store_connect/testflight/__init__.py +0 -0
  41. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/app_store_connect/testflight/beta_groups.py +0 -0
  42. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/app_store_connect/type_declarations.py +0 -0
  43. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/app_store_connect/versioning/__init__.py +0 -0
  44. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/app_store_connect/versioning/app_store_version_localizations.py +0 -0
  45. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/app_store_connect/versioning/app_store_version_submissions.py +0 -0
  46. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/app_store_connect/versioning/app_store_versions.py +0 -0
  47. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/app_store_connect/versioning/beta_app_review_submissions.py +0 -0
  48. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/app_store_connect/versioning/beta_build_localizations.py +0 -0
  49. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/app_store_connect/versioning/pre_release_versions.py +0 -0
  50. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/app_store_connect/versioning/review_submission_items.py +0 -0
  51. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/app_store_connect/versioning/review_submissions.py +0 -0
  52. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/resources/__init__.py +0 -0
  53. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/resources/app.py +0 -0
  54. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/resources/app_store_version.py +0 -0
  55. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/resources/app_store_version_localization.py +0 -0
  56. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/resources/app_store_version_phased_release.py +0 -0
  57. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/resources/app_store_version_submission.py +0 -0
  58. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/resources/beta_app_localization.py +0 -0
  59. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/resources/beta_app_review_detail.py +0 -0
  60. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/resources/beta_app_review_submission.py +0 -0
  61. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/resources/beta_build_localization.py +0 -0
  62. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/resources/beta_group.py +0 -0
  63. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/resources/build.py +0 -0
  64. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/resources/build_beta_detail.py +0 -0
  65. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/resources/bundle_id.py +0 -0
  66. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/resources/bundle_id_capability.py +0 -0
  67. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/resources/device.py +0 -0
  68. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/resources/enums.py +0 -0
  69. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/resources/error_response.py +0 -0
  70. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/resources/pre_release_version.py +0 -0
  71. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/resources/profile.py +0 -0
  72. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/resources/resource.py +0 -0
  73. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/resources/review_submission.py +0 -0
  74. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/resources/review_submission_item.py +0 -0
  75. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/resources/signing_certificate.py +0 -0
  76. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/cli/action.py +0 -0
  77. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/cli/action_group.py +0 -0
  78. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/cli/argument/action_callable.py +0 -0
  79. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/cli/argument/argument.py +0 -0
  80. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/cli/argument/argument_formatter.py +0 -0
  81. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/cli/argument/common_argument_types.py +0 -0
  82. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/cli/argument/typed_cli_argument.py +0 -0
  83. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/cli/cli_app.py +0 -0
  84. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/cli/cli_help_formatter.py +0 -0
  85. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/cli/cli_process.py +0 -0
  86. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/cli/cli_process_stream.py +0 -0
  87. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/cli/cli_types.py +0 -0
  88. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/cli/colors.py +0 -0
  89. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/cli/environment.py +0 -0
  90. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/data/jars/bundletool-all-1.13.1.jar +0 -0
  91. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/google/__init__.py +0 -0
  92. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/google/errors.py +0 -0
  93. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/google/firebase_client.py +0 -0
  94. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/google/google_client.py +0 -0
  95. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/google/resource_managers/__init__.py +0 -0
  96. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/google/resource_managers/mixins/__init__.py +0 -0
  97. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/google/resource_managers/mixins/acting_manager_mixin.py +0 -0
  98. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/google/resource_managers/mixins/listing_manager_mixin.py +0 -0
  99. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/google/resource_managers/release_manager.py +0 -0
  100. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/google/resource_managers/resource_manager.py +0 -0
  101. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/google/resources/__init__.py +0 -0
  102. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/google/resources/identifiers/__init__.py +0 -0
  103. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/google/resources/identifiers/app_identifier.py +0 -0
  104. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/google/resources/identifiers/resource_identifier.py +0 -0
  105. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/google/resources/release.py +0 -0
  106. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/google/resources/release_notes.py +0 -0
  107. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/google/resources/resource.py +0 -0
  108. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/google_play/__init__.py +0 -0
  109. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/google_play/api_client.py +0 -0
  110. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/google_play/api_error.py +0 -0
  111. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/google_play/resources/__init__.py +0 -0
  112. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/google_play/resources/edit.py +0 -0
  113. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/google_play/resources/enums.py +0 -0
  114. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/google_play/resources/resource.py +0 -0
  115. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/google_play/resources/track.py +0 -0
  116. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/mixins/__init__.py +0 -0
  117. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/mixins/path_finder.py +0 -0
  118. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/mixins/running_cli_app.py +0 -0
  119. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/mixins/str_converter.py +0 -0
  120. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/models/__init__.py +0 -0
  121. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/models/altool/__init__.py +0 -0
  122. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/models/altool/altool.py +0 -0
  123. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/models/altool/altool_result.py +0 -0
  124. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/models/altool/enums.py +0 -0
  125. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/models/android_signing_info.py +0 -0
  126. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/models/application_package/__init__.py +0 -0
  127. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/models/application_package/abstract_package.py +0 -0
  128. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/models/application_package/ipa.py +0 -0
  129. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/models/application_package/macos_package.py +0 -0
  130. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/models/bundle_id_detector.py +0 -0
  131. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/models/certificate.py +0 -0
  132. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/models/certificate_attributes.py +0 -0
  133. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/models/certificate_p12_exporter.py +0 -0
  134. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/models/code_sign_entitlements.py +0 -0
  135. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/models/code_signing_settings_manager.py +0 -0
  136. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/models/enums.py +0 -0
  137. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/models/export_options.py +0 -0
  138. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/models/json_serializable.py +0 -0
  139. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/models/junit/__init__.py +0 -0
  140. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/models/junit/definitions.py +0 -0
  141. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/models/junit/printer.py +0 -0
  142. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/models/keystore.py +0 -0
  143. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/models/pbx_project.py +0 -0
  144. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/models/private_key.py +0 -0
  145. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/models/provisioning_profile.py +0 -0
  146. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/models/simulator/__init__.py +0 -0
  147. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/models/simulator/core_simulator_service.py +0 -0
  148. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/models/simulator/runtime.py +0 -0
  149. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/models/simulator/simulator.py +0 -0
  150. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/models/table/__init__.py +0 -0
  151. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/models/table/line.py +0 -0
  152. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/models/table/table.py +0 -0
  153. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/models/xcode.py +0 -0
  154. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/models/xcodebuild.py +0 -0
  155. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/models/xcpretty.py +0 -0
  156. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/models/xctests/__init__.py +0 -0
  157. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/models/xctests/collector.py +0 -0
  158. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/models/xctests/converter.py +0 -0
  159. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/models/xctests/xcresult.py +0 -0
  160. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/models/xctests/xcresulttool.py +0 -0
  161. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/py.typed +0 -0
  162. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/scripts/code_signing_manager.rb +0 -0
  163. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/shell_tools/__init__.py +0 -0
  164. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/shell_tools/abstract_shell_tool.py +0 -0
  165. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/shell_tools/keytool.py +0 -0
  166. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/__init__.py +0 -0
  167. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/_xcode_project/__init__.py +0 -0
  168. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/_xcode_project/arguments.py +0 -0
  169. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/android_app_bundle.py +0 -0
  170. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/android_keystore/__init__.py +0 -0
  171. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/android_keystore/__main__.py +0 -0
  172. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/android_keystore/android_keystore.py +0 -0
  173. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/android_keystore/argument_types.py +0 -0
  174. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/android_keystore/arguments.py +0 -0
  175. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/app_store_connect/__init__.py +0 -0
  176. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/app_store_connect/__main__.py +0 -0
  177. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/app_store_connect/abstract_base_action.py +0 -0
  178. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/app_store_connect/action_group.py +0 -0
  179. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/app_store_connect/action_groups/__init__.py +0 -0
  180. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/app_store_connect/action_groups/app_store_version_localizations_action_group.py +0 -0
  181. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/app_store_connect/action_groups/app_store_version_phased_releases_action_group.py +0 -0
  182. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/app_store_connect/action_groups/app_store_version_submissions_action_group.py +0 -0
  183. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/app_store_connect/action_groups/app_store_versions_action_group.py +0 -0
  184. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/app_store_connect/action_groups/apps_action_group.py +0 -0
  185. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/app_store_connect/action_groups/beta_app_review_submissions_action_group.py +0 -0
  186. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/app_store_connect/action_groups/beta_build_localizations_action_group.py +0 -0
  187. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/app_store_connect/action_groups/beta_groups_action_group.py +0 -0
  188. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/app_store_connect/action_groups/builds_action_group.py +0 -0
  189. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/app_store_connect/action_groups/bundle_ids_action_group.py +0 -0
  190. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/app_store_connect/action_groups/certificates_action_group.py +0 -0
  191. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/app_store_connect/action_groups/devices_action_group.py +0 -0
  192. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/app_store_connect/action_groups/profiles_action_group.py +0 -0
  193. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/app_store_connect/action_groups/review_submission_items_actions_group.py +0 -0
  194. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/app_store_connect/action_groups/review_submissions_actions_group.py +0 -0
  195. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/app_store_connect/actions/__init__.py +0 -0
  196. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/app_store_connect/actions/fetch_signing_files_action.py +0 -0
  197. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/app_store_connect/actions/latest_build_number_actions.py +0 -0
  198. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/app_store_connect/actions/publish_action.py +0 -0
  199. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/app_store_connect/actions/submit_to_app_store_action.py +0 -0
  200. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/app_store_connect/actions/submit_to_testflight_action.py +0 -0
  201. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/app_store_connect/app_store_connect.py +0 -0
  202. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/app_store_connect/arguments.py +0 -0
  203. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/app_store_connect/errors.py +0 -0
  204. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/app_store_connect/mixins/__init__.py +0 -0
  205. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/app_store_connect/mixins/resource_manager_mixin.py +0 -0
  206. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/app_store_connect/mixins/signing_file_saver_mixin.py +0 -0
  207. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/app_store_connect/resource_printer.py +0 -0
  208. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/codemagic_cli_tools.py +0 -0
  209. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/firebase_app_distribution/__init__.py +0 -0
  210. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/firebase_app_distribution/__main__.py +0 -0
  211. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/firebase_app_distribution/action_groups/__init__.py +0 -0
  212. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/firebase_app_distribution/action_groups/firebase_action_groups.py +0 -0
  213. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/firebase_app_distribution/actions/__init__.py +0 -0
  214. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/firebase_app_distribution/argument_types.py +0 -0
  215. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/firebase_app_distribution/errors.py +0 -0
  216. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/firebase_app_distribution/resource_printer.py +0 -0
  217. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/git_changelog.py +0 -0
  218. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/google_play/__init__.py +0 -0
  219. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/google_play/__main__.py +0 -0
  220. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/google_play/action_groups/__init__.py +0 -0
  221. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/google_play/action_groups/google_play_action_groups.py +0 -0
  222. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/google_play/action_groups/tracks_action_group.py +0 -0
  223. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/google_play/actions/__init__.py +0 -0
  224. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/google_play/actions/get_latest_build_number_action.py +0 -0
  225. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/google_play/argument_types.py +0 -0
  226. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/google_play/arguments.py +0 -0
  227. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/google_play/errors.py +0 -0
  228. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/google_play/google_play.py +0 -0
  229. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/google_play/google_play_base_action.py +0 -0
  230. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/keychain.py +0 -0
  231. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/universal_apk_generator.py +0 -0
  232. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/xcode_project.py +0 -0
  233. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/utilities/__init__.py +0 -0
  234. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/utilities/auditing/__init__.py +0 -0
  235. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/utilities/auditing/base_auditor.py +0 -0
  236. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/utilities/auditing/exception_auditor.py +0 -0
  237. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/utilities/auditing/http_request_auditor.py +0 -0
  238. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/utilities/backwards_file_reader.py +0 -0
  239. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/utilities/case_conversion.py +0 -0
  240. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/utilities/decorators.py +0 -0
  241. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/utilities/levenshtein_distance.py +0 -0
  242. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/utilities/log.py +0 -0
  243. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/src/codemagic/utilities/versions.py +0 -0
  244. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/__init__.py +0 -0
  245. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/apple/__init__.py +0 -0
  246. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/apple/app_store_connect/__init__.py +0 -0
  247. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/apple/app_store_connect/app_store_publishing/__init__.py +0 -0
  248. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/apple/app_store_connect/app_store_publishing/test_app_store_version_phased_releases.py +0 -0
  249. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/apple/app_store_connect/apps/__init__.py +0 -0
  250. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/apple/app_store_connect/apps/test_apps.py +0 -0
  251. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/apple/app_store_connect/builds/__init__.py +0 -0
  252. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/apple/app_store_connect/builds/test_builds.py +0 -0
  253. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/apple/app_store_connect/provisioning/__init__.py +0 -0
  254. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/apple/app_store_connect/provisioning/conftest.py +0 -0
  255. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/apple/app_store_connect/provisioning/test_bundle_id_capabilities.py +0 -0
  256. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/apple/app_store_connect/provisioning/test_bundle_ids.py +0 -0
  257. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/apple/app_store_connect/provisioning/test_devices.py +0 -0
  258. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/apple/app_store_connect/provisioning/test_profiles.py +0 -0
  259. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/apple/app_store_connect/provisioning/test_signing_certificates.py +0 -0
  260. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/apple/app_store_connect/resource_manager_test_base.py +0 -0
  261. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/apple/app_store_connect/test_api_client.py +0 -0
  262. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/apple/app_store_connect/test_api_session.py +0 -0
  263. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/apple/app_store_connect/test_json_web_token_manager.py +0 -0
  264. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/apple/app_store_connect/test_resource_manager.py +0 -0
  265. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/apple/app_store_connect/testflight/__init__.py +0 -0
  266. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/apple/app_store_connect/testflight/test_beta_groups.py +0 -0
  267. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/apple/app_store_connect/versioning/__init__.py +0 -0
  268. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/apple/app_store_connect/versioning/test_app_store_version_localizations.py +0 -0
  269. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/apple/app_store_connect/versioning/test_app_store_version_submissions.py +0 -0
  270. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/apple/app_store_connect/versioning/test_app_store_versions.py +0 -0
  271. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/apple/app_store_connect/versioning/test_beta_app_review_submissions.py +0 -0
  272. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/apple/app_store_connect/versioning/test_beta_build_localizations.py +0 -0
  273. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/apple/app_store_connect/versioning/test_pre_release_versions.py +0 -0
  274. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/apple/app_store_connect/versioning/test_review_submission_items.py +0 -0
  275. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/apple/app_store_connect/versioning/test_review_submissions.py +0 -0
  276. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/apple/resources/__init__.py +0 -0
  277. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/apple/resources/conftest.py +0 -0
  278. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/apple/resources/enums/__init__.py +0 -0
  279. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/apple/resources/enums/test_capability_type.py +0 -0
  280. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/apple/resources/enums/test_certificate_type.py +0 -0
  281. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/apple/resources/enums/test_profile_type.py +0 -0
  282. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/apple/resources/mocks/app.json +0 -0
  283. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/apple/resources/mocks/app_store_version.json +0 -0
  284. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/apple/resources/mocks/app_store_version_phased_release.json +0 -0
  285. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/apple/resources/mocks/build.json +0 -0
  286. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/apple/resources/mocks/bundle_id.json +0 -0
  287. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/apple/resources/mocks/bundle_id_capability.json +0 -0
  288. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/apple/resources/mocks/certificate.json +0 -0
  289. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/apple/resources/mocks/device.json +0 -0
  290. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/apple/resources/mocks/error_response.json +0 -0
  291. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/apple/resources/mocks/error_response_entity_state_invalid.json +0 -0
  292. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/apple/resources/mocks/error_response_with_links.json +0 -0
  293. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/apple/resources/mocks/mock_resource.json +0 -0
  294. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/apple/resources/mocks/pre_release_version.json +0 -0
  295. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/apple/resources/mocks/profile.json +0 -0
  296. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/apple/resources/test_app_resource.py +0 -0
  297. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/apple/resources/test_app_store_version_phased_release_resource.py +0 -0
  298. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/apple/resources/test_app_store_version_resource.py +0 -0
  299. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/apple/resources/test_build_resource.py +0 -0
  300. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/apple/resources/test_bundle_id_capability_resource.py +0 -0
  301. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/apple/resources/test_bundle_id_resource.py +0 -0
  302. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/apple/resources/test_device_resource.py +0 -0
  303. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/apple/resources/test_error_response.py +0 -0
  304. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/apple/resources/test_pre_release_version_resource.py +0 -0
  305. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/apple/resources/test_profile_resource.py +0 -0
  306. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/apple/resources/test_resource.py +0 -0
  307. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/apple/resources/test_signing_certificate_resource.py +0 -0
  308. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/apple/resources/test_undefined_resource_fields.py +0 -0
  309. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/cli/__init__.py +0 -0
  310. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/cli/argument/__init__.py +0 -0
  311. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/cli/argument/common_argument_types/__init__.py +0 -0
  312. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/cli/argument/common_argument_types/test_bounded_number.py +0 -0
  313. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/cli/argument/common_argument_types/test_iso_8601_datetime.py +0 -0
  314. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/cli/argument/common_argument_types/test_maybe_dir.py +0 -0
  315. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/cli/argument/test_argument.py +0 -0
  316. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/cli/mocks/utf-8-sample.txt +0 -0
  317. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/cli/test_cli_process.py +0 -0
  318. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/cli/test_decorators.py +0 -0
  319. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/conftest.py +0 -0
  320. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/google/__init__.py +0 -0
  321. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/google/conftest.py +0 -0
  322. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/google/test_firebase_client.py +0 -0
  323. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/google/test_live_firebase_client.py +0 -0
  324. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/google_play/__init__.py +0 -0
  325. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/google_play/resources/__init__.py +0 -0
  326. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/google_play/resources/conftest.py +0 -0
  327. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/google_play/resources/mocks/edit.json +0 -0
  328. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/google_play/resources/mocks/track.json +0 -0
  329. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/google_play/resources/test_edit_resource.py +0 -0
  330. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/google_play/resources/test_resource_print.py +0 -0
  331. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/google_play/resources/test_track_resource.py +0 -0
  332. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/google_play/test_api_client.py +0 -0
  333. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/mixins/__init__.py +0 -0
  334. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/mixins/test_path_finder.py +0 -0
  335. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/mixins/test_string_converter.py +0 -0
  336. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/mocks/certificate.asn1 +0 -0
  337. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/mocks/encrypted.pem +0 -0
  338. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/mocks/encrypted.pem.pub +0 -0
  339. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/mocks/unencrypted.pem +0 -0
  340. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/mocks/unencrypted.pem.pub +0 -0
  341. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/models/__init__.py +0 -0
  342. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/models/altool/__init__.py +0 -0
  343. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/models/altool/mocks/mock_failure_auth.txt +0 -0
  344. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/models/altool/mocks/mock_failure_other.txt +0 -0
  345. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/models/altool/mocks/mock_upload_success.json +0 -0
  346. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/models/altool/mocks/mock_validation_failure.json +0 -0
  347. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/models/altool/test_altool_result.py +0 -0
  348. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/models/altool/test_altool_retrying.py +0 -0
  349. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/models/conftest.py +0 -0
  350. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/models/enums/__init__.py +0 -0
  351. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/models/enums/test_resource_enum.py +0 -0
  352. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/models/junit/__init__.py +0 -0
  353. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/models/junit/mocks/testsuite.xml +0 -0
  354. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/models/junit/test_xml_generation.py +0 -0
  355. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/models/mocks/certificate-no-password.p12 +0 -0
  356. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/models/mocks/certificate.p12 +0 -0
  357. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/models/mocks/codemagic_io_wildcard_development.mobileprovision +0 -0
  358. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/models/mocks/export_options.plist +0 -0
  359. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/models/mocks/mock.ipa +0 -0
  360. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/models/mocks/mock.xcarchive/Products/Applications/Capybara App.app/Capybara App +0 -0
  361. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/models/mocks/mock_0_icloud_container_environments.plist +0 -0
  362. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/models/mocks/mock_1_icloud_container_environments.plist +0 -0
  363. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/models/mocks/mock_2_icloud_container_environments.plist +0 -0
  364. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/models/mocks/mock_openssh_private_key +0 -0
  365. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/models/mocks/mock_rsa_private_key +0 -0
  366. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/models/mocks/mock_xcode/Contents/version.plist +0 -0
  367. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/models/simulator/__init__.py +0 -0
  368. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/models/simulator/mocks/devices.json +0 -0
  369. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/models/simulator/mocks/simulator.json +0 -0
  370. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/models/simulator/test_runtime.py +0 -0
  371. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/models/simulator/test_simulator.py +0 -0
  372. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/models/test_certificate.py +0 -0
  373. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/models/test_certificate_attributes.py +0 -0
  374. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/models/test_code_sign_entitlements.py +0 -0
  375. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/models/test_export_options.py +0 -0
  376. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/models/test_private_key.py +0 -0
  377. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/models/test_provisioning_profile.py +0 -0
  378. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/models/test_table.py +0 -0
  379. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/models/test_xcode.py +0 -0
  380. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/models/xctests/__init__.py +0 -0
  381. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/models/xctests/conftest.py +0 -0
  382. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/models/xctests/mocks/0_1NtPgUPcB1A83X977l5Q91ElstUeVDnqAhumk_VJG8DIS4GA1sb8ElPPHZZGYEHmNvnHU1VVaPDCw1tI8n3uXg__.json +0 -0
  383. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/models/xctests/mocks/0_5rAUs3HknUI7DU8Jyc5RlFcosqCXTOV-qwOaOE1Mul_ppK8QCta-NSxxCdtVg6i12km4zTR5l0SjgzfHGUNxog__.json +0 -0
  384. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/models/xctests/mocks/0_97T9qQZ3dEI1oDS6NvYTPcFk_jUXFJ0NRwyd5FZ2S585JGMtlqbF28Hc85yeifgKEnNoInoW93Za9c5QJCspeQ__.json +0 -0
  385. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/models/xctests/mocks/0_DVcJZnHFaQQlzl8czovv7RuDRQIToEr5_3lLe-Mn1Sm6VreJ5xoXEFqBaWNv0XRmSg00NJ77XzQKgddhfkuk7w__.json +0 -0
  386. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/models/xctests/mocks/0_FZMbIp5VAUEiJv1wUUM-K78Dtmb4o-titbTusDJqRuarbS9OatzAykygXo4NUqEoR9sxCIoeu8VDioQmbba6mw__.json +0 -0
  387. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/models/xctests/mocks/0_Hj6SOUxY1APmxdQEA2HdqbA52GD3WJE571nqr_Z-w8vi_buxP-GUjNxCsGYQvnKnnwlyykwxY-KJmjqKYmPyXQ__.json +0 -0
  388. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/models/xctests/mocks/0_NnCmQ8rMqVyUBgL3ZDjfjJ9Vt1AMGeMzZPkDH30rGMYer0pFDpp4UDZlCEHRImO-48LdC_KdcbjP70IZA6zKUQ__.json +0 -0
  389. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/models/xctests/mocks/0_YK9aPHVT-grv_ZVooRT79GBO9n82BNogkuWVzFO6itJEtbtsRTQpK2-0ZDLot1JpCfPb26aZwEZjeb9G4GHiBQ__.json +0 -0
  390. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/models/xctests/mocks/0__H1_RrdBT9b-ZhkWCQiRKpHlwURmyWUudeOhj5UslLXhXl8mr9w5CGqdobi9A5wCVEIRMsO4yuFyzx2gMPr-_Q__.json +0 -0
  391. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/models/xctests/mocks/0_evvkuGf92MVrmIvhr07911LuRTiPBKDjIQ0q_7L-mPGGYkWVKMBPQ5pB5lbjoaOnvr0fpC9k003EunfwSdss2g__.json +0 -0
  392. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/models/xctests/mocks/actions_invocation_record.json +0 -0
  393. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/models/xctests/test_collector.py +0 -0
  394. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/models/xctests/test_converter.py +0 -0
  395. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/models/xctests/test_xcresult.py +0 -0
  396. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/models/xctests/test_xcresulttool.py +0 -0
  397. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/shell_tools/__init__.py +0 -0
  398. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/shell_tools/keytool/__init__.py +0 -0
  399. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/shell_tools/keytool/conftest.py +0 -0
  400. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/shell_tools/keytool/mocks/android.ks +0 -0
  401. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/shell_tools/keytool/mocks/non-rfc-cert-keystore.jks +0 -0
  402. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/shell_tools/keytool/mocks/non-rfc-cert-keystore.p12 +0 -0
  403. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/shell_tools/keytool/mocks/rfc-cert-keystore.jks +0 -0
  404. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/shell_tools/keytool/mocks/rfc-cert-keystore.p12 +0 -0
  405. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/shell_tools/keytool/test_get_certificate.py +0 -0
  406. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/shell_tools/keytool/test_get_certificates.py +0 -0
  407. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/shell_tools/keytool/test_validate.py +0 -0
  408. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/tools/__init__.py +0 -0
  409. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/tools/app_store_connect/__init__.py +0 -0
  410. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/tools/app_store_connect/action_groups/__init__.py +0 -0
  411. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/tools/app_store_connect/action_groups/test_apps_action_group.py +0 -0
  412. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/tools/app_store_connect/actions/__init__.py +0 -0
  413. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/tools/app_store_connect/actions/publish_action/__init__.py +0 -0
  414. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/tools/app_store_connect/actions/publish_action/test_publish_arguments.py +0 -0
  415. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/tools/app_store_connect/arguments/__init__.py +0 -0
  416. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/tools/app_store_connect/arguments/test_beta_build_localizations.py +0 -0
  417. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/tools/app_store_connect/conftest.py +0 -0
  418. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/tools/app_store_connect/mocks/AuthKeyMock.p8 +0 -0
  419. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/tools/app_store_connect/test_from_cli_args.py +0 -0
  420. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/tools/google_play/__init__.py +0 -0
  421. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/tools/google_play/mocks/google_play_tracks.json +0 -0
  422. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/tools/google_play/test_argument_types.py +0 -0
  423. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/tools/google_play/test_google_play.py +0 -0
  424. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/tools/mocks/firebase_releases.json +0 -0
  425. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/tools/test_android_app_bundle.py +0 -0
  426. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/tools/test_keychain.py +0 -0
  427. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/tools/test_universal_apk_generator.py +0 -0
  428. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/utilities/__init__.py +0 -0
  429. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/utilities/decorators/__init__.py +0 -0
  430. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/utilities/decorators/test_deprecated.py +0 -0
  431. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/utilities/test_backwards_file_reader.py +0 -0
  432. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/utilities/test_case_conversion.py +0 -0
  433. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/utilities/test_levenshtein_distance.py +0 -0
  434. {codemagic_cli_tools-0.53.4 → codemagic_cli_tools-0.53.5}/tests/utilities/test_versions.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: codemagic-cli-tools
3
- Version: 0.53.4
3
+ Version: 0.53.5
4
4
  Summary: CLI tools used in Codemagic builds
5
5
  Home-page: https://github.com/codemagic-ci-cd/cli-tools
6
6
  License: GPL-3.0-or-later
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "codemagic-cli-tools"
3
- version = "0.53.4"
3
+ version = "0.53.5"
4
4
  description = "CLI tools used in Codemagic builds"
5
5
  readme = "README.md"
6
6
  authors = [
@@ -1,5 +1,5 @@
1
1
  __title__ = "codemagic-cli-tools"
2
2
  __description__ = "CLI tools used in Codemagic builds"
3
- __version__ = '0.53.4'
3
+ __version__ = '0.53.5'
4
4
  __url__ = "https://github.com/codemagic-ci-cd/cli-tools"
5
5
  __licence__ = "GNU General Public License v3.0"
@@ -1,5 +1,5 @@
1
1
  __title__ = "codemagic-cli-tools"
2
2
  __description__ = "CLI tools used in Codemagic builds"
3
- __version__ = "0.53.4.dev"
3
+ __version__ = "0.53.5.dev"
4
4
  __url__ = "https://github.com/codemagic-ci-cd/cli-tools"
5
5
  __licence__ = "GNU General Public License v3.0"
@@ -6,6 +6,7 @@ from .argument import Argument
6
6
  from .argument import ArgumentProperties
7
7
  from .argument import CommonArgumentTypes
8
8
  from .argument import EnvironmentArgumentValue
9
+ from .argument import MutuallyExclusiveGroup
9
10
  from .argument import TypedCliArgument
10
11
  from .cli_app import CliApp
11
12
  from .cli_app import CliAppException
@@ -5,5 +5,6 @@ from .argument_formatter import ArgumentFormatter
5
5
  from .argument_parser_builder import ArgumentParserBuilder
6
6
  from .argument_properties import ArgumentProperties
7
7
  from .common_argument_types import CommonArgumentTypes
8
+ from .mutually_exclusive_groups import MutuallyExclusiveGroup
8
9
  from .typed_cli_argument import EnvironmentArgumentValue
9
10
  from .typed_cli_argument import TypedCliArgument
@@ -0,0 +1,220 @@
1
+ from __future__ import annotations
2
+
3
+ import argparse
4
+ import dataclasses
5
+ from typing import TYPE_CHECKING
6
+ from typing import Dict
7
+ from typing import Optional
8
+ from typing import Sequence
9
+ from typing import Tuple
10
+ from typing import Type
11
+
12
+ from codemagic.cli.cli_help_formatter import CliHelpFormatter
13
+ from codemagic.cli.colors import Colors
14
+
15
+ from .argument_formatter import ArgumentFormatter
16
+ from .mutually_exclusive_groups import MutuallyExclusiveGroup
17
+ from .mutually_exclusive_groups import MutuallyExclusiveGroups
18
+
19
+ if TYPE_CHECKING:
20
+ from argparse import _ArgumentGroup as ArgumentGroup
21
+ from argparse import _SubParsersAction as SubParsersAction
22
+
23
+ from codemagic.cli import Argument
24
+ from codemagic.cli.argument import ActionCallable
25
+ from codemagic.cli.cli_app import CliApp
26
+
27
+
28
+ @dataclasses.dataclass
29
+ class _ArgumentGroups:
30
+ required: Optional[ArgumentGroup] = None
31
+ optionals: Optional[ArgumentGroup] = None
32
+ mutually_exclusive: Dict[MutuallyExclusiveGroup, ArgumentGroup] = dataclasses.field(default_factory=dict)
33
+ custom: Dict[str, ArgumentGroup] = dataclasses.field(default_factory=dict)
34
+
35
+ def register_arguments(self, arguments: Sequence[Argument]):
36
+ argument_group: Optional[ArgumentGroup]
37
+ for argument in arguments:
38
+ if argument.argument_group_name:
39
+ argument_group = self.custom[argument.argument_group_name]
40
+ elif argument.mutually_exclusive_group:
41
+ argument_group = self.mutually_exclusive[argument.mutually_exclusive_group]
42
+ elif argument.is_required():
43
+ argument_group = self.required
44
+ else:
45
+ argument_group = self.optionals
46
+
47
+ if argument_group:
48
+ argument.register(argument_group)
49
+
50
+
51
+ class ArgumentParserBuilder:
52
+ def __init__(
53
+ self,
54
+ cli_app: Type[CliApp],
55
+ cli_action: ActionCallable,
56
+ parent_parser: SubParsersAction,
57
+ for_deprecated_alias: bool = False,
58
+ ):
59
+ self._cli_app = cli_app
60
+ self._cli_action = cli_action
61
+ self._action_parser = self._create_action_parser(parent_parser, for_deprecated_alias)
62
+
63
+ def _create_action_parser(self, parent_parser: SubParsersAction, for_deprecated_alias: bool):
64
+ if for_deprecated_alias:
65
+ if self._cli_action.deprecation_info is None:
66
+ raise RuntimeError(f"Deprecated alias requested for {self._cli_action.action_name} without alias")
67
+
68
+ deprecation_message = self._cli_action.deprecation_info.get_message(
69
+ self._full_action_name,
70
+ Colors.YELLOW,
71
+ Colors.BOLD,
72
+ )
73
+ return parent_parser.add_parser(
74
+ self._cli_action.deprecation_info.alias,
75
+ formatter_class=CliHelpFormatter,
76
+ description=f"{deprecation_message} {Colors.BOLD(self._cli_action.__doc__)}",
77
+ )
78
+ else:
79
+ return parent_parser.add_parser(
80
+ self._cli_action.action_name,
81
+ formatter_class=CliHelpFormatter,
82
+ description=Colors.BOLD(self._cli_action.__doc__),
83
+ help=self._cli_action.__doc__,
84
+ )
85
+
86
+ @property
87
+ def _full_action_name(self) -> str:
88
+ executable = self._cli_app.get_executable_name()
89
+ if self._cli_action.action_group:
90
+ return f"{executable} {self._cli_action.action_group.name} {self._cli_action.action_name}"
91
+ else:
92
+ return f"{executable} {self._cli_action.action_name}"
93
+
94
+ @classmethod
95
+ def set_default_cli_options(cls, cli_options_parser):
96
+ options_group = cli_options_parser.add_argument_group(Colors.UNDERLINE("Options"))
97
+ options_group.add_argument(
98
+ "--log-stream",
99
+ type=str,
100
+ default="stderr",
101
+ choices=["stderr", "stdout"],
102
+ help=f'Log output stream. {ArgumentFormatter.format_default_value("stderr")}',
103
+ )
104
+ options_group.add_argument(
105
+ "--no-color",
106
+ dest="no_color",
107
+ action="store_true",
108
+ help="Do not use ANSI colors to format terminal output",
109
+ )
110
+ options_group.add_argument(
111
+ "--version",
112
+ dest="show_version",
113
+ action="store_true",
114
+ help="Show tool version and exit",
115
+ )
116
+ options_group.add_argument(
117
+ "-s",
118
+ "--silent",
119
+ dest="enable_logging",
120
+ action="store_false",
121
+ help="Disable log output for commands",
122
+ )
123
+ options_group.add_argument(
124
+ "-v",
125
+ "--verbose",
126
+ dest="verbose",
127
+ action="store_true",
128
+ help="Enable verbose logging for commands",
129
+ )
130
+
131
+ options_group.set_defaults(
132
+ enable_logging=True,
133
+ no_color=False,
134
+ show_version=False,
135
+ verbose=False,
136
+ )
137
+
138
+ @staticmethod
139
+ def _get_mutually_exclusive_group_texts(group: MutuallyExclusiveGroup, executable: str) -> Tuple[str, str]:
140
+ if group.required:
141
+ title_prefix, description_prefix, description_verb = "Required", "Exactly", "must"
142
+ else:
143
+ title_prefix, description_prefix, description_verb = "Optional", "Only", "can"
144
+
145
+ title = f"{title_prefix} mutually exclusive arguments for {executable} to {Colors.BOLD(group.name)}"
146
+ description = f"{description_prefix} one of those options {description_verb} be selected"
147
+ return title, description
148
+
149
+ def _setup_custom_argument_groups(self, group_names: Sequence[str], executable) -> Dict[str, ArgumentGroup]:
150
+ argument_groups = {}
151
+ for group_name in group_names:
152
+ description = f"Optional arguments for {executable} to {Colors.BOLD(group_name)}"
153
+ argument_group = self._action_parser.add_argument_group(Colors.UNDERLINE(description))
154
+ argument_groups[group_name] = argument_group
155
+ return argument_groups
156
+
157
+ def _setup_mutually_exclusive_groups(
158
+ self,
159
+ mutually_exclusive_groups: Sequence[MutuallyExclusiveGroup],
160
+ executable: str,
161
+ ) -> Dict[MutuallyExclusiveGroup, ArgumentGroup]:
162
+ argument_groups = {}
163
+ for mutually_exclusive_group in mutually_exclusive_groups:
164
+ title, description = self._get_mutually_exclusive_group_texts(mutually_exclusive_group, executable)
165
+ argument_group = self._action_parser.add_argument_group(Colors.UNDERLINE(title), description)
166
+ mutually_exclusive_argument_group = argument_group.add_mutually_exclusive_group(
167
+ required=mutually_exclusive_group.required,
168
+ )
169
+ argument_groups[mutually_exclusive_group] = mutually_exclusive_argument_group
170
+ return argument_groups
171
+
172
+ def _setup_cli_app_options(self):
173
+ executable = self._action_parser.prog.split()[0]
174
+
175
+ mutually_exclusive_groups = MutuallyExclusiveGroups.from_argument_list(self._cli_app.CLASS_ARGUMENTS)
176
+
177
+ argument_groups = _ArgumentGroups()
178
+
179
+ required_args_title = Colors.UNDERLINE(f"Required arguments for {Colors.BOLD(executable)}")
180
+ argument_groups.required = self._action_parser.add_argument_group(required_args_title)
181
+ argument_groups.mutually_exclusive.update(
182
+ self._setup_mutually_exclusive_groups(mutually_exclusive_groups.required, executable),
183
+ )
184
+
185
+ optional_args_title = Colors.UNDERLINE(f"Optional arguments for {Colors.BOLD(executable)}")
186
+ argument_groups.optionals = self._action_parser.add_argument_group(optional_args_title)
187
+ argument_groups.mutually_exclusive.update(
188
+ self._setup_mutually_exclusive_groups(mutually_exclusive_groups.optional, executable),
189
+ )
190
+
191
+ argument_groups.register_arguments(self._cli_app.CLASS_ARGUMENTS)
192
+
193
+ def _setup_cli_action_options(self):
194
+ executable = f"command {self._cli_action.action_name}"
195
+ mutually_exclusive_groups = MutuallyExclusiveGroups.from_argument_list(self._cli_action.arguments)
196
+
197
+ argument_groups = _ArgumentGroups()
198
+
199
+ required_args_title = f"Required arguments for command {Colors.BOLD(self._cli_action.action_name)}"
200
+ argument_groups.required = self._action_parser.add_argument_group(Colors.UNDERLINE(required_args_title))
201
+ argument_groups.mutually_exclusive.update(
202
+ self._setup_mutually_exclusive_groups(mutually_exclusive_groups.required, executable),
203
+ )
204
+
205
+ optional_args_title = f"Optional arguments for command {Colors.BOLD(self._cli_action.action_name)}"
206
+ argument_groups.optionals = self._action_parser.add_argument_group(Colors.UNDERLINE(optional_args_title))
207
+ argument_groups.mutually_exclusive.update(
208
+ self._setup_mutually_exclusive_groups(mutually_exclusive_groups.optional, executable),
209
+ )
210
+
211
+ custom_group_names = {a.argument_group_name for a in self._cli_action.arguments if a.argument_group_name}
212
+ argument_groups.custom = self._setup_custom_argument_groups(sorted(custom_group_names), executable)
213
+
214
+ argument_groups.register_arguments(self._cli_action.arguments)
215
+
216
+ def build(self) -> argparse.ArgumentParser:
217
+ self._setup_cli_app_options()
218
+ self._setup_cli_action_options()
219
+ self.set_default_cli_options(self._action_parser)
220
+ return self._action_parser
@@ -2,6 +2,7 @@
2
2
  from __future__ import annotations
3
3
 
4
4
  import copy
5
+ from typing import TYPE_CHECKING
5
6
  from typing import Any
6
7
  from typing import Callable
7
8
  from typing import Dict
@@ -11,6 +12,9 @@ from typing import Tuple
11
12
  from typing import Type
12
13
  from typing import Union
13
14
 
15
+ if TYPE_CHECKING:
16
+ from codemagic.cli import MutuallyExclusiveGroup
17
+
14
18
 
15
19
  class ArgumentProperties(NamedTuple):
16
20
  key: str
@@ -19,6 +23,7 @@ class ArgumentProperties(NamedTuple):
19
23
  flags: Tuple[str, ...] = tuple()
20
24
  argparse_kwargs: Optional[Dict[str, Any]] = None
21
25
  argument_group_name: Optional[str] = None
26
+ mutually_exclusive_group: Optional[MutuallyExclusiveGroup] = None
22
27
 
23
28
  @classmethod
24
29
  def duplicate(cls, template: Union[Tuple, ArgumentProperties], **overwrites) -> ArgumentProperties:
@@ -0,0 +1,35 @@
1
+ from __future__ import annotations
2
+
3
+ import dataclasses
4
+ from typing import NamedTuple
5
+ from typing import Sequence
6
+
7
+ from .argument import Argument
8
+
9
+
10
+ class MutuallyExclusiveGroup(NamedTuple):
11
+ name: str
12
+ required: bool
13
+
14
+
15
+ @dataclasses.dataclass(frozen=True)
16
+ class MutuallyExclusiveGroups:
17
+ required: Sequence[MutuallyExclusiveGroup]
18
+ optional: Sequence[MutuallyExclusiveGroup]
19
+
20
+ @classmethod
21
+ def from_argument_list(cls, arguments: Sequence[Argument]) -> MutuallyExclusiveGroups:
22
+ required_groups, optional_groups = set(), set()
23
+
24
+ for argument in arguments:
25
+ if not argument.mutually_exclusive_group:
26
+ continue
27
+ elif argument.mutually_exclusive_group.required:
28
+ required_groups.add(argument.mutually_exclusive_group)
29
+ else:
30
+ optional_groups.add(argument.mutually_exclusive_group)
31
+
32
+ return MutuallyExclusiveGroups(
33
+ required=tuple(required_groups),
34
+ optional=tuple(optional_groups),
35
+ )
@@ -38,7 +38,7 @@ class ReleasesActionGroup(FirebaseAppDistributionAction, ABC):
38
38
  List releases for the Firebase application
39
39
  """
40
40
 
41
- app_identifier = AppIdentifier(self.project_id, app_id)
41
+ app_identifier = AppIdentifier(self.project_number, app_id)
42
42
  try:
43
43
  releases = self.client.releases.list(app_identifier, order_by, limit)
44
44
  except GoogleError as e:
@@ -18,7 +18,7 @@ class GetLatestBuildVersionAction(FirebaseAppDistributionAction, ABC):
18
18
  """
19
19
  Get latest build version from Firebase
20
20
  """
21
- app_identifier = AppIdentifier(self.project_id, app_id)
21
+ app_identifier = AppIdentifier(self.project_number, app_id)
22
22
  try:
23
23
  releases = self.client.releases.list(app_identifier, limit=1)
24
24
  except GoogleError as e:
@@ -4,13 +4,24 @@ from codemagic.google.resources import OrderBy
4
4
 
5
5
  from .argument_types import CredentialsArgument
6
6
 
7
+ select_project_group = cli.MutuallyExclusiveGroup(
8
+ name="select project",
9
+ required=True,
10
+ )
11
+
7
12
 
8
13
  class FirebaseArgument(cli.Argument):
9
14
  PROJECT_ID = cli.ArgumentProperties(
10
15
  key="project_id",
11
- flags=("--project-id", "-p"),
12
- description=f'Project ID in Firebase. For example `{Colors.WHITE("228333310124")}`',
13
- argparse_kwargs={"required": True},
16
+ flags=("--project-id",),
17
+ description=f'Deprecated in version 0.53.5. Use `{Colors.BRIGHT_BLUE("--project-number")}` instead',
18
+ mutually_exclusive_group=select_project_group,
19
+ )
20
+ PROJECT_NUMBER = cli.ArgumentProperties(
21
+ key="project_number",
22
+ flags=("--project-number", "-p"),
23
+ description=f'Project number in Firebase. For example `{Colors.WHITE("228333310124")}`',
24
+ mutually_exclusive_group=select_project_group,
14
25
  )
15
26
  FIREBASE_SERVICE_ACCOUNT_CREDENTIALS = cli.ArgumentProperties(
16
27
  key="credentials",
@@ -0,0 +1,88 @@
1
+ #!/usr/bin/env python3
2
+
3
+ from __future__ import annotations
4
+
5
+ import argparse
6
+ from typing import Dict
7
+ from typing import Optional
8
+
9
+ from codemagic import cli
10
+ from codemagic.google.firebase_client import FirebaseClient
11
+ from codemagic.utilities import log
12
+ from codemagic.utilities.decorators import deprecated
13
+
14
+ from .action_groups import ReleasesActionGroup
15
+ from .actions import GetLatestBuildVersionAction
16
+ from .arguments import FirebaseArgument
17
+
18
+
19
+ @cli.common_arguments(
20
+ FirebaseArgument.PROJECT_ID,
21
+ FirebaseArgument.PROJECT_NUMBER,
22
+ FirebaseArgument.FIREBASE_SERVICE_ACCOUNT_CREDENTIALS,
23
+ )
24
+ class FirebaseAppDistribution(
25
+ cli.CliApp,
26
+ GetLatestBuildVersionAction,
27
+ ReleasesActionGroup,
28
+ ):
29
+ """
30
+ Utility to list releases and retrieve the latest release build version number from Firebase
31
+ """
32
+
33
+ def __init__(
34
+ self,
35
+ credentials: Dict,
36
+ project_number: Optional[str] = None,
37
+ project_id: Optional[str] = None,
38
+ **kwargs,
39
+ ):
40
+ if not project_id and not project_number:
41
+ raise ValueError("Missing project_number")
42
+ super().__init__(**kwargs)
43
+ self.client = FirebaseClient(credentials)
44
+ self._project_id = project_id
45
+ self._project_number = project_number
46
+ if project_id:
47
+ _ = self.project_id # Just to trigger deprecation warning
48
+
49
+ @property
50
+ @deprecated("0.53.5", 'Use "FirebaseAppDistribution.project_number" instead.')
51
+ def project_id(self):
52
+ return self.project_number
53
+
54
+ @property
55
+ def project_number(self):
56
+ if not self._project_number:
57
+ return self._project_id
58
+ return self._project_number
59
+
60
+ @classmethod
61
+ def from_cli_args(cls, cli_args: argparse.Namespace) -> FirebaseAppDistribution:
62
+ credentials_argument = FirebaseArgument.FIREBASE_SERVICE_ACCOUNT_CREDENTIALS.from_args(cli_args)
63
+ if credentials_argument is None:
64
+ raise FirebaseArgument.FIREBASE_SERVICE_ACCOUNT_CREDENTIALS.raise_argument_error()
65
+ project_id = FirebaseArgument.PROJECT_ID.from_args(cli_args)
66
+ if project_id:
67
+ message = (
68
+ "Deprecation warning! "
69
+ f'Flag "{FirebaseArgument.get_flag(FirebaseArgument.PROJECT_ID)}" was deprecated in version 0.53.5 '
70
+ "and is subject for removal in future releases. "
71
+ f'Use "{FirebaseArgument.get_flag(FirebaseArgument.PROJECT_NUMBER)}" instead.'
72
+ )
73
+ log.get_logger(cls).warning(cli.Colors.YELLOW(message))
74
+
75
+ project_number = FirebaseArgument.PROJECT_NUMBER.from_args(cli_args)
76
+
77
+ if not project_id and not project_number:
78
+ raise FirebaseArgument.PROJECT_NUMBER.raise_argument_error()
79
+
80
+ return FirebaseAppDistribution(
81
+ credentials_argument.value,
82
+ project_number=project_id or project_number,
83
+ **cls._parent_class_kwargs(cli_args),
84
+ )
85
+
86
+
87
+ if __name__ == "__main__":
88
+ FirebaseAppDistribution.invoke_cli()
@@ -16,7 +16,7 @@ class FirebaseAppDistributionAction(ABC):
16
16
 
17
17
  @property
18
18
  @abstractmethod
19
- def project_id(self):
19
+ def project_number(self):
20
20
  ...
21
21
 
22
22
  @classmethod
@@ -21,6 +21,7 @@ from googleapiclient import discovery
21
21
  from oauth2client.service_account import ServiceAccountCredentials
22
22
 
23
23
  credentials_argument = FirebaseArgument.FIREBASE_SERVICE_ACCOUNT_CREDENTIALS
24
+ project_number_argument = FirebaseArgument.PROJECT_NUMBER
24
25
  project_id_argument = FirebaseArgument.PROJECT_ID
25
26
 
26
27
 
@@ -41,7 +42,8 @@ def register_args(cli_argument_group):
41
42
  def namespace_kwargs():
42
43
  ns_kwargs = {
43
44
  credentials_argument.key: CredentialsArgument('{"type":"service_account"}'),
44
- project_id_argument.key: "228333310124",
45
+ project_number_argument.key: "228333310124",
46
+ project_id_argument.key: None,
45
47
  }
46
48
  for arg in FirebaseAppDistribution.CLASS_ARGUMENTS:
47
49
  if not hasattr(arg.type, "environment_variable_key"):
@@ -158,7 +160,7 @@ def app_identifier():
158
160
 
159
161
  @pytest.fixture
160
162
  def firebase_app_distribution(app_identifier):
161
- return FirebaseAppDistribution({"type": "service_account"}, app_identifier.project_id)
163
+ return FirebaseAppDistribution({"type": "service_account"}, app_identifier.project_id, None)
162
164
 
163
165
 
164
166
  def test_list_releases(firebase_app_distribution, mock_releases_list, releases, app_identifier):
@@ -1,154 +0,0 @@
1
- from __future__ import annotations
2
-
3
- import argparse
4
- from typing import TYPE_CHECKING
5
- from typing import Dict
6
- from typing import Type
7
-
8
- from codemagic.cli.cli_help_formatter import CliHelpFormatter
9
- from codemagic.cli.colors import Colors
10
-
11
- from .argument_formatter import ArgumentFormatter
12
-
13
- if TYPE_CHECKING:
14
- from argparse import _ArgumentGroup as ArgumentGroup
15
- from argparse import _SubParsersAction as SubParsersAction
16
-
17
- from codemagic.cli.argument import ActionCallable
18
- from codemagic.cli.cli_app import CliApp
19
-
20
-
21
- class ArgumentParserBuilder:
22
- def __init__(
23
- self,
24
- cli_app: Type[CliApp],
25
- cli_action: ActionCallable,
26
- parent_parser: SubParsersAction,
27
- for_deprecated_alias: bool = False,
28
- ):
29
- self._cli_app = cli_app
30
- self._cli_action = cli_action
31
- self._action_parser = self._create_action_parser(parent_parser, for_deprecated_alias)
32
- self._required_arguments = self._action_parser.add_argument_group(
33
- Colors.UNDERLINE(f"Required arguments for command {Colors.BOLD(cli_action.action_name)}"),
34
- )
35
- self._optional_arguments = self._action_parser.add_argument_group(
36
- Colors.UNDERLINE(f"Optional arguments for command {Colors.BOLD(cli_action.action_name)}"),
37
- )
38
- self._custom_arguments_groups: Dict[str, ArgumentGroup] = {}
39
-
40
- def _create_action_parser(self, parent_parser: SubParsersAction, for_deprecated_alias: bool):
41
- if for_deprecated_alias:
42
- if self._cli_action.deprecation_info is None:
43
- raise RuntimeError(f"Deprecated alias requested for {self._cli_action.action_name} without alias")
44
-
45
- deprecation_message = self._cli_action.deprecation_info.get_message(
46
- self._full_action_name,
47
- Colors.YELLOW,
48
- Colors.BOLD,
49
- )
50
- return parent_parser.add_parser(
51
- self._cli_action.deprecation_info.alias,
52
- formatter_class=CliHelpFormatter,
53
- description=f"{deprecation_message} {Colors.BOLD(self._cli_action.__doc__)}",
54
- )
55
- else:
56
- return parent_parser.add_parser(
57
- self._cli_action.action_name,
58
- formatter_class=CliHelpFormatter,
59
- description=Colors.BOLD(self._cli_action.__doc__),
60
- help=self._cli_action.__doc__,
61
- )
62
-
63
- @property
64
- def _full_action_name(self) -> str:
65
- executable = self._cli_app.get_executable_name()
66
- if self._cli_action.action_group:
67
- return f"{executable} {self._cli_action.action_group.name} {self._cli_action.action_name}"
68
- else:
69
- return f"{executable} {self._cli_action.action_name}"
70
-
71
- @classmethod
72
- def set_default_cli_options(cls, cli_options_parser):
73
- options_group = cli_options_parser.add_argument_group(Colors.UNDERLINE("Options"))
74
- options_group.add_argument(
75
- "--log-stream",
76
- type=str,
77
- default="stderr",
78
- choices=["stderr", "stdout"],
79
- help=f'Log output stream. {ArgumentFormatter.format_default_value("stderr")}',
80
- )
81
- options_group.add_argument(
82
- "--no-color",
83
- dest="no_color",
84
- action="store_true",
85
- help="Do not use ANSI colors to format terminal output",
86
- )
87
- options_group.add_argument(
88
- "--version",
89
- dest="show_version",
90
- action="store_true",
91
- help="Show tool version and exit",
92
- )
93
- options_group.add_argument(
94
- "-s",
95
- "--silent",
96
- dest="enable_logging",
97
- action="store_false",
98
- help="Disable log output for commands",
99
- )
100
- options_group.add_argument(
101
- "-v",
102
- "--verbose",
103
- dest="verbose",
104
- action="store_true",
105
- help="Enable verbose logging for commands",
106
- )
107
-
108
- options_group.set_defaults(
109
- enable_logging=True,
110
- no_color=False,
111
- show_version=False,
112
- verbose=False,
113
- )
114
-
115
- def _get_custom_argument_group(self, group_name) -> ArgumentGroup:
116
- try:
117
- argument_group = self._custom_arguments_groups[group_name]
118
- except KeyError:
119
- group_description = Colors.UNDERLINE(
120
- f"Optional arguments for command {self._cli_action.action_name} to {Colors.BOLD(group_name)}",
121
- )
122
- argument_group = self._action_parser.add_argument_group(group_description)
123
- self._custom_arguments_groups[group_name] = argument_group
124
- return argument_group
125
-
126
- def _get_argument_group(self, argument) -> ArgumentGroup:
127
- if argument.argument_group_name is None:
128
- if argument.is_required():
129
- argument_group = self._required_arguments
130
- else:
131
- argument_group = self._optional_arguments
132
- else:
133
- argument_group = self._get_custom_argument_group(argument.argument_group_name)
134
- return argument_group
135
-
136
- def _setup_cli_app_options(self):
137
- executable = self._action_parser.prog.split()[0]
138
- tool_required_arguments = self._action_parser.add_argument_group(
139
- Colors.UNDERLINE(f"Required arguments for {Colors.BOLD(executable)}"),
140
- )
141
- tool_optional_arguments = self._action_parser.add_argument_group(
142
- Colors.UNDERLINE(f"Optional arguments for {Colors.BOLD(executable)}"),
143
- )
144
- for argument in self._cli_app.CLASS_ARGUMENTS:
145
- argument_group = tool_required_arguments if argument.is_required() else tool_optional_arguments
146
- argument.register(argument_group)
147
-
148
- def build(self) -> argparse.ArgumentParser:
149
- self.set_default_cli_options(self._action_parser)
150
- for argument in self._cli_action.arguments:
151
- argument_group = self._get_argument_group(argument)
152
- argument.register(argument_group)
153
- self._setup_cli_app_options()
154
- return self._action_parser