codemagic-cli-tools 0.40.5__tar.gz → 0.42.0__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 (393) hide show
  1. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/PKG-INFO +1 -1
  2. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/pyproject.toml +1 -1
  3. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/__version__.py +1 -1
  4. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/__version__.py-e +1 -1
  5. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/cli/argument/typed_cli_argument.py +5 -6
  6. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/models/xcodebuild.py +4 -4
  7. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/tools/_app_store_connect/arguments.py +49 -19
  8. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/tools/_xcode_project/arguments.py +8 -2
  9. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/tools/android_keystore/argument_types.py +1 -2
  10. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/tools/app_store_connect.py +51 -11
  11. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/tools/firebase_app_distribution/argument_types.py +1 -2
  12. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/tools/xcode_project.py +10 -4
  13. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/LICENSE +0 -0
  14. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/README.md +0 -0
  15. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/__init__.py +0 -0
  16. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/apple/__init__.py +0 -0
  17. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/apple/app_store_connect/__init__.py +0 -0
  18. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/apple/app_store_connect/api_client.py +0 -0
  19. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/apple/app_store_connect/api_error.py +0 -0
  20. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/apple/app_store_connect/api_session.py +0 -0
  21. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/apple/app_store_connect/apps/__init__.py +0 -0
  22. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/apple/app_store_connect/apps/apps.py +0 -0
  23. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/apple/app_store_connect/builds/__init__.py +0 -0
  24. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/apple/app_store_connect/builds/builds.py +0 -0
  25. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/apple/app_store_connect/json_web_token_manager.py +0 -0
  26. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/apple/app_store_connect/provisioning/__init__.py +0 -0
  27. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/apple/app_store_connect/provisioning/bundle_id_capabilities.py +0 -0
  28. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/apple/app_store_connect/provisioning/bundle_ids.py +0 -0
  29. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/apple/app_store_connect/provisioning/devices.py +0 -0
  30. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/apple/app_store_connect/provisioning/profiles.py +0 -0
  31. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/apple/app_store_connect/provisioning/signing_certificates.py +0 -0
  32. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/apple/app_store_connect/resource_manager.py +0 -0
  33. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/apple/app_store_connect/testflight/__init__.py +0 -0
  34. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/apple/app_store_connect/testflight/beta_groups.py +0 -0
  35. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/apple/app_store_connect/type_declarations.py +0 -0
  36. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/apple/app_store_connect/versioning/__init__.py +0 -0
  37. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/apple/app_store_connect/versioning/app_store_version_localizations.py +0 -0
  38. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/apple/app_store_connect/versioning/app_store_version_submissions.py +0 -0
  39. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/apple/app_store_connect/versioning/app_store_versions.py +0 -0
  40. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/apple/app_store_connect/versioning/beta_app_review_submissions.py +0 -0
  41. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/apple/app_store_connect/versioning/beta_build_localizations.py +0 -0
  42. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/apple/app_store_connect/versioning/pre_release_versions.py +0 -0
  43. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/apple/app_store_connect/versioning/review_submission_items.py +0 -0
  44. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/apple/app_store_connect/versioning/review_submissions.py +0 -0
  45. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/apple/resources/__init__.py +0 -0
  46. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/apple/resources/app.py +0 -0
  47. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/apple/resources/app_store_version.py +0 -0
  48. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/apple/resources/app_store_version_localization.py +0 -0
  49. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/apple/resources/app_store_version_submission.py +0 -0
  50. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/apple/resources/beta_app_localization.py +0 -0
  51. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/apple/resources/beta_app_review_detail.py +0 -0
  52. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/apple/resources/beta_app_review_submission.py +0 -0
  53. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/apple/resources/beta_build_localization.py +0 -0
  54. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/apple/resources/beta_group.py +0 -0
  55. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/apple/resources/build.py +0 -0
  56. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/apple/resources/bundle_id.py +0 -0
  57. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/apple/resources/bundle_id_capability.py +0 -0
  58. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/apple/resources/device.py +0 -0
  59. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/apple/resources/enums.py +0 -0
  60. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/apple/resources/error_response.py +0 -0
  61. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/apple/resources/pre_release_version.py +0 -0
  62. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/apple/resources/profile.py +0 -0
  63. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/apple/resources/resource.py +0 -0
  64. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/apple/resources/review_submission.py +0 -0
  65. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/apple/resources/review_submission_item.py +0 -0
  66. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/apple/resources/signing_certificate.py +0 -0
  67. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/cli/__init__.py +0 -0
  68. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/cli/action_group.py +0 -0
  69. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/cli/argument/__init__.py +0 -0
  70. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/cli/argument/action_callable.py +0 -0
  71. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/cli/argument/argument.py +0 -0
  72. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/cli/argument/argument_formatter.py +0 -0
  73. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/cli/argument/argument_parser_builder.py +0 -0
  74. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/cli/argument/argument_properties.py +0 -0
  75. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/cli/argument/common_argument_types.py +0 -0
  76. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/cli/cli_app.py +0 -0
  77. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/cli/cli_help_formatter.py +0 -0
  78. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/cli/cli_process.py +0 -0
  79. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/cli/cli_process_stream.py +0 -0
  80. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/cli/cli_types.py +0 -0
  81. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/cli/colors.py +0 -0
  82. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/cli/environment.py +0 -0
  83. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/data/jars/bundletool-all-1.13.1.jar +0 -0
  84. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/google/__init__.py +0 -0
  85. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/google/errors.py +0 -0
  86. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/google/firebase_client.py +0 -0
  87. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/google/google_client.py +0 -0
  88. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/google/resource_managers/__init__.py +0 -0
  89. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/google/resource_managers/mixins/__init__.py +0 -0
  90. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/google/resource_managers/mixins/acting_manager_mixin.py +0 -0
  91. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/google/resource_managers/mixins/listing_manager_mixin.py +0 -0
  92. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/google/resource_managers/release_manager.py +0 -0
  93. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/google/resource_managers/resource_manager.py +0 -0
  94. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/google/resources/__init__.py +0 -0
  95. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/google/resources/identifiers/__init__.py +0 -0
  96. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/google/resources/identifiers/app_identifier.py +0 -0
  97. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/google/resources/identifiers/resource_identifier.py +0 -0
  98. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/google/resources/release.py +0 -0
  99. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/google/resources/release_notes.py +0 -0
  100. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/google/resources/resource.py +0 -0
  101. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/google_play/__init__.py +0 -0
  102. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/google_play/api_client.py +0 -0
  103. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/google_play/api_error.py +0 -0
  104. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/google_play/resources/__init__.py +0 -0
  105. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/google_play/resources/edit.py +0 -0
  106. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/google_play/resources/enums.py +0 -0
  107. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/google_play/resources/resource.py +0 -0
  108. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/google_play/resources/track.py +0 -0
  109. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/mixins/__init__.py +0 -0
  110. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/mixins/path_finder.py +0 -0
  111. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/mixins/running_cli_app.py +0 -0
  112. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/mixins/str_converter.py +0 -0
  113. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/models/__init__.py +0 -0
  114. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/models/altool/__init__.py +0 -0
  115. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/models/altool/altool.py +0 -0
  116. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/models/altool/altool_result.py +0 -0
  117. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/models/altool/enums.py +0 -0
  118. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/models/android_signing_info.py +0 -0
  119. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/models/application_package/__init__.py +0 -0
  120. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/models/application_package/abstract_package.py +0 -0
  121. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/models/application_package/ipa.py +0 -0
  122. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/models/application_package/macos_package.py +0 -0
  123. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/models/bundle_id_detector.py +0 -0
  124. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/models/certificate.py +0 -0
  125. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/models/certificate_attributes.py +0 -0
  126. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/models/certificate_p12_exporter.py +0 -0
  127. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/models/code_sign_entitlements.py +0 -0
  128. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/models/code_signing_settings_manager.py +0 -0
  129. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/models/enums.py +0 -0
  130. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/models/export_options.py +0 -0
  131. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/models/json_serializable.py +0 -0
  132. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/models/junit/__init__.py +0 -0
  133. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/models/junit/definitions.py +0 -0
  134. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/models/junit/printer.py +0 -0
  135. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/models/keystore.py +0 -0
  136. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/models/pbx_project.py +0 -0
  137. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/models/private_key.py +0 -0
  138. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/models/provisioning_profile.py +0 -0
  139. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/models/simulator/__init__.py +0 -0
  140. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/models/simulator/core_simulator_service.py +0 -0
  141. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/models/simulator/runtime.py +0 -0
  142. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/models/simulator/simulator.py +0 -0
  143. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/models/table/__init__.py +0 -0
  144. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/models/table/line.py +0 -0
  145. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/models/table/table.py +0 -0
  146. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/models/xcode.py +0 -0
  147. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/models/xcpretty.py +0 -0
  148. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/models/xctests/__init__.py +0 -0
  149. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/models/xctests/collector.py +0 -0
  150. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/models/xctests/converter.py +0 -0
  151. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/models/xctests/xcresult.py +0 -0
  152. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/models/xctests/xcresulttool.py +0 -0
  153. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/py.typed +0 -0
  154. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/scripts/code_signing_manager.rb +0 -0
  155. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/shell_tools/__init__.py +0 -0
  156. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/shell_tools/abstract_shell_tool.py +0 -0
  157. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/shell_tools/keytool.py +0 -0
  158. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/tools/__init__.py +0 -0
  159. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/tools/_app_store_connect/__init__.py +0 -0
  160. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/tools/_app_store_connect/abstract_base_action.py +0 -0
  161. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/tools/_app_store_connect/action_group.py +0 -0
  162. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/tools/_app_store_connect/action_groups/__init__.py +0 -0
  163. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/tools/_app_store_connect/action_groups/app_store_version_localizations_action_group.py +0 -0
  164. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/tools/_app_store_connect/action_groups/app_store_version_submissions_action_group.py +0 -0
  165. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/tools/_app_store_connect/action_groups/app_store_versions_action_group.py +0 -0
  166. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/tools/_app_store_connect/action_groups/apps_action_group.py +0 -0
  167. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/tools/_app_store_connect/action_groups/beta_app_review_submissions_action_group.py +0 -0
  168. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/tools/_app_store_connect/action_groups/beta_build_localizations_action_group.py +0 -0
  169. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/tools/_app_store_connect/action_groups/beta_groups_action_group.py +0 -0
  170. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/tools/_app_store_connect/action_groups/builds_action_group.py +0 -0
  171. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/tools/_app_store_connect/action_groups/review_submission_items_actions_group.py +0 -0
  172. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/tools/_app_store_connect/action_groups/review_submissions_actions_group.py +0 -0
  173. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/tools/_app_store_connect/actions/__init__.py +0 -0
  174. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/tools/_app_store_connect/actions/publish_action.py +0 -0
  175. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/tools/_app_store_connect/errors.py +0 -0
  176. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/tools/_app_store_connect/resource_manager_mixin.py +0 -0
  177. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/tools/_app_store_connect/resource_printer.py +0 -0
  178. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/tools/_xcode_project/__init__.py +0 -0
  179. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/tools/android_app_bundle.py +0 -0
  180. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/tools/android_keystore/__init__.py +0 -0
  181. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/tools/android_keystore/__main__.py +0 -0
  182. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/tools/android_keystore/android_keystore.py +0 -0
  183. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/tools/android_keystore/arguments.py +0 -0
  184. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/tools/codemagic_cli_tools.py +0 -0
  185. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/tools/firebase_app_distribution/__init__.py +0 -0
  186. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/tools/firebase_app_distribution/__main__.py +0 -0
  187. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/tools/firebase_app_distribution/action_groups/__init__.py +0 -0
  188. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/tools/firebase_app_distribution/action_groups/firebase_action_groups.py +0 -0
  189. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/tools/firebase_app_distribution/action_groups/releases_action_group.py +0 -0
  190. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/tools/firebase_app_distribution/actions/__init__.py +0 -0
  191. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/tools/firebase_app_distribution/actions/get_latest_build_version_action.py +0 -0
  192. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/tools/firebase_app_distribution/arguments.py +0 -0
  193. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/tools/firebase_app_distribution/errors.py +0 -0
  194. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/tools/firebase_app_distribution/firebase_app_distribution.py +0 -0
  195. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/tools/firebase_app_distribution/firebase_app_distribution_action.py +0 -0
  196. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/tools/firebase_app_distribution/resource_printer.py +0 -0
  197. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/tools/git_changelog.py +0 -0
  198. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/tools/google_play/__init__.py +0 -0
  199. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/tools/google_play/__main__.py +0 -0
  200. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/tools/google_play/action_groups/__init__.py +0 -0
  201. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/tools/google_play/action_groups/google_play_action_groups.py +0 -0
  202. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/tools/google_play/action_groups/tracks_action_group.py +0 -0
  203. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/tools/google_play/actions/__init__.py +0 -0
  204. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/tools/google_play/actions/get_latest_build_number_action.py +0 -0
  205. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/tools/google_play/argument_types.py +0 -0
  206. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/tools/google_play/arguments.py +0 -0
  207. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/tools/google_play/errors.py +0 -0
  208. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/tools/google_play/google_play.py +0 -0
  209. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/tools/google_play/google_play_base_action.py +0 -0
  210. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/tools/keychain.py +0 -0
  211. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/tools/universal_apk_generator.py +0 -0
  212. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/utilities/__init__.py +0 -0
  213. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/utilities/auditing/__init__.py +0 -0
  214. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/utilities/auditing/base_auditor.py +0 -0
  215. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/utilities/auditing/exception_auditor.py +0 -0
  216. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/utilities/auditing/http_request_auditor.py +0 -0
  217. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/utilities/backwards_file_reader.py +0 -0
  218. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/utilities/decorators.py +0 -0
  219. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/utilities/levenshtein_distance.py +0 -0
  220. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/utilities/log.py +0 -0
  221. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/src/codemagic/utilities/versions.py +0 -0
  222. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/__init__.py +0 -0
  223. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/apple/__init__.py +0 -0
  224. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/apple/app_store_connect/__init__.py +0 -0
  225. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/apple/app_store_connect/apps/__init__.py +0 -0
  226. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/apple/app_store_connect/apps/test_apps.py +0 -0
  227. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/apple/app_store_connect/builds/__init__.py +0 -0
  228. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/apple/app_store_connect/builds/test_builds.py +0 -0
  229. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/apple/app_store_connect/provisioning/__init__.py +0 -0
  230. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/apple/app_store_connect/provisioning/conftest.py +0 -0
  231. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/apple/app_store_connect/provisioning/test_bundle_id_capabilities.py +0 -0
  232. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/apple/app_store_connect/provisioning/test_bundle_ids.py +0 -0
  233. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/apple/app_store_connect/provisioning/test_devices.py +0 -0
  234. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/apple/app_store_connect/provisioning/test_profiles.py +0 -0
  235. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/apple/app_store_connect/provisioning/test_signing_certificates.py +0 -0
  236. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/apple/app_store_connect/resource_manager_test_base.py +0 -0
  237. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/apple/app_store_connect/test_api_client.py +0 -0
  238. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/apple/app_store_connect/test_api_session.py +0 -0
  239. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/apple/app_store_connect/test_json_web_token_manager.py +0 -0
  240. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/apple/app_store_connect/test_resource_manager.py +0 -0
  241. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/apple/app_store_connect/testflight/__init__.py +0 -0
  242. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/apple/app_store_connect/testflight/test_beta_groups.py +0 -0
  243. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/apple/app_store_connect/versioning/test_app_store_version_localizations.py +0 -0
  244. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/apple/app_store_connect/versioning/test_app_store_version_submissions.py +0 -0
  245. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/apple/app_store_connect/versioning/test_app_store_versions.py +0 -0
  246. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/apple/app_store_connect/versioning/test_beta_app_review_submissions.py +0 -0
  247. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/apple/app_store_connect/versioning/test_beta_build_localizations.py +0 -0
  248. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/apple/app_store_connect/versioning/test_pre_release_versions.py +0 -0
  249. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/apple/app_store_connect/versioning/test_review_submission_items.py +0 -0
  250. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/apple/app_store_connect/versioning/test_review_submissions.py +0 -0
  251. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/apple/resources/__init__.py +0 -0
  252. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/apple/resources/conftest.py +0 -0
  253. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/apple/resources/enums/__init__.py +0 -0
  254. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/apple/resources/enums/test_profile_type.py +0 -0
  255. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/apple/resources/mocks/app_store_version.json +0 -0
  256. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/apple/resources/mocks/build.json +0 -0
  257. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/apple/resources/mocks/bundle_id.json +0 -0
  258. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/apple/resources/mocks/bundle_id_capability.json +0 -0
  259. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/apple/resources/mocks/certificate.json +0 -0
  260. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/apple/resources/mocks/device.json +0 -0
  261. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/apple/resources/mocks/error_response.json +0 -0
  262. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/apple/resources/mocks/error_response_with_links.json +0 -0
  263. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/apple/resources/mocks/mock_resource.json +0 -0
  264. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/apple/resources/mocks/pre_release_version.json +0 -0
  265. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/apple/resources/mocks/profile.json +0 -0
  266. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/apple/resources/test_app_store_version_resource.py +0 -0
  267. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/apple/resources/test_build_resource.py +0 -0
  268. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/apple/resources/test_bundle_id_capability_resource.py +0 -0
  269. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/apple/resources/test_bundle_id_resource.py +0 -0
  270. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/apple/resources/test_device_resource.py +0 -0
  271. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/apple/resources/test_error_response.py +0 -0
  272. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/apple/resources/test_pre_release_version_resource.py +0 -0
  273. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/apple/resources/test_profile_resource.py +0 -0
  274. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/apple/resources/test_resource.py +0 -0
  275. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/apple/resources/test_signing_certificate_resource.py +0 -0
  276. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/apple/resources/test_undefined_resource_fields.py +0 -0
  277. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/cli/__init__.py +0 -0
  278. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/cli/argument/__init__.py +0 -0
  279. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/cli/argument/common_argument_types/__init__.py +0 -0
  280. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/cli/argument/common_argument_types/test_iso_8601_datetime.py +0 -0
  281. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/cli/argument/common_argument_types/test_maybe_dir.py +0 -0
  282. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/cli/argument/test_argument.py +0 -0
  283. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/cli/mocks/utf-8-sample.txt +0 -0
  284. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/cli/test_cli_process.py +0 -0
  285. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/cli/test_decorators.py +0 -0
  286. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/conftest.py +0 -0
  287. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/google/__init__.py +0 -0
  288. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/google/conftest.py +0 -0
  289. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/google/test_firebase_client.py +0 -0
  290. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/google/test_live_firebase_client.py +0 -0
  291. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/google_play/__init__.py +0 -0
  292. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/google_play/resources/__init__.py +0 -0
  293. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/google_play/resources/conftest.py +0 -0
  294. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/google_play/resources/mocks/edit.json +0 -0
  295. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/google_play/resources/mocks/track.json +0 -0
  296. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/google_play/resources/test_edit_resource.py +0 -0
  297. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/google_play/resources/test_resource_print.py +0 -0
  298. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/google_play/resources/test_track_resource.py +0 -0
  299. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/google_play/test_api_client.py +0 -0
  300. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/mixins/__init__.py +0 -0
  301. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/mixins/test_string_converter.py +0 -0
  302. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/mocks/certificate.asn1 +0 -0
  303. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/mocks/encrypted.pem +0 -0
  304. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/mocks/encrypted.pem.pub +0 -0
  305. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/mocks/unencrypted.pem +0 -0
  306. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/mocks/unencrypted.pem.pub +0 -0
  307. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/models/__init__.py +0 -0
  308. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/models/altool/__init__.py +0 -0
  309. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/models/altool/mocks/mock_failure_auth.txt +0 -0
  310. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/models/altool/mocks/mock_failure_other.txt +0 -0
  311. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/models/altool/mocks/mock_upload_success.json +0 -0
  312. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/models/altool/mocks/mock_validation_failure.json +0 -0
  313. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/models/altool/test_altool_result.py +0 -0
  314. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/models/altool/test_altool_retrying.py +0 -0
  315. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/models/conftest.py +0 -0
  316. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/models/enums/__init__.py +0 -0
  317. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/models/enums/test_resource_enum.py +0 -0
  318. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/models/junit/__init__.py +0 -0
  319. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/models/junit/mocks/testsuite.xml +0 -0
  320. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/models/junit/test_xml_generation.py +0 -0
  321. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/models/mocks/certificate-no-password.p12 +0 -0
  322. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/models/mocks/certificate.p12 +0 -0
  323. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/models/mocks/codemagic_io_wildcard_development.mobileprovision +0 -0
  324. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/models/mocks/export_options.plist +0 -0
  325. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/models/mocks/mock.ipa +0 -0
  326. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/models/mocks/mock.xcarchive/Products/Applications/Capybara App.app/Capybara App +0 -0
  327. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/models/mocks/mock_0_icloud_container_environments.plist +0 -0
  328. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/models/mocks/mock_1_icloud_container_environments.plist +0 -0
  329. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/models/mocks/mock_2_icloud_container_environments.plist +0 -0
  330. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/models/mocks/mock_openssh_private_key +0 -0
  331. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/models/mocks/mock_rsa_private_key +0 -0
  332. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/models/mocks/mock_xcode/Contents/version.plist +0 -0
  333. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/models/simulator/__init__.py +0 -0
  334. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/models/simulator/mocks/devices.json +0 -0
  335. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/models/simulator/mocks/simulator.json +0 -0
  336. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/models/simulator/test_runtime.py +0 -0
  337. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/models/simulator/test_simulator.py +0 -0
  338. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/models/test_certificate.py +0 -0
  339. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/models/test_certificate_attributes.py +0 -0
  340. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/models/test_code_sign_entitlements.py +0 -0
  341. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/models/test_export_options.py +0 -0
  342. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/models/test_private_key.py +0 -0
  343. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/models/test_provisioning_profile.py +0 -0
  344. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/models/test_table.py +0 -0
  345. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/models/test_xcode.py +0 -0
  346. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/models/xctests/__init__.py +0 -0
  347. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/models/xctests/conftest.py +0 -0
  348. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/models/xctests/mocks/0_1NtPgUPcB1A83X977l5Q91ElstUeVDnqAhumk_VJG8DIS4GA1sb8ElPPHZZGYEHmNvnHU1VVaPDCw1tI8n3uXg__.json +0 -0
  349. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/models/xctests/mocks/0_5rAUs3HknUI7DU8Jyc5RlFcosqCXTOV-qwOaOE1Mul_ppK8QCta-NSxxCdtVg6i12km4zTR5l0SjgzfHGUNxog__.json +0 -0
  350. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/models/xctests/mocks/0_97T9qQZ3dEI1oDS6NvYTPcFk_jUXFJ0NRwyd5FZ2S585JGMtlqbF28Hc85yeifgKEnNoInoW93Za9c5QJCspeQ__.json +0 -0
  351. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/models/xctests/mocks/0_DVcJZnHFaQQlzl8czovv7RuDRQIToEr5_3lLe-Mn1Sm6VreJ5xoXEFqBaWNv0XRmSg00NJ77XzQKgddhfkuk7w__.json +0 -0
  352. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/models/xctests/mocks/0_FZMbIp5VAUEiJv1wUUM-K78Dtmb4o-titbTusDJqRuarbS9OatzAykygXo4NUqEoR9sxCIoeu8VDioQmbba6mw__.json +0 -0
  353. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/models/xctests/mocks/0_Hj6SOUxY1APmxdQEA2HdqbA52GD3WJE571nqr_Z-w8vi_buxP-GUjNxCsGYQvnKnnwlyykwxY-KJmjqKYmPyXQ__.json +0 -0
  354. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/models/xctests/mocks/0_NnCmQ8rMqVyUBgL3ZDjfjJ9Vt1AMGeMzZPkDH30rGMYer0pFDpp4UDZlCEHRImO-48LdC_KdcbjP70IZA6zKUQ__.json +0 -0
  355. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/models/xctests/mocks/0_YK9aPHVT-grv_ZVooRT79GBO9n82BNogkuWVzFO6itJEtbtsRTQpK2-0ZDLot1JpCfPb26aZwEZjeb9G4GHiBQ__.json +0 -0
  356. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/models/xctests/mocks/0__H1_RrdBT9b-ZhkWCQiRKpHlwURmyWUudeOhj5UslLXhXl8mr9w5CGqdobi9A5wCVEIRMsO4yuFyzx2gMPr-_Q__.json +0 -0
  357. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/models/xctests/mocks/0_evvkuGf92MVrmIvhr07911LuRTiPBKDjIQ0q_7L-mPGGYkWVKMBPQ5pB5lbjoaOnvr0fpC9k003EunfwSdss2g__.json +0 -0
  358. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/models/xctests/mocks/actions_invocation_record.json +0 -0
  359. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/models/xctests/test_collector.py +0 -0
  360. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/models/xctests/test_converter.py +0 -0
  361. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/models/xctests/test_xcresult.py +0 -0
  362. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/shell_tools/__init__.py +0 -0
  363. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/shell_tools/keytool/__init__.py +0 -0
  364. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/shell_tools/keytool/conftest.py +0 -0
  365. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/shell_tools/keytool/mocks/android.ks +0 -0
  366. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/shell_tools/keytool/mocks/non-rfc-cert-keystore.jks +0 -0
  367. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/shell_tools/keytool/mocks/non-rfc-cert-keystore.p12 +0 -0
  368. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/shell_tools/keytool/mocks/rfc-cert-keystore.jks +0 -0
  369. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/shell_tools/keytool/mocks/rfc-cert-keystore.p12 +0 -0
  370. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/shell_tools/keytool/test_get_certificate.py +0 -0
  371. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/shell_tools/keytool/test_get_certificates.py +0 -0
  372. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/shell_tools/keytool/test_validate.py +0 -0
  373. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/tools/__init__.py +0 -0
  374. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/tools/app_store_connect/__init__.py +0 -0
  375. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/tools/app_store_connect/arguments/__init__.py +0 -0
  376. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/tools/app_store_connect/arguments/test_beta_build_localizations.py +0 -0
  377. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/tools/app_store_connect/conftest.py +0 -0
  378. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/tools/app_store_connect/mocks/AuthKeyMock.p8 +0 -0
  379. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/tools/app_store_connect/test_from_cli_args.py +0 -0
  380. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/tools/app_store_connect/test_publish_action.py +0 -0
  381. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/tools/mocks/firebase_releases.json +0 -0
  382. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/tools/mocks/google_play_tracks.json +0 -0
  383. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/tools/test_android_app_bundle.py +0 -0
  384. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/tools/test_firebase_app_distribution.py +0 -0
  385. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/tools/test_google_play.py +0 -0
  386. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/tools/test_keychain.py +0 -0
  387. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/tools/test_universal_apk_generator.py +0 -0
  388. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/utilities/__init__.py +0 -0
  389. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/utilities/decorators/__init__.py +0 -0
  390. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/utilities/decorators/test_deprecated.py +0 -0
  391. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/utilities/test_backwards_file_reader.py +0 -0
  392. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/tests/utilities/test_levenshtein_distance.py +0 -0
  393. {codemagic_cli_tools-0.40.5 → codemagic_cli_tools-0.42.0}/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.40.5
