sentry-cli 3.4.1__tar.gz → 3.4.3__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.

Potentially problematic release.


This version of sentry-cli might be problematic. Click here for more details.

Files changed (181) hide show
  1. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/Cargo.lock +22 -22
  2. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/Cargo.toml +3 -2
  3. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/PKG-INFO +1 -1
  4. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/sentry_cli.egg-info/PKG-INFO +1 -1
  5. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/sentry_cli.egg-info/SOURCES.txt +1 -0
  6. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/api/mod.rs +7 -13
  7. sentry_cli-3.4.3/src/api/updating.rs +80 -0
  8. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/bashsupport.sh +3 -3
  9. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/bash_hook.rs +44 -26
  10. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/build/snapshots.rs +69 -39
  11. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/react_native/xcode.rs +7 -2
  12. sentry_cli-3.4.3/src/commands/releases/propose_version.rs +19 -0
  13. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/send_event.rs +9 -2
  14. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/config.rs +50 -10
  15. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/args.rs +10 -0
  16. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/file_upload.rs +6 -14
  17. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/releases.rs +10 -6
  18. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/update.rs +29 -4
  19. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/xcode.rs +21 -8
  20. sentry_cli-3.4.1/src/commands/releases/propose_version.rs +0 -13
  21. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/LICENSE +0 -0
  22. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/MANIFEST.in +0 -0
  23. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/README.md +0 -0
  24. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/apple-catalog-parsing/AGENTS.md +0 -0
  25. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/apple-catalog-parsing/CLAUDE.md +0 -0
  26. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/apple-catalog-parsing/Cargo.toml +0 -0
  27. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/apple-catalog-parsing/build.rs +0 -0
  28. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/apple-catalog-parsing/native/swift/AssetCatalogParser/Package.swift +0 -0
  29. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/apple-catalog-parsing/native/swift/AssetCatalogParser/Sources/AssetCatalogParser/AssetCatalogReader.swift +0 -0
  30. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/apple-catalog-parsing/native/swift/AssetCatalogParser/Sources/ObjcSupport/include/safeValueForKey.h +0 -0
  31. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/apple-catalog-parsing/native/swift/AssetCatalogParser/Sources/ObjcSupport/safeValueForKey.m +0 -0
  32. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/apple-catalog-parsing/native/swift/AssetCatalogParser/Tests/AssetCatalogParserTests/AssetCatalogParserTests.swift +0 -0
  33. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/apple-catalog-parsing/native/swift/AssetCatalogParser/Tests/AssetCatalogParserTests/Resources/test.xcarchive/Info.plist +0 -0
  34. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/apple-catalog-parsing/native/swift/AssetCatalogParser/Tests/AssetCatalogParserTests/Resources/test.xcarchive/Products/Applications/DemoApp.app/Assets.car +0 -0
  35. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/apple-catalog-parsing/src/asset_catalog.rs +0 -0
  36. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/apple-catalog-parsing/src/lib.rs +0 -0
  37. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/build.rs +0 -0
  38. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/pyproject.toml +0 -0
  39. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/sentry_cli.egg-info/dependency_links.txt +0 -0
  40. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/sentry_cli.egg-info/top_level.txt +0 -0
  41. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/setup.cfg +0 -0
  42. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/setup.py +0 -0
  43. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/AGENTS.md +0 -0
  44. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/CLAUDE.md +0 -0
  45. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/api/connection_manager.rs +0 -0
  46. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/api/data_types/chunking/artifact.rs +0 -0
  47. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/api/data_types/chunking/build.rs +0 -0
  48. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/api/data_types/chunking/compression.rs +0 -0
  49. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/api/data_types/chunking/dif.rs +0 -0
  50. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/api/data_types/chunking/file_state.rs +0 -0
  51. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/api/data_types/chunking/hash_algorithm.rs +0 -0
  52. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/api/data_types/chunking/mod.rs +0 -0
  53. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/api/data_types/chunking/upload/mod.rs +0 -0
  54. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/api/data_types/chunking/upload/options.rs +0 -0
  55. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/api/data_types/code_mappings.rs +0 -0
  56. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/api/data_types/deploy.rs +0 -0
  57. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/api/data_types/mod.rs +0 -0
  58. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/api/data_types/snapshots.rs +0 -0
  59. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/api/encoding.rs +0 -0
  60. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/api/envelopes_api.rs +0 -0
  61. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/api/errors/api_error.rs +0 -0
  62. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/api/errors/mod.rs +0 -0
  63. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/api/errors/sentry_error.rs +0 -0
  64. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/api/pagination.rs +0 -0
  65. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/api/serialization.rs +0 -0
  66. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/build/download.rs +0 -0
  67. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/build/mod.rs +0 -0
  68. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/build/upload.rs +0 -0
  69. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/code_mappings/mod.rs +0 -0
  70. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/code_mappings/upload.rs +0 -0
  71. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/dart_symbol_map/mod.rs +0 -0
  72. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/dart_symbol_map/upload.rs +0 -0
  73. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/debug_files/bundle_jvm.rs +0 -0
  74. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/debug_files/bundle_sources.rs +0 -0
  75. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/debug_files/check.rs +0 -0
  76. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/debug_files/find.rs +0 -0
  77. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/debug_files/mod.rs +0 -0
  78. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/debug_files/print_sources.rs +0 -0
  79. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/debug_files/upload.rs +0 -0
  80. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/deploys/list.rs +0 -0
  81. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/deploys/mod.rs +0 -0
  82. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/deploys/new.rs +0 -0
  83. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/derive_parser.rs +0 -0
  84. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/events/list.rs +0 -0
  85. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/events/mod.rs +0 -0
  86. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/info.rs +0 -0
  87. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/issues/list.rs +0 -0
  88. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/issues/mod.rs +0 -0
  89. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/issues/mute.rs +0 -0
  90. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/issues/resolve.rs +0 -0
  91. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/issues/unresolve.rs +0 -0
  92. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/login.rs +0 -0
  93. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/logs/list.rs +0 -0
  94. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/logs/mod.rs +0 -0
  95. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/mod.rs +0 -0
  96. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/monitors/list.rs +0 -0
  97. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/monitors/mod.rs +0 -0
  98. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/monitors/run.rs +0 -0
  99. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/organizations/list.rs +0 -0
  100. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/organizations/mod.rs +0 -0
  101. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/proguard/mod.rs +0 -0
  102. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/proguard/upload.rs +0 -0
  103. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/proguard/uuid.rs +0 -0
  104. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/projects/list.rs +0 -0
  105. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/projects/mod.rs +0 -0
  106. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/react_native/gradle.rs +0 -0
  107. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/react_native/mod.rs +0 -0
  108. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/releases/archive.rs +0 -0
  109. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/releases/delete.rs +0 -0
  110. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/releases/finalize.rs +0 -0
  111. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/releases/info.rs +0 -0
  112. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/releases/list.rs +0 -0
  113. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/releases/mod.rs +0 -0
  114. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/releases/new.rs +0 -0
  115. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/releases/restore.rs +0 -0
  116. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/releases/set_commits.rs +0 -0
  117. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/repos/list.rs +0 -0
  118. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/repos/mod.rs +0 -0
  119. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/send_envelope.rs +0 -0
  120. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/send_metric/common_args.rs +0 -0
  121. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/send_metric/increment.rs +0 -0
  122. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/send_metric/mod.rs +0 -0
  123. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/send_metric/set.rs +0 -0
  124. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/sourcemaps/inject.rs +0 -0
  125. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/sourcemaps/mod.rs +0 -0
  126. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/sourcemaps/resolve.rs +0 -0
  127. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/sourcemaps/upload.rs +0 -0
  128. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/uninstall.rs +0 -0
  129. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/update.rs +0 -0
  130. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/upload_dif.rs +0 -0
  131. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/upload_dsym.rs +0 -0
  132. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/upload_proguard.rs +0 -0
  133. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/constants.rs +0 -0
  134. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/main.rs +0 -0
  135. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/android.rs +0 -0
  136. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/auth_token/auth_token_impl.rs +0 -0
  137. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/auth_token/error.rs +0 -0
  138. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/auth_token/mod.rs +0 -0
  139. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/auth_token/org_auth_token.rs +0 -0
  140. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/auth_token/redacting.rs +0 -0
  141. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/auth_token/test.rs +0 -0
  142. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/auth_token/user_auth_token.rs +0 -0
  143. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/build/apple.rs +0 -0
  144. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/build/mod.rs +0 -0
  145. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/build/normalize.rs +0 -0
  146. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/build/validation.rs +0 -0
  147. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/build_vcs.rs +0 -0
  148. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/chunks/mod.rs +0 -0
  149. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/chunks/options.rs +0 -0
  150. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/chunks/types.rs +0 -0
  151. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/chunks/upload.rs +0 -0
  152. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/ci.rs +0 -0
  153. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/cordova.rs +0 -0
  154. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/dif.rs +0 -0
  155. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/dif_upload/error.rs +0 -0
  156. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/dif_upload/mod.rs +0 -0
  157. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/event.rs +0 -0
  158. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/file_search.rs +0 -0
  159. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/formatting.rs +0 -0
  160. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/fs.rs +0 -0
  161. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/http.rs +0 -0
  162. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/logging.rs +0 -0
  163. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/mod.rs +0 -0
  164. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/non_empty.rs +0 -0
  165. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/progress.rs +0 -0
  166. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/proguard/mapping.rs +0 -0
  167. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/proguard/mod.rs +0 -0
  168. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/proguard/upload.rs +0 -0
  169. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/retry.rs +0 -0
  170. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/snapshots/sentry_cli__utils__vcs__tests__generate_patch_default_twenty.snap +0 -0
  171. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/snapshots/sentry_cli__utils__vcs__tests__generate_patch_ignore_missing.snap +0 -0
  172. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/snapshots/sentry_cli__utils__vcs__tests__generate_patch_set_base.snap +0 -0
  173. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/snapshots/sentry_cli__utils__vcs__tests__generate_patch_set_previous_commit.snap +0 -0
  174. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/snapshots/sentry_cli__utils__vcs__tests__get_commits_from_git.snap +0 -0
  175. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/source_bundle.rs +0 -0
  176. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/sourcemaps/inject.rs +0 -0
  177. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/sourcemaps.rs +0 -0
  178. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/system.rs +0 -0
  179. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/ui.rs +0 -0
  180. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/value_parsers.rs +0 -0
  181. {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/vcs.rs +0 -0
@@ -1902,7 +1902,7 @@ dependencies = [
1902
1902
  "p256",
1903
1903
  "p384",
1904
1904
  "pem",
1905
- "rand 0.8.5",
1905
+ "rand 0.8.6",
1906
1906
  "rsa",
1907
1907
  "serde",
1908
1908
  "serde_json",
@@ -2144,7 +2144,7 @@ dependencies = [
2144
2144
  "hyper",
2145
2145
  "hyper-util",
2146
2146
  "log",
2147
- "rand 0.9.2",
2147
+ "rand 0.9.4",
2148
2148
  "regex",
2149
2149
  "serde_json",
2150
2150
  "serde_urlencoded",
@@ -2242,7 +2242,7 @@ dependencies = [
2242
2242
  "num-integer",
2243
2243
  "num-iter",
2244
2244
  "num-traits",
2245
- "rand 0.8.5",
2245
+ "rand 0.8.6",
2246
2246
  "smallvec",
2247
2247
  "zeroize",
2248
2248
  ]
@@ -2300,9 +2300,9 @@ dependencies = [
2300
2300
 
2301
2301
  [[package]]
2302
2302
  name = "objectstore-client"
2303
- version = "0.1.6"
2303
+ version = "0.1.9"
2304
2304
  source = "registry+https://github.com/rust-lang/crates.io-index"
2305
- checksum = "f99caa869461b61decd1985c029d7e1462d1bde8e2448040db27d567165fcc1e"
2305
+ checksum = "754d0120cf9036efad549de3d65223998b5b7ab00943686dd96acdb926a0cfe6"
2306
2306
  dependencies = [
2307
2307
  "async-compression",
2308
2308
  "bytes",
@@ -2323,9 +2323,9 @@ dependencies = [
2323
2323
 
2324
2324
  [[package]]
2325
2325
  name = "objectstore-types"
2326
- version = "0.1.6"
2326
+ version = "0.1.9"
2327
2327
  source = "registry+https://github.com/rust-lang/crates.io-index"
2328
- checksum = "c375bccef8773d1739eabb7e2b1bbd7e9a9071c8f9557e3b50dce7220e8c8736"
2328
+ checksum = "75d2e3c60712032c880ec7fc56cd01856eb438968957b4c136acd4e6d66f3580"
2329
2329
  dependencies = [
2330
2330
  "http",
2331
2331
  "humantime",
@@ -2358,15 +2358,14 @@ dependencies = [
2358
2358
 
2359
2359
  [[package]]
2360
2360
  name = "openssl"
2361
- version = "0.10.75"
2361
+ version = "0.10.79"
2362
2362
  source = "registry+https://github.com/rust-lang/crates.io-index"
2363
- checksum = "08838db121398ad17ab8531ce9de97b244589089e290a384c900cb9ff7434328"
2363
+ checksum = "bf0b434746ee2832f4f0baf10137e1cabb18cbe6912c69e2e33263c45250f542"
2364
2364
  dependencies = [
2365
2365
  "bitflags 2.9.4",
2366
2366
  "cfg-if",
2367
2367
  "foreign-types",
2368
2368
  "libc",
2369
- "once_cell",
2370
2369
  "openssl-macros",
2371
2370
  "openssl-sys",
2372
2371
  ]
@@ -2399,9 +2398,9 @@ dependencies = [
2399
2398
 
2400
2399
  [[package]]
2401
2400
  name = "openssl-sys"
2402
- version = "0.9.111"
2401
+ version = "0.9.115"
2403
2402
  source = "registry+https://github.com/rust-lang/crates.io-index"
2404
- checksum = "82cab2d520aa75e3c58898289429321eb788c3106963d0dc886ec7a5f4adc321"
2403
+ checksum = "158fe5b292746440aa6e7a7e690e55aeb72d41505e2804c23c6973ad0e9c9781"
2405
2404
  dependencies = [
2406
2405
  "cc",
2407
2406
  "libc",
@@ -2640,7 +2639,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
2640
2639
  checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d"
2641
2640
  dependencies = [
2642
2641
  "phf_shared",
2643
- "rand 0.8.5",
2642
+ "rand 0.8.6",
2644
2643
  ]
2645
2644
 
2646
2645
  [[package]]
@@ -2855,9 +2854,9 @@ checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09"
2855
2854
 
2856
2855
  [[package]]
2857
2856
  name = "rand"
2858
- version = "0.8.5"
2857
+ version = "0.8.6"
2859
2858
  source = "registry+https://github.com/rust-lang/crates.io-index"
2860
- checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
2859
+ checksum = "5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a"
2861
2860
  dependencies = [
2862
2861
  "libc",
2863
2862
  "rand_chacha 0.3.1",
@@ -2866,9 +2865,9 @@ dependencies = [
2866
2865
 
2867
2866
  [[package]]
2868
2867
  name = "rand"
2869
- version = "0.9.2"
2868
+ version = "0.9.4"
2870
2869
  source = "registry+https://github.com/rust-lang/crates.io-index"
2871
- checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1"
2870
+ checksum = "44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea"
2872
2871
  dependencies = [
2873
2872
  "rand_chacha 0.9.0",
2874
2873
  "rand_core 0.9.3",
@@ -3207,9 +3206,9 @@ dependencies = [
3207
3206
 
3208
3207
  [[package]]
3209
3208
  name = "rustls-webpki"
3210
- version = "0.103.10"
3209
+ version = "0.103.13"
3211
3210
  source = "registry+https://github.com/rust-lang/crates.io-index"
3212
- checksum = "df33b2b81ac578cabaf06b89b0631153a3f416b0a886e8a7a1707fb51abbd1ef"
3211
+ checksum = "61c429a8649f110dddef65e2a5ad240f747e85f7758a6bccc7e5777bd33f756e"
3213
3212
  dependencies = [
3214
3213
  "ring",
3215
3214
  "rustls-pki-types",
@@ -3392,7 +3391,7 @@ dependencies = [
3392
3391
 
3393
3392
  [[package]]
3394
3393
  name = "sentry-cli"
3395
- version = "3.4.1"
3394
+ version = "3.4.3"
3396
3395
  dependencies = [
3397
3396
  "anyhow",
3398
3397
  "anylog",
@@ -3411,6 +3410,7 @@ dependencies = [
3411
3410
  "dotenvy",
3412
3411
  "elementtree",
3413
3412
  "flate2",
3413
+ "futures-util",
3414
3414
  "git2",
3415
3415
  "glob",
3416
3416
  "http",
@@ -3485,7 +3485,7 @@ version = "0.46.0"
3485
3485
  source = "registry+https://github.com/rust-lang/crates.io-index"
3486
3486
  checksum = "cfc409727ae90765ca8ea76fe6c949d6f159a11d02e130b357fa652ee9efcada"
3487
3487
  dependencies = [
3488
- "rand 0.9.2",
3488
+ "rand 0.9.4",
3489
3489
  "sentry-types",
3490
3490
  "serde",
3491
3491
  "serde_json",
@@ -3500,7 +3500,7 @@ checksum = "c7b9b4e4c03a4d3643c18c78b8aa91d2cbee5da047d2fa0ca4bb29bc67e6c55c"
3500
3500
  dependencies = [
3501
3501
  "debugid",
3502
3502
  "hex",
3503
- "rand 0.9.2",
3503
+ "rand 0.9.4",
3504
3504
  "serde",
3505
3505
  "serde_json",
3506
3506
  "thiserror 2.0.17",
@@ -1,7 +1,7 @@
1
1
  [package]
2
2
  build = "build.rs"
3
3
  name = "sentry-cli"
4
- version = "3.4.1"
4
+ version = "3.4.3"
5
5
  edition = "2021"
6
6
  rust-version = "1.91"
7
7
 
@@ -31,6 +31,7 @@ elementtree = "1.2.3"
31
31
  flate2 = { version = "1.0.25", default-features = false, features = [
32
32
  "rust_backend",
33
33
  ] }
34
+ futures-util = "0.3"
34
35
  git2 = { version = "0.20.4", default-features = false }
35
36
  glob = "0.3.1"
36
37
  http = "1.4.0"
@@ -44,7 +45,7 @@ java-properties = "2.0.0"
44
45
  lazy_static = "1.4.0"
45
46
  libc = "0.2.139"
46
47
  log = { version = "0.4.17", features = ["std"] }
47
- objectstore-client = { version = "0.1.6" , default-features = false, features = ["native-tls"] }
48
+ objectstore-client = { version = "0.1.9" , default-features = false, features = ["native-tls"] }
48
49
  open = "3.2.0"
49
50
  parking_lot = "0.12.1"
50
51
  percent-encoding = "2.2.0"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sentry_cli
3
- Version: 3.4.1
3
+ Version: 3.4.3
4
4
  Summary: A command line utility to work with Sentry.
5
5
  Home-page: https://github.com/getsentry/sentry-cli
6
6
  Author: Sentry
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sentry_cli
3
- Version: 3.4.1
3
+ Version: 3.4.3
4
4
  Summary: A command line utility to work with Sentry.
5
5
  Home-page: https://github.com/getsentry/sentry-cli
6
6
  Author: Sentry
@@ -36,6 +36,7 @@ src/api/envelopes_api.rs
36
36
  src/api/mod.rs
37
37
  src/api/pagination.rs
38
38
  src/api/serialization.rs
39
+ src/api/updating.rs
39
40
  src/api/data_types/code_mappings.rs
40
41
  src/api/data_types/deploy.rs
41
42
  src/api/data_types/mod.rs
@@ -11,6 +11,7 @@ mod encoding;
11
11
  mod errors;
12
12
  mod pagination;
13
13
  mod serialization;
14
+ mod updating;
14
15
 
15
16
  use std::borrow::Cow;
16
17
  use std::cell::RefCell;
@@ -57,6 +58,7 @@ use encoding::{PathArg, QueryArg};
57
58
  use errors::{ApiError, ApiErrorKind, ApiResult, SentryError};
58
59
 
59
60
  pub use self::data_types::*;
61
+ pub use crate::api::updating::ReleaseRegistryFile;
60
62
 
61
63
  lazy_static! {
62
64
  static ref API: Mutex<Option<Arc<Api>>> = Mutex::new(None);
@@ -335,13 +337,13 @@ impl Api {
335
337
 
336
338
  if resp.status() == 200 {
337
339
  let info: RegistryRelease = resp.convert()?;
338
- for (filename, _download_url) in info.file_urls {
340
+ for (filename, _download_url) in info.files {
339
341
  info!("Found asset {filename}");
340
342
  if filename == ref_name {
341
343
  return Ok(Some(SentryCliRelease {
342
344
  version: info.version,
343
345
  #[cfg(not(feature = "managed"))]
344
- download_url: _download_url,
346
+ download_info: _download_url,
345
347
  }));
346
348
  }
347
349
  }
@@ -450,14 +452,6 @@ impl AuthenticatedApi<'_> {
450
452
  self.api.request(method, url, None)
451
453
  }
452
454
 
453
- /// Returns the auth info for use in external service authorization.
454
- pub fn auth(&self) -> &Auth {
455
- self.api
456
- .config
457
- .get_auth()
458
- .expect("AuthenticatedApi can only be constructed when auth exists")
459
- }
460
-
461
455
  // High-level method implementations
462
456
 
463
457
  /// Performs an API request to verify the authentication status of the
@@ -1737,17 +1731,17 @@ pub struct ReleaseCommit {
1737
1731
  pub id: String,
1738
1732
  }
1739
1733
 
1740
- #[derive(Debug, Serialize, Deserialize)]
1734
+ #[derive(Debug, Deserialize)]
1741
1735
  struct RegistryRelease {
1742
1736
  version: String,
1743
- file_urls: HashMap<String, String>,
1737
+ files: HashMap<String, ReleaseRegistryFile>,
1744
1738
  }
1745
1739
 
1746
1740
  /// Information about sentry CLI releases
1747
1741
  pub struct SentryCliRelease {
1748
1742
  pub version: String,
1749
1743
  #[cfg(not(feature = "managed"))]
1750
- pub download_url: String,
1744
+ pub download_info: ReleaseRegistryFile,
1751
1745
  }
1752
1746
 
1753
1747
  #[derive(Debug, Deserialize, Default)]
@@ -0,0 +1,80 @@
1
+ //! Types for updating functionality.
2
+
3
+ use std::ops::Deref;
4
+ use std::str::FromStr;
5
+
6
+ use anyhow::{Context as _, Error};
7
+ use serde::de::Error as _;
8
+ use serde::{Deserialize, Deserializer};
9
+
10
+ /// A SHA-256 sum in hexadecimal representation is 64 characters long.
11
+ const SHA256_SUM_HEX_LENGTH: usize = 64;
12
+
13
+ #[derive(Debug)]
14
+ pub struct Sha256Sum([u8; 32]);
15
+
16
+ #[derive(Debug, Deserialize)]
17
+ pub struct ReleaseRegistryFile {
18
+ pub url: String,
19
+ #[serde(rename = "checksums")]
20
+ #[serde(deserialize_with = "deserialize_checksums")]
21
+ pub checksum: Sha256Sum,
22
+ }
23
+
24
+ fn deserialize_checksums<'de, D>(deserializer: D) -> Result<Sha256Sum, D::Error>
25
+ where
26
+ D: Deserializer<'de>,
27
+ {
28
+ #[derive(Deserialize)]
29
+ #[serde(rename_all = "kebab-case")]
30
+ struct RawChecksumsMapping {
31
+ sha256_hex: String,
32
+ }
33
+
34
+ let RawChecksumsMapping { sha256_hex } = RawChecksumsMapping::deserialize(deserializer)?;
35
+ sha256_hex.parse().map_err(D::Error::custom)
36
+ }
37
+
38
+ impl FromStr for Sha256Sum {
39
+ type Err = Error;
40
+
41
+ fn from_str(s: &str) -> Result<Self, Self::Err> {
42
+ if s.len() != SHA256_SUM_HEX_LENGTH {
43
+ anyhow::bail!(
44
+ "cannot parse SHA-256: expected a {SHA256_SUM_HEX_LENGTH}-character long string"
45
+ );
46
+ }
47
+
48
+ let mut bytes = [0u8; 32];
49
+
50
+ bytes
51
+ .iter_mut()
52
+ .zip(s.as_bytes().chunks(2))
53
+ .map(|(byte, hex_byte)| {
54
+ let hex_str = str::from_utf8(hex_byte)?;
55
+ *byte = u8::from_str_radix(hex_str, 16)?;
56
+ Ok::<_, Self::Err>(())
57
+ })
58
+ .map(|result| result.context("cannot parse SHA-256: not a valid hex string"))
59
+ .collect::<Result<Vec<()>, _>>()?;
60
+
61
+ Ok(Sha256Sum(bytes))
62
+ }
63
+ }
64
+
65
+ impl Deref for Sha256Sum {
66
+ type Target = [u8; 32];
67
+
68
+ fn deref(&self) -> &Self::Target {
69
+ &self.0
70
+ }
71
+ }
72
+
73
+ impl<Rhs> PartialEq<Rhs> for Sha256Sum
74
+ where
75
+ Rhs: Deref<Target = [u8]>,
76
+ {
77
+ fn eq(&self, other: &Rhs) -> bool {
78
+ self.0 == **other
79
+ }
80
+ }
@@ -1,5 +1,5 @@
1
- _SENTRY_TRACEBACK_FILE="___SENTRY_TRACEBACK_FILE___"
2
- _SENTRY_LOG_FILE="___SENTRY_LOG_FILE___"
1
+ _SENTRY_TRACEBACK_FILE=___SENTRY_TRACEBACK_FILE___
2
+ _SENTRY_LOG_FILE=___SENTRY_LOG_FILE___
3
3
 
4
4
  if [ "${SENTRY_CLI_NO_EXIT_TRAP-0}" != 1 ]; then
5
5
  trap _sentry_exit_trap EXIT
@@ -32,7 +32,7 @@ _sentry_err_trap() {
32
32
  echo "@exit_code:${_exit_code}" >> "$_SENTRY_TRACEBACK_FILE"
33
33
 
34
34
  : >> "$_SENTRY_LOG_FILE"
35
- export SENTRY_LAST_EVENT=$(___SENTRY_CLI___ bash-hook --send-event --traceback "$_SENTRY_TRACEBACK_FILE" ___SENTRY_TAGS___ ___SENTRY_RELEASE___ --log "$_SENTRY_LOG_FILE" ___SENTRY_NO_ENVIRON___)
35
+ export SENTRY_LAST_EVENT=$(___SENTRY_CLI___ bash-hook --send-event --traceback "$_SENTRY_TRACEBACK_FILE" ___SENTRY_TAGS___ ___SENTRY_RELEASE___ ___SENTRY_ALLOW_XCODE_INFOPLIST_PREPROCESSING___ --log "$_SENTRY_LOG_FILE")
36
36
  rm -f "$_SENTRY_TRACEBACK_FILE" "$_SENTRY_LOG_FILE"
37
37
  }
38
38
 
@@ -11,11 +11,12 @@ use anyhow::{format_err, Result};
11
11
  use clap::{builder::ArgPredicate, Arg, ArgAction, ArgMatches, Command};
12
12
  use lazy_static::lazy_static;
13
13
  use regex::Regex;
14
- use sentry::protocol::{Event, Exception, Frame, Stacktrace, User, Value};
14
+ use sentry::protocol::{Event, Exception, Frame, Stacktrace, User};
15
15
  use uuid::Uuid;
16
16
 
17
17
  use crate::commands::send_event;
18
18
  use crate::config::Config;
19
+ use crate::utils::args::allow_xcode_infoplist_preprocessing_arg;
19
20
  use crate::utils::event::{attach_logfile, get_sdk_info};
20
21
  use crate::utils::releases::detect_release_name;
21
22
 
@@ -40,8 +41,9 @@ pub fn make_command(command: Command) -> Command {
40
41
  .arg(
41
42
  Arg::new("no_environ")
42
43
  .long("no-environ")
44
+ .hide(true)
43
45
  .action(ArgAction::SetTrue)
44
- .help("Do not send environment variables along"),
46
+ .help("No-op, as we never send envrionment variables."),
45
47
  )
46
48
  .arg(
47
49
  Arg::new("cli")
@@ -49,6 +51,7 @@ pub fn make_command(command: Command) -> Command {
49
51
  .value_name("CMD")
50
52
  .help("Explicitly set/override the sentry-cli command"),
51
53
  )
54
+ .arg(allow_xcode_infoplist_preprocessing_arg())
52
55
  .arg(
53
56
  Arg::new("send_event")
54
57
  .long("send-event")
@@ -87,13 +90,15 @@ fn send_event(
87
90
  logfile: &str,
88
91
  tags: &[&String],
89
92
  release: Option<String>,
90
- environ: bool,
93
+ allow_xcode_infoplist_preprocessing: bool,
91
94
  ) -> Result<()> {
92
95
  let config = Config::current();
93
96
 
94
97
  let mut event = Event {
95
98
  environment: config.get_environment().map(Into::into),
96
- release: release.or(detect_release_name().ok()).map(Into::into),
99
+ release: release
100
+ .or(detect_release_name(allow_xcode_infoplist_preprocessing).ok())
101
+ .map(Into::into),
97
102
  sdk: Some(get_sdk_info()),
98
103
  user: whoami::fallible::username().ok().map(|n| User {
99
104
  username: Some(n),
@@ -112,13 +117,6 @@ fn send_event(
112
117
  event.tags.insert(key.into(), value.into());
113
118
  }
114
119
 
115
- if environ {
116
- event.extra.insert(
117
- "environ".into(),
118
- Value::Object(env::vars().map(|(k, v)| (k, Value::String(v))).collect()),
119
- );
120
- }
121
-
122
120
  let mut cmd = "unknown".to_owned();
123
121
  let mut exit_code = 1;
124
122
  let mut frames = vec![];
@@ -208,6 +206,10 @@ fn send_event(
208
206
  Ok(())
209
207
  }
210
208
 
209
+ fn shell_quote(value: &str) -> String {
210
+ format!("'{}'", value.replace('\'', r"'\''"))
211
+ }
212
+
211
213
  pub fn execute(matches: &ArgMatches) -> Result<()> {
212
214
  let release = Config::current().get_release(matches).ok();
213
215
 
@@ -222,7 +224,7 @@ pub fn execute(matches: &ArgMatches) -> Result<()> {
222
224
  matches.get_one::<String>("log").unwrap(),
223
225
  &tags,
224
226
  release,
225
- !matches.get_flag("no_environ"),
227
+ matches.get_flag("allow_xcode_infoplist_preprocessing"),
226
228
  );
227
229
  }
228
230
 
@@ -235,15 +237,18 @@ pub fn execute(matches: &ArgMatches) -> Result<()> {
235
237
  let mut script = BASH_SCRIPT
236
238
  .replace(
237
239
  "___SENTRY_TRACEBACK_FILE___",
238
- &traceback.display().to_string(),
240
+ &shell_quote(&traceback.display().to_string()),
239
241
  )
240
- .replace("___SENTRY_LOG_FILE___", &log.display().to_string());
242
+ .replace(
243
+ "___SENTRY_LOG_FILE___",
244
+ &shell_quote(&log.display().to_string()),
245
+ );
241
246
 
242
247
  script = script.replace(
243
248
  " ___SENTRY_TAGS___",
244
249
  &tags
245
250
  .iter()
246
- .map(|tag| format!(" --tag \"{tag}\""))
251
+ .map(|tag| format!(" --tag {}", shell_quote(tag)))
247
252
  .collect::<Vec<_>>()
248
253
  .join(""),
249
254
  );
@@ -251,26 +256,26 @@ pub fn execute(matches: &ArgMatches) -> Result<()> {
251
256
  script = match release {
252
257
  Some(release) => script.replace(
253
258
  " ___SENTRY_RELEASE___",
254
- format!(" --release \"{release}\"").as_str(),
259
+ format!(" --release {}", shell_quote(&release)).as_str(),
255
260
  ),
256
261
  None => script.replace(" ___SENTRY_RELEASE___", ""),
257
262
  };
258
263
 
259
264
  script = script.replace(
260
265
  "___SENTRY_CLI___",
261
- matches
262
- .get_one::<String>("cli")
263
- .map_or_else(
264
- || env::current_exe().unwrap().display().to_string(),
265
- String::clone,
266
- )
267
- .as_str(),
266
+ &shell_quote(&matches.get_one::<String>("cli").map_or_else(
267
+ || env::current_exe().unwrap().display().to_string(),
268
+ String::clone,
269
+ )),
268
270
  );
269
271
 
270
- if matches.get_flag("no_environ") {
271
- script = script.replace("___SENTRY_NO_ENVIRON___", "--no-environ");
272
+ if matches.get_flag("allow_xcode_infoplist_preprocessing") {
273
+ script = script.replace(
274
+ " ___SENTRY_ALLOW_XCODE_INFOPLIST_PREPROCESSING___",
275
+ " --allow-xcode-infoplist-preprocessing",
276
+ );
272
277
  } else {
273
- script = script.replace("___SENTRY_NO_ENVIRON___", "");
278
+ script = script.replace(" ___SENTRY_ALLOW_XCODE_INFOPLIST_PREPROCESSING___", "");
274
279
  }
275
280
 
276
281
  if !matches.get_flag("no_exit") {
@@ -279,3 +284,16 @@ pub fn execute(matches: &ArgMatches) -> Result<()> {
279
284
  println!("{script}");
280
285
  Ok(())
281
286
  }
287
+
288
+ #[cfg(test)]
289
+ mod tests {
290
+ use super::shell_quote;
291
+
292
+ #[test]
293
+ fn shell_quote_handles_special_characters() {
294
+ assert_eq!(
295
+ shell_quote("it's $(unsafe); && ok"),
296
+ "'it'\\''s $(unsafe); && ok'"
297
+ );
298
+ }
299
+ }