3
+ Version: 0.42.0
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.40.5"
3
+ version = "0.42.0"
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.40.5'
3
+ __version__ = '0.42.0'
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.40.5.dev"
3
+ __version__ = "0.42.0.dev"
4
4
  __url__ = "https://github.com/codemagic-ci-cd/cli-tools"
5
5
  __licence__ = "GNU General Public License v3.0"
@@ -85,8 +85,8 @@ class TypedCliArgument(Generic[T], metaclass=TypedCliArgumentMeta):
85
85
 
86
86
  def __init__(self, raw_value: str, from_environment=False):
87
87
  self._raw_value = raw_value
88
- self.value: T = self._parse_value()
89
88
  self._from_environment = from_environment
89
+ self.value: T = self._parse_value()
90
90
 
91
91
  @classmethod
92
92
  def resolve_value(cls, argument_instance: Optional[Union[T, TypedCliArgument]]) -> T:
@@ -119,10 +119,9 @@ class TypedCliArgument(Generic[T], metaclass=TypedCliArgumentMeta):
119
119
  def _is_valid(cls, value: T) -> bool:
120
120
  return bool(value)
121
121
 
122
- @classmethod
123
- def _apply_type(cls, non_typed_value: str) -> T:
124
- value = cls.argument_type(non_typed_value)
125
- if not cls._is_valid(value):
122
+ def _apply_type(self, non_typed_value: str) -> T:
123
+ value = self.argument_type(non_typed_value) # type: ignore
124
+ if not self._is_valid(value):
126
125
  raise argparse.ArgumentTypeError(f'Provided value "{non_typed_value}" is not valid')
127
126
  return value
128
127
 
@@ -239,4 +238,4 @@ class EnvironmentArgumentValue(TypedCliArgument[T], metaclass=TypedCliArgumentMe
239
238
  return self._raw_value
240
239
 
241
240
  def __repr__(self):
242
- return self._raw_value
241
+ return f"{self.__class__.__name__}({self._raw_value!r})"
@@ -176,7 +176,7 @@ class Xcodebuild(RunningCliAppMixin):
176
176
 
177
177
  def _construct_test_command(
178
178
  self,
179
- sdk: str,
179
+ sdk: Optional[str],
180
180
  simulators: List[Simulator],
181
181
  only_testing: Optional[str],
182
182
  enable_code_coverage: bool,
@@ -188,6 +188,7 @@ class Xcodebuild(RunningCliAppMixin):
188
188
  max_devices_flag = "-maximum-concurrent-test-device-destinations"
189
189
  max_sims_flag = "-maximum-concurrent-test-simulator-destinations"
190
190
 
191
+ sdk_args = ["-sdk", sdk] if sdk else []
191
192
  destinations_args = [["-destination", f"id={s.udid}"] for s in simulators]
192
193
  only_testing_args = ["-only-testing", only_testing] if only_testing else []
193
194
  max_devices_args = [max_devices_flag, str(max_devices)] if max_devices else []
@@ -197,8 +198,7 @@ class Xcodebuild(RunningCliAppMixin):
197
198
  return [
198
199
  *self._construct_base_command(custom_flags),
199
200
  *only_testing_args,
200
- "-sdk",
201
- sdk,
201
+ *sdk_args,
202
202
  *coverage_args,
203
203
  *reduce(add, destinations_args, []),
204
204
  *max_devices_args,
@@ -280,7 +280,7 @@ class Xcodebuild(RunningCliAppMixin):
280
280
 
281
281
  def test(
282
282
  self,
283
- sdk: str,
283
+ sdk: Optional[str],
284
284
  simulators: List[Simulator],
285
285
  *,
286
286
  enable_code_coverage: bool = False,
@@ -2,6 +2,7 @@ import argparse
2
2
  import json
3
3
  import pathlib
4
4
  import re
5
+ import shlex
5
6
  from argparse import ArgumentTypeError
6
7
  from collections import Counter
7
8
  from dataclasses import dataclass
@@ -80,9 +81,8 @@ class Types:
80
81
  )
81
82
  environment_variable_key = "APP_STORE_CONNECT_PRIVATE_KEY"
82
83
 
83
- @classmethod
84
- def _apply_type(cls, non_typed_value: str) -> str:
85
- pem_private_key = cls.argument_type(non_typed_value)
84
+ def _apply_type(self, non_typed_value: str) -> str:
85
+ pem_private_key = self.argument_type(non_typed_value)
86
86
  try:
87
87
  _ = load_pem_private_key(pem_private_key.encode(), None)
88
88
  except ValueError as ve:
@@ -190,10 +190,9 @@ class Types:
190
190
  ),
191
191
  )
192
192
 
193
- @classmethod
194
- def _apply_type(cls, non_typed_value: str) -> datetime:
193
+ def _apply_type(self, non_typed_value: str) -> datetime:
195
194
  value = cli.CommonArgumentTypes.iso_8601_datetime(non_typed_value)
196
- cls.validate(value)
195
+ self.validate(value)
197
196
  return value
198
197
 
199
198
  class AppStoreVersionInfoArgument(cli.EnvironmentArgumentValue[AppStoreVersionInfo]):
@@ -209,8 +208,7 @@ class Types:
209
208
  },
210
209
  )
211
210
 
212
- @classmethod
213
- def _apply_type(cls, non_typed_value: str) -> AppStoreVersionInfo:
211
+ def _apply_type(self, non_typed_value: str) -> AppStoreVersionInfo:
214
212
  try:
215
213
  given_app_store_version_info = json.loads(non_typed_value)
216
214
  assert isinstance(given_app_store_version_info, dict)
@@ -272,8 +270,7 @@ class Types:
272
270
  ],
273
271
  )
274
272
 
275
- @classmethod
276
- def _apply_type(cls, non_typed_value: str) -> List[AppStoreVersionLocalizationInfo]:
273
+ def _apply_type(self, non_typed_value: str) -> List[AppStoreVersionLocalizationInfo]:
277
274
  try:
278
275
  given_localization_infos = json.loads(non_typed_value)
279
276
  assert isinstance(given_localization_infos, list)
@@ -323,8 +320,7 @@ class Types:
323
320
  environment_variable_key = "APP_STORE_CONNECT_BETA_BUILD_LOCALIZATIONS"
324
321
  example_value = json.dumps([{"locale": "en-US", "whats_new": "What's new in English"}])
325
322
 
326
- @classmethod
327
- def _apply_type(cls, non_typed_value: str) -> List[BetaBuildInfo]:
323
+ def _apply_type(self, non_typed_value: str) -> List[BetaBuildInfo]:
328
324
  try:
329
325
  given_beta_build_localizations = json.loads(non_typed_value)
330
326
  assert isinstance(given_beta_build_localizations, list)
@@ -357,6 +353,21 @@ class Types:
357
353
 
358
354
  return beta_build_infos
359
355
 
356
+ class DeviceUdidsArgument(cli.EnvironmentArgumentValue[List[str]]):
357
+ argument_type = List[str]
358
+ environment_variable_key = "APP_STORE_CONNECT_DEVICE_UDIDS"
359
+ example_value = "00000000-000000000000001E"
360
+
361
+ def _apply_type(self, non_typed_value: str) -> List[str]:
362
+ is_from_cli = not (self._is_from_environment() or self._is_from_file() or self._from_environment)
363
+ if is_from_cli:
364
+ udids = [non_typed_value.strip()]
365
+ else:
366
+ udids = [udid.strip() for udid in shlex.split(non_typed_value) if udid.strip()]
367
+ if udids and all(udids):
368
+ return udids
369
+ raise argparse.ArgumentTypeError(f'Provided value "{non_typed_value}" is not valid')
370
+
360
371
 
361
372
  _API_DOCS_REFERENCE = f"Learn more at {AppStoreConnectApiClient.API_KEYS_DOCS_URL}."
362
373
  _LOCALE_CODES_URL = (
@@ -1212,19 +1223,24 @@ class DeviceArgument(cli.Argument):
1212
1223
  )
1213
1224
  DEVICE_NAME = cli.ArgumentProperties(
1214
1225
  key="device_name",
1215
- flags=("--name",),
1216
- description="Name of the Device",
1226
+ flags=("--name", "-n"),
1227
+ description="Common name of Devices",
1217
1228
  argparse_kwargs={"required": True},
1218
1229
  )
1219
1230
  DEVICE_NAME_OPTIONAL = cli.ArgumentProperties.duplicate(
1220
1231
  DEVICE_NAME,
1221
1232
  argparse_kwargs={"required": False},
1222
1233
  )
1223
- DEVICE_UDID = cli.ArgumentProperties(
1224
- key="device_udid",
1225
- flags=("--udid",),
1226
- description="Device ID (UDID)",
1227
- argparse_kwargs={"required": True},
1234
+ DEVICE_UDIDS = cli.ArgumentProperties(
1235
+ key="device_udids",
1236
+ flags=("--udid", "-u"),
1237
+ type=Types.DeviceUdidsArgument,
1238
+ description=f"Device ID (UDID), for example: {Types.DeviceUdidsArgument.example_value}",
1239
+ argparse_kwargs={
1240
+ "required": False,
1241
+ "nargs": "+",
1242
+ "metavar": "UDID",
1243
+ },
1228
1244
  )
1229
1245
  DEVICE_STATUS = cli.ArgumentProperties(
1230
1246
  key="device_status",
@@ -1236,6 +1252,20 @@ class DeviceArgument(cli.Argument):
1236
1252
  "choices": list(DeviceStatus),
1237
1253
  },
1238
1254
  )
1255
+ IGNORE_REGISTRATION_ERRORS = cli.ArgumentProperties(
1256
+ key="ignore_registration_errors",
1257
+ flags=("--ignore-registration-errors",),
1258
+ type=bool,
1259
+ description=(
1260
+ "Ignore device registration failures, e.g. invalid UDID or duplicate UDID submission. "
1261
+ "Proceed registering remaining UDIDs when the flag is set."
1262
+ ),
1263
+ argparse_kwargs={
1264
+ "required": False,
1265
+ "action": "store_true",
1266
+ "default": False,
1267
+ },
1268
+ )
1239
1269
 
1240
1270
 
1241
1271
  class CertificateArgument(cli.Argument):
@@ -33,8 +33,7 @@ class CustomExportOptions(cli.EnvironmentArgumentValue[dict]):
33
33
  },
34
34
  )
35
35
 
36
- @classmethod
37
- def _apply_type(cls, non_typed_value: str) -> Dict:
36
+ def _apply_type(self, non_typed_value: str) -> Dict:
38
37
  try:
39
38
  given_custom_export_options = json.loads(non_typed_value)
40
39
  if not isinstance(given_custom_export_options, dict):
@@ -320,6 +319,13 @@ class TestArgument(cli.Argument):
320
319
  description="Name of the SDK that should be used for building the application for testing.",
321
320
  argparse_kwargs={"required": False, "default": "iphonesimulator"},
322
321
  )
322
+ OMIT_TEST_SDK = cli.ArgumentProperties(
323
+ key="omit_test_sdk",
324
+ flags=("--omit-sdk",),
325
+ type=bool,
326
+ description="Do not pass -sdk argument to `xcodebuild test` command",
327
+ argparse_kwargs={"required": False, "action": "store_true"},
328
+ )
323
329
 
324
330
 
325
331
  class TestResultArgument(cli.Argument):
@@ -4,8 +4,7 @@ from codemagic import cli
4
4
 
5
5
 
6
6
  class Password(cli.EnvironmentArgumentValue[str]):
7
- @classmethod
8
- def _apply_type(cls, non_typed_value: str) -> str:
7
+ def _apply_type(self, non_typed_value: str) -> str:
9
8
  value = super()._apply_type(non_typed_value)
10
9
  if len(value) < 6:
11
10
  raise argparse.ArgumentTypeError("Minimum required password length is 6 characters")
@@ -492,25 +492,65 @@ class AppStoreConnect(
492
492
  "register-device",
493
493
  BundleIdArgument.PLATFORM,
494
494
  DeviceArgument.DEVICE_NAME,
495
- DeviceArgument.DEVICE_UDID,
495
+ DeviceArgument.DEVICE_UDIDS,
496
+ DeviceArgument.IGNORE_REGISTRATION_ERRORS,
496
497
  )
497
498
  def register_device(
498
499
  self,
499
500
  platform: BundleIdPlatform,
500
501
  device_name: str,
501
- device_udid: str,
502
+ device_udid: Optional[str] = None, # Deprecated in https://github.com/codemagic-ci-cd/cli-tools/pull/331
503
+ device_udids: Optional[
504
+ Union[
505
+ str,
506
+ Types.DeviceUdidsArgument,
507
+ Sequence[Union[str, Types.DeviceUdidsArgument]],
508
+ ]
509
+ ] = None,
510
+ ignore_registration_errors: bool = DeviceArgument.IGNORE_REGISTRATION_ERRORS.get_default(),
502
511
  should_print: bool = True,
503
- ) -> Device:
512
+ ) -> List[Device]:
504
513
  """
505
- Register a new device for app development
514
+ Register new Devices for app development
506
515
  """
507
- return self._create_resource(
508
- self.api_client.devices,
509
- should_print,
510
- udid=device_udid,
511
- name=device_name,
512
- platform=platform,
513
- )
516
+ if not device_udids and not device_udid:
517
+ DeviceArgument.DEVICE_UDIDS.raise_argument_error("At least one device UDID is required")
518
+
519
+ if device_udids is None:
520
+ device_udids = []
521
+ if isinstance(device_udids, str) or isinstance(device_udids, Types.DeviceUdidsArgument):
522
+ device_udids = [device_udids]
523
+
524
+ if device_udid:
525
+ device_udids = [device_udid, *device_udids]
526
+
527
+ device_udids_values: List[str] = []
528
+ for device_udids in device_udids:
529
+ if isinstance(device_udids, Types.DeviceUdidsArgument):
530
+ device_udids_values.extend(device_udids.value)
531
+ else:
532
+ device_udids_values.append(device_udids)
533
+
534
+ registered_devices = []
535
+ for device_udid in device_udids_values:
536
+ try:
537
+ device = self._create_resource(
538
+ self.api_client.devices,
539
+ should_print,
540
+ udid=device_udid,
541
+ name=device_name,
542
+ platform=platform,
543
+ )
544
+ except AppStoreConnectError as error:
545
+ if not ignore_registration_errors:
546
+ raise error
547
+ self.logger.error(Colors.YELLOW(f"Failed to register a device: {error.args[0]}"))
548
+ else:
549
+ registered_devices.append(device)
550
+
551
+ self.echo("") if should_print else None
552
+
553
+ return registered_devices
514
554
 
515
555
  @cli.action(
516
556
  "create-bundle-id",
@@ -9,8 +9,7 @@ class CredentialsArgument(cli.EnvironmentArgumentValue[dict]):
9
9
  argument_type = dict
10
10
  environment_variable_key = "FIREBASE_SERVICE_ACCOUNT_CREDENTIALS"
11
11
 
12
- @classmethod
13
- def _apply_type(cls, non_typed_value: str) -> Dict[str, str]:
12
+ def _apply_type(self, non_typed_value: str) -> Dict[str, str]:
14
13
  try:
15
14
  value = json.loads(non_typed_value)
16
15
  except json.decoder.JSONDecodeError as e:
@@ -431,6 +431,7 @@ class XcodeProject(cli.CliApp, PathFinderMixin):
431
431
  TestArgument.TEST_DEVICES,
432
432
  TestArgument.TEST_ONLY,
433
433
  TestArgument.TEST_SDK,
434
+ TestArgument.OMIT_TEST_SDK,
434
435
  TestResultArgument.OUTPUT_DIRECTORY,
435
436
  TestResultArgument.OUTPUT_EXTENSION,
436
437
  XcodeArgument.TEST_FLAGS,
@@ -459,6 +460,7 @@ class XcodeProject(cli.CliApp, PathFinderMixin):
459
460
  output_dir: pathlib.Path = TestResultArgument.OUTPUT_DIRECTORY.get_default(),
460
461
  output_extension: str = TestResultArgument.OUTPUT_EXTENSION.get_default(),
461
462
  graceful_exit: bool = False,
463
+ omit_test_sdk: bool = False,
462
464
  ):
463
465
  """
464
466
  Run unit or UI tests for given Xcode project or workspace
@@ -473,7 +475,7 @@ class XcodeProject(cli.CliApp, PathFinderMixin):
473
475
  xcresult_collector.ignore_results(Xcode.DERIVED_DATA_PATH)
474
476
  try:
475
477
  xcodebuild.test(
476
- test_sdk,
478
+ None if omit_test_sdk else test_sdk,
477
479
  simulators,
478
480
  enable_code_coverage=not disable_code_coverage,
479
481
  only_testing=test_only,
@@ -669,14 +671,18 @@ class XcodeProject(cli.CliApp, PathFinderMixin):
669
671
  f'File "{export_options_plist}" is not a valid property list',
670
672
  )
671
673
 
672
- def _get_test_destinations(self, test_sdk: str, requested_devices: Optional[List[str]]) -> List[Simulator]:
674
+ def _get_test_destinations(
675
+ self,
676
+ test_sdk: str | None,
677
+ requested_devices: Optional[List[str]],
678
+ ) -> List[Simulator]:
673
679
  if requested_devices:
674
680
  try:
675
681
  simulators = Simulator.find_simulators(requested_devices)
676
682
  except ValueError as ve:
677
683
  raise TestArgument.TEST_DEVICES.raise_argument_error(str(ve)) from ve
678
- elif "macos" in test_sdk.lower():
679
- # macOS tests are run on the host machine and no test destinations are required
684
+ elif test_sdk and "macos" in test_sdk.lower():
685
+ # macOS tests run on the host machine and no test destinations are required
680
686
  simulators = []
681
687
  else:
682
688
  simulators = [self.get_default_test_destination(should_print=False)]