sentry-cli 2.49.0__tar.gz → 2.50.2__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 (168) hide show
  1. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/Cargo.lock +1 -1
  2. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/Cargo.toml +3 -1
  3. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/PKG-INFO +1 -1
  4. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/apple-catalog-parsing/src/asset_catalog.rs +1 -1
  5. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/build.rs +1 -1
  6. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/sentry_cli.egg-info/PKG-INFO +1 -1
  7. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/api/connection_manager.rs +1 -1
  8. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/api/mod.rs +10 -11
  9. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/commands/bash_hook.rs +1 -1
  10. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/commands/debug_files/bundle_jvm.rs +3 -3
  11. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/commands/debug_files/check.rs +1 -1
  12. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/commands/debug_files/find.rs +2 -2
  13. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/commands/debug_files/upload.rs +3 -3
  14. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/commands/deploys/mod.rs +1 -1
  15. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/commands/events/mod.rs +1 -1
  16. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/commands/files/mod.rs +1 -1
  17. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/commands/files/upload.rs +2 -2
  18. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/commands/issues/mod.rs +1 -1
  19. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/commands/mobile_app/mod.rs +7 -1
  20. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/commands/mobile_app/upload.rs +49 -14
  21. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/commands/monitors/list.rs +1 -1
  22. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/commands/monitors/run.rs +2 -3
  23. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/commands/projects/mod.rs +1 -1
  24. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/commands/react_native/appcenter.rs +3 -3
  25. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/commands/react_native/gradle.rs +1 -1
  26. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/commands/react_native/xcode.rs +2 -2
  27. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/commands/releases/archive.rs +1 -1
  28. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/commands/releases/delete.rs +1 -1
  29. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/commands/releases/finalize.rs +1 -1
  30. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/commands/releases/info.rs +1 -1
  31. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/commands/releases/mod.rs +1 -1
  32. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/commands/releases/new.rs +1 -1
  33. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/commands/releases/restore.rs +1 -1
  34. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/commands/releases/set_commits.rs +1 -1
  35. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/commands/repos/mod.rs +1 -1
  36. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/commands/send_event.rs +3 -3
  37. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/commands/send_metric/distribution.rs +1 -1
  38. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/commands/send_metric/gauge.rs +1 -1
  39. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/commands/send_metric/increment.rs +1 -1
  40. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/commands/send_metric/mod.rs +1 -1
  41. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/commands/send_metric/set.rs +1 -1
  42. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/commands/sourcemaps/explain.rs +1 -1
  43. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/commands/sourcemaps/mod.rs +1 -1
  44. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/commands/sourcemaps/upload.rs +6 -10
  45. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/commands/update.rs +1 -1
  46. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/commands/upload_proguard.rs +1 -1
  47. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/config.rs +4 -5
  48. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/utils/android.rs +1 -1
  49. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/utils/appcenter.rs +5 -5
  50. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/utils/args.rs +1 -1
  51. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/utils/auth_token/test.rs +1 -1
  52. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/utils/chunks/upload.rs +1 -1
  53. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/utils/dif.rs +2 -2
  54. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/utils/dif_upload/mod.rs +4 -5
  55. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/utils/event.rs +2 -2
  56. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/utils/file_search.rs +1 -1
  57. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/utils/file_upload.rs +2 -2
  58. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/utils/fs.rs +1 -1
  59. sentry_cli-2.50.2/src/utils/mobile_app/apple.rs +158 -0
  60. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/utils/mobile_app/mod.rs +3 -1
  61. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/utils/mobile_app/validation.rs +14 -0
  62. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/utils/progress.rs +1 -1
  63. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/utils/releases.rs +1 -1
  64. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/utils/retry.rs +1 -1
  65. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/utils/sourcemaps/inject.rs +3 -3
  66. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/utils/sourcemaps.rs +3 -3
  67. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/utils/system.rs +4 -6
  68. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/utils/update.rs +1 -1
  69. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/utils/vcs.rs +2 -2
  70. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/utils/xcode.rs +2 -2
  71. sentry_cli-2.49.0/src/utils/mobile_app/apple.rs +0 -29
  72. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/LICENSE +0 -0
  73. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/MANIFEST.in +0 -0
  74. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/README.md +0 -0
  75. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/apple-catalog-parsing/Cargo.toml +0 -0
  76. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/apple-catalog-parsing/build.rs +0 -0
  77. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/apple-catalog-parsing/native/swift/AssetCatalogParser/Package.swift +0 -0
  78. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/apple-catalog-parsing/native/swift/AssetCatalogParser/Sources/AssetCatalogParser/AssetCatalogReader.swift +0 -0
  79. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/apple-catalog-parsing/native/swift/AssetCatalogParser/Sources/ObjcSupport/include/safeValueForKey.h +0 -0
  80. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/apple-catalog-parsing/native/swift/AssetCatalogParser/Sources/ObjcSupport/safeValueForKey.m +0 -0
  81. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/apple-catalog-parsing/native/swift/AssetCatalogParser/Tests/AssetCatalogParserTests/AssetCatalogParserTests.swift +0 -0
  82. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/apple-catalog-parsing/native/swift/AssetCatalogParser/Tests/AssetCatalogParserTests/Resources/test.xcarchive/Info.plist +0 -0
  83. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/apple-catalog-parsing/native/swift/AssetCatalogParser/Tests/AssetCatalogParserTests/Resources/test.xcarchive/Products/Applications/DemoApp.app/Assets.car +0 -0
  84. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/apple-catalog-parsing/src/lib.rs +0 -0
  85. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/pyproject.toml +0 -0
  86. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/sentry_cli.egg-info/SOURCES.txt +0 -0
  87. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/sentry_cli.egg-info/dependency_links.txt +0 -0
  88. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/sentry_cli.egg-info/top_level.txt +0 -0
  89. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/setup.cfg +0 -0
  90. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/setup.py +0 -0
  91. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/api/data_types/chunking/artifact.rs +0 -0
  92. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/api/data_types/chunking/compression.rs +0 -0
  93. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/api/data_types/chunking/dif.rs +0 -0
  94. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/api/data_types/chunking/file_state.rs +0 -0
  95. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/api/data_types/chunking/hash_algorithm.rs +0 -0
  96. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/api/data_types/chunking/mobile_app.rs +0 -0
  97. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/api/data_types/chunking/mod.rs +0 -0
  98. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/api/data_types/chunking/upload/capability.rs +0 -0
  99. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/api/data_types/chunking/upload/mod.rs +0 -0
  100. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/api/data_types/chunking/upload/options.rs +0 -0
  101. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/api/data_types/deploy.rs +0 -0
  102. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/api/data_types/mod.rs +0 -0
  103. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/api/encoding.rs +0 -0
  104. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/api/envelopes_api.rs +0 -0
  105. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/api/errors/api_error.rs +0 -0
  106. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/api/errors/mod.rs +0 -0
  107. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/api/errors/sentry_error.rs +0 -0
  108. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/api/pagination.rs +0 -0
  109. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/bashsupport.sh +0 -0
  110. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/commands/debug_files/bundle_sources.rs +0 -0
  111. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/commands/debug_files/mod.rs +0 -0
  112. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/commands/debug_files/print_sources.rs +0 -0
  113. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/commands/deploys/list.rs +0 -0
  114. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/commands/deploys/new.rs +0 -0
  115. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/commands/derive_parser.rs +0 -0
  116. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/commands/events/list.rs +0 -0
  117. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/commands/files/delete.rs +0 -0
  118. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/commands/files/list.rs +0 -0
  119. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/commands/info.rs +0 -0
  120. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/commands/issues/list.rs +0 -0
  121. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/commands/issues/mute.rs +0 -0
  122. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/commands/issues/resolve.rs +0 -0
  123. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/commands/issues/unresolve.rs +0 -0
  124. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/commands/login.rs +0 -0
  125. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/commands/mod.rs +0 -0
  126. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/commands/monitors/mod.rs +0 -0
  127. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/commands/organizations/list.rs +0 -0
  128. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/commands/organizations/mod.rs +0 -0
  129. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/commands/projects/list.rs +0 -0
  130. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/commands/react_native/mod.rs +0 -0
  131. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/commands/releases/list.rs +0 -0
  132. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/commands/releases/propose_version.rs +0 -0
  133. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/commands/repos/list.rs +0 -0
  134. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/commands/send_envelope.rs +0 -0
  135. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/commands/send_metric/common_args.rs +0 -0
  136. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/commands/sourcemaps/inject.rs +0 -0
  137. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/commands/sourcemaps/resolve.rs +0 -0
  138. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/commands/uninstall.rs +0 -0
  139. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/commands/upload_dif.rs +0 -0
  140. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/commands/upload_dsym.rs +0 -0
  141. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/constants.rs +0 -0
  142. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/main.rs +0 -0
  143. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/utils/auth_token/auth_token_impl.rs +0 -0
  144. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/utils/auth_token/error.rs +0 -0
  145. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/utils/auth_token/mod.rs +0 -0
  146. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/utils/auth_token/org_auth_token.rs +0 -0
  147. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/utils/auth_token/redacting.rs +0 -0
  148. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/utils/auth_token/user_auth_token.rs +0 -0
  149. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/utils/chunks/mod.rs +0 -0
  150. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/utils/chunks/options.rs +0 -0
  151. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/utils/chunks/types.rs +0 -0
  152. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/utils/cordova.rs +0 -0
  153. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/utils/dif_upload/error.rs +0 -0
  154. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/utils/formatting.rs +0 -0
  155. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/utils/http.rs +0 -0
  156. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/utils/logging.rs +0 -0
  157. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/utils/metrics.rs +0 -0
  158. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/utils/mod.rs +0 -0
  159. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/utils/proguard/mapping.rs +0 -0
  160. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/utils/proguard/mod.rs +0 -0
  161. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/utils/proguard/upload.rs +0 -0
  162. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/utils/snapshots/sentry_cli__utils__vcs__generate_patch_default_twenty.snap +0 -0
  163. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/utils/snapshots/sentry_cli__utils__vcs__generate_patch_ignore_missing.snap +0 -0
  164. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/utils/snapshots/sentry_cli__utils__vcs__generate_patch_set_base.snap +0 -0
  165. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/utils/snapshots/sentry_cli__utils__vcs__generate_patch_set_previous_commit.snap +0 -0
  166. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/utils/snapshots/sentry_cli__utils__vcs__get_commits_from_git.snap +0 -0
  167. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/utils/ui.rs +0 -0
  168. {sentry_cli-2.49.0 → sentry_cli-2.50.2}/src/utils/value_parsers.rs +0 -0
@@ -2692,7 +2692,7 @@ dependencies = [
2692
2692
 
2693
2693
  [[package]]
2694
2694
  name = "sentry-cli"
2695
- version = "2.49.0"
2695
+ version = "2.50.2"
2696
2696
  dependencies = [
2697
2697
  "anyhow",
2698
2698
  "anylog",
@@ -2,7 +2,7 @@
2
2
  authors = ["Armin Ronacher <armin.ronacher@active-4.com>"]
3
3
  build = "build.rs"
4
4
  name = "sentry-cli"
5
- version = "2.49.0"
5
+ version = "2.50.2"
6
6
  edition = "2021"
7
7
  rust-version = "1.86"
8
8
 
@@ -103,6 +103,8 @@ allow-attributes = "warn"
103
103
  str-to-string = "warn"
104
104
  string-to-string = "warn"
105
105
  unnecessary-wraps = "warn"
106
+ uninlined-format-args = "warn"
107
+ unused-trait-names = "warn"
106
108
  unwrap-used = "warn"
107
109
 
108
110
  [lints]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sentry_cli
3
- Version: 2.49.0
3
+ Version: 2.50.2
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,5 +1,5 @@
1
1
  use std::ffi::CString;
2
- use std::os::unix::ffi::OsStrExt;
2
+ use std::os::unix::ffi::OsStrExt as _;
3
3
  use std::path::Path;
4
4
  use thiserror::Error;
5
5
 
@@ -1,7 +1,7 @@
1
1
  use std::env;
2
2
  use std::error::Error;
3
3
  use std::fs::File;
4
- use std::io::Write;
4
+ use std::io::Write as _;
5
5
  use std::path::Path;
6
6
 
7
7
  fn main() -> Result<(), Box<dyn Error>> {
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sentry_cli
3
- Version: 2.49.0
3
+ Version: 2.50.2
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
@@ -22,7 +22,7 @@ impl r2d2::ManageConnection for CurlConnectionManager {
22
22
  #[cfg(test)]
23
23
  mod tests {
24
24
  use super::*;
25
- use r2d2::ManageConnection;
25
+ use r2d2::ManageConnection as _;
26
26
 
27
27
  #[test]
28
28
  fn test_connect() {
@@ -19,13 +19,13 @@ use std::collections::{HashMap, HashSet};
19
19
  use std::ffi::OsStr;
20
20
  use std::fmt;
21
21
  use std::fs::File;
22
- use std::io::{self, Read, Write};
22
+ use std::io::{self, Read as _, Write};
23
23
  use std::path::Path;
24
24
  use std::rc::Rc;
25
25
  use std::sync::Arc;
26
26
 
27
- use anyhow::{Context, Result};
28
- use backoff::backoff::Backoff;
27
+ use anyhow::{Context as _, Result};
28
+ use backoff::backoff::Backoff as _;
29
29
  use brotli2::write::BrotliEncoder;
30
30
  #[cfg(target_os = "macos")]
31
31
  use chrono::Duration;
@@ -37,7 +37,7 @@ use lazy_static::lazy_static;
37
37
  use log::{debug, info, warn};
38
38
  use parking_lot::Mutex;
39
39
  use regex::{Captures, Regex};
40
- use secrecy::ExposeSecret;
40
+ use secrecy::ExposeSecret as _;
41
41
  use sentry::protocol::{Exception, Values};
42
42
  use serde::de::DeserializeOwned;
43
43
  use serde::{Deserialize, Serialize};
@@ -52,7 +52,7 @@ use crate::constants::{ARCH, DEFAULT_URL, EXT, PLATFORM, RELEASE_REGISTRY_LATEST
52
52
  use crate::utils::file_upload::LegacyUploadContext;
53
53
  use crate::utils::http::{self, is_absolute_url};
54
54
  use crate::utils::progress::{ProgressBar, ProgressBarMode};
55
- use crate::utils::retry::{get_default_backoff, DurationAsMilliseconds};
55
+ use crate::utils::retry::{get_default_backoff, DurationAsMilliseconds as _};
56
56
  use crate::utils::sourcemaps::get_sourcemap_reference_from_headers;
57
57
  use crate::utils::ui::{capitalize_string, make_byte_progress_bar};
58
58
 
@@ -329,7 +329,7 @@ impl Api {
329
329
  _ => ARCH,
330
330
  };
331
331
 
332
- let ref_name = format!("sentry-cli-{}-{}{}", capitalize_string(PLATFORM), arch, EXT);
332
+ let ref_name = format!("sentry-cli-{}-{arch}{EXT}", capitalize_string(PLATFORM));
333
333
  info!("Looking for file named: {}", ref_name);
334
334
 
335
335
  if resp.status() == 200 {
@@ -894,10 +894,9 @@ impl<'a> AuthenticatedApi<'a> {
894
894
  };
895
895
  self.put(
896
896
  &format!(
897
- "/projects/{}/{}/issues/?{}",
897
+ "/projects/{}/{}/issues/?{qs}",
898
898
  PathArg(org),
899
- PathArg(project),
900
- qs
899
+ PathArg(project)
901
900
  ),
902
901
  changes,
903
902
  )?
@@ -1253,7 +1252,7 @@ impl<'a> AuthenticatedApi<'a> {
1253
1252
  loop {
1254
1253
  requests_no += 1;
1255
1254
 
1256
- let resp = self.get(&format!("{}cursor={}", url, QueryArg(&cursor)))?;
1255
+ let resp = self.get(&format!("{url}cursor={}", QueryArg(&cursor)))?;
1257
1256
 
1258
1257
  if resp.status() == 404 || (resp.status() == 400 && !cursor.is_empty()) {
1259
1258
  if rv.is_empty() {
@@ -1934,7 +1933,7 @@ fn log_headers(is_response: bool, data: &[u8]) {
1934
1933
  } else {
1935
1934
  format!("{}***", &caps[3][..std::cmp::min(caps[3].len(), 8)])
1936
1935
  };
1937
- format!("{}: {} {}", &caps[1], &caps[2], info)
1936
+ format!("{}: {} {info}", &caps[1], &caps[2])
1938
1937
  });
1939
1938
  debug!("{} {}", if is_response { ">" } else { "<" }, replaced);
1940
1939
  }
@@ -4,7 +4,7 @@ use std::cmp::min;
4
4
  use std::collections::HashMap;
5
5
  use std::env;
6
6
  use std::fs;
7
- use std::io::{BufRead, BufReader};
7
+ use std::io::{BufRead as _, BufReader};
8
8
  use std::path::Path;
9
9
 
10
10
  use anyhow::{format_err, Result};
@@ -3,17 +3,17 @@
3
3
  use crate::api::Api;
4
4
  use crate::config::Config;
5
5
  use crate::constants::DEFAULT_MAX_WAIT;
6
- use crate::utils::args::ArgExt;
6
+ use crate::utils::args::ArgExt as _;
7
7
  use crate::utils::file_search::ReleaseFileSearch;
8
8
  use crate::utils::file_upload::{FileUpload, SourceFile, UploadContext};
9
9
  use crate::utils::fs::path_as_url;
10
- use anyhow::{bail, Context, Result};
10
+ use anyhow::{bail, Context as _, Result};
11
11
  use clap::{Arg, ArgMatches, Command};
12
12
  use sentry::types::DebugId;
13
13
  use std::collections::BTreeMap;
14
14
  use std::fs;
15
15
  use std::path::PathBuf;
16
- use std::str::FromStr;
16
+ use std::str::FromStr as _;
17
17
  use std::sync::Arc;
18
18
  use symbolic::debuginfo::sourcebundle::SourceFileType;
19
19
 
@@ -101,7 +101,7 @@ pub fn execute(matches: &ArgMatches) -> Result<()> {
101
101
  }
102
102
 
103
103
  if let Some(prob) = dif.get_problem() {
104
- println!(" Usable: {} ({})", style("no").red(), prob);
104
+ println!(" Usable: {} ({prob})", style("no").red());
105
105
  Err(QuietExit(1).into())
106
106
  } else {
107
107
  println!(" Usable: {}", style("yes").green());
@@ -4,7 +4,7 @@ use std::ffi::OsStr;
4
4
  use std::fmt::Debug;
5
5
  use std::io;
6
6
  use std::path::PathBuf;
7
- use std::str::FromStr;
7
+ use std::str::FromStr as _;
8
8
 
9
9
  use anyhow::Result;
10
10
  use clap::{builder::PossibleValuesParser, Arg, ArgAction, ArgMatches, Command};
@@ -186,7 +186,7 @@ fn find_ids(
186
186
  eprintln!();
187
187
  eprintln!("missing debug information files:");
188
188
  for id in &remaining {
189
- eprintln!(" {} ({})", id, id_hint(id),);
189
+ eprintln!(" {id} ({})", id_hint(id),);
190
190
  }
191
191
  }
192
192
  }
@@ -1,17 +1,17 @@
1
1
  use std::collections::BTreeSet;
2
- use std::str::{self, FromStr};
2
+ use std::str::{self, FromStr as _};
3
3
  use std::time::Duration;
4
4
 
5
5
  use anyhow::{bail, format_err, Result};
6
6
  use clap::{builder::PossibleValuesParser, Arg, ArgAction, ArgMatches, Command};
7
7
  use console::style;
8
- use itertools::Itertools;
8
+ use itertools::Itertools as _;
9
9
  use symbolic::common::DebugId;
10
10
  use symbolic::debuginfo::FileFormat;
11
11
 
12
12
  use crate::config::Config;
13
13
  use crate::constants::DEFAULT_MAX_WAIT;
14
- use crate::utils::args::ArgExt;
14
+ use crate::utils::args::ArgExt as _;
15
15
  use crate::utils::dif::{DifType, ObjectDifFeatures};
16
16
  use crate::utils::dif_upload::{DifFormat, DifUpload};
17
17
  use crate::utils::system::QuietExit;
@@ -1,7 +1,7 @@
1
1
  use anyhow::Result;
2
2
  use clap::{ArgMatches, Command};
3
3
 
4
- use crate::utils::args::ArgExt;
4
+ use crate::utils::args::ArgExt as _;
5
5
 
6
6
  pub mod list;
7
7
  pub mod new;
@@ -1,7 +1,7 @@
1
1
  use anyhow::Result;
2
2
  use clap::{ArgMatches, Command};
3
3
 
4
- use crate::utils::args::ArgExt;
4
+ use crate::utils::args::ArgExt as _;
5
5
 
6
6
  pub mod list;
7
7
 
@@ -2,7 +2,7 @@ use anyhow::Result;
2
2
  use clap::{ArgMatches, Command};
3
3
  use console::style;
4
4
 
5
- use crate::utils::args::ArgExt;
5
+ use crate::utils::args::ArgExt as _;
6
6
 
7
7
  pub mod delete;
8
8
  pub mod list;
@@ -3,7 +3,7 @@
3
3
  use std::collections::BTreeMap;
4
4
  use std::ffi::OsStr;
5
5
  use std::fs;
6
- use std::io::Read;
6
+ use std::io::Read as _;
7
7
  use std::path::Path;
8
8
  use std::sync::Arc;
9
9
  use std::time::Duration;
@@ -202,7 +202,7 @@ pub fn execute(matches: &ArgMatches) -> Result<()> {
202
202
  .iter()
203
203
  .map(|source| {
204
204
  let local_path = source.path.strip_prefix(&source.base_path).unwrap();
205
- let url = format!("{}/{}{}", url_prefix, path_as_url(local_path), url_suffix);
205
+ let url = format!("{url_prefix}/{}{url_suffix}", path_as_url(local_path));
206
206
 
207
207
  (
208
208
  url.clone(),
@@ -1,7 +1,7 @@
1
1
  use anyhow::Result;
2
2
  use clap::{Arg, ArgAction, ArgMatches, Command};
3
3
 
4
- use crate::utils::args::ArgExt;
4
+ use crate::utils::args::ArgExt as _;
5
5
 
6
6
  pub mod list;
7
7
  pub mod mute;
@@ -3,7 +3,7 @@
3
3
  use anyhow::Result;
4
4
  use clap::{ArgMatches, Command};
5
5
 
6
- use crate::utils::args::ArgExt;
6
+ use crate::utils::args::ArgExt as _;
7
7
 
8
8
  pub mod upload;
9
9
 
@@ -35,6 +35,12 @@ pub fn make_command(mut command: Command) -> Command {
35
35
  }
36
36
 
37
37
  pub fn execute(matches: &ArgMatches) -> Result<()> {
38
+ log::warn!(
39
+ "EXPERIMENTAL: The mobile-app subcommand is experimental. \
40
+ The command is subject to breaking changes and may be removed \
41
+ without notice in any release."
42
+ );
43
+
38
44
  macro_rules! execute_subcommand {
39
45
  ($name:ident) => {{
40
46
  if let Some(sub_matches) =
@@ -1,15 +1,15 @@
1
1
  use std::borrow::Cow;
2
2
  #[cfg(not(windows))]
3
3
  use std::fs;
4
- use std::io::Write;
4
+ use std::io::Write as _;
5
5
  #[cfg(not(windows))]
6
- use std::os::unix::fs::PermissionsExt;
6
+ use std::os::unix::fs::PermissionsExt as _;
7
7
  use std::path::Path;
8
8
 
9
9
  use anyhow::{anyhow, bail, Context as _, Result};
10
10
  use clap::{Arg, ArgAction, ArgMatches, Command};
11
11
  use indicatif::ProgressStyle;
12
- use itertools::Itertools;
12
+ use itertools::Itertools as _;
13
13
  use log::{debug, info, warn};
14
14
  use sha1_smol::Digest;
15
15
  use symbolic::common::ByteView;
@@ -18,17 +18,23 @@ use zip::{DateTime, ZipWriter};
18
18
 
19
19
  use crate::api::{Api, AuthenticatedApi, ChunkUploadCapability};
20
20
  use crate::config::Config;
21
- use crate::utils::args::ArgExt;
21
+ use crate::utils::args::ArgExt as _;
22
22
  use crate::utils::chunks::{upload_chunks, Chunk, ASSEMBLE_POLL_INTERVAL};
23
23
  use crate::utils::fs::get_sha1_checksums;
24
+ #[cfg(target_os = "macos")]
25
+ use crate::utils::fs::TempDir;
24
26
  use crate::utils::fs::TempFile;
25
27
  #[cfg(target_os = "macos")]
26
- use crate::utils::mobile_app::handle_asset_catalogs;
28
+ use crate::utils::mobile_app::{handle_asset_catalogs, ipa_to_xcarchive, is_ipa_file};
27
29
  use crate::utils::mobile_app::{is_aab_file, is_apk_file, is_apple_app, is_zip_file};
28
30
  use crate::utils::progress::ProgressBar;
29
31
  use crate::utils::vcs;
30
32
 
31
33
  pub fn make_command(command: Command) -> Command {
34
+ #[cfg(target_os = "macos")]
35
+ const HELP_TEXT: &str = "The path to the mobile app files to upload. Supported files include Apk, Aab, XCArchive, and IPA.";
36
+ #[cfg(not(target_os = "macos"))]
37
+ const HELP_TEXT: &str = "The path to the mobile app files to upload. Supported files include Apk, Aab, and XCArchive.";
32
38
  command
33
39
  .about("[EXPERIMENTAL] Upload mobile app files to a project.")
34
40
  .org_arg()
@@ -36,7 +42,7 @@ pub fn make_command(command: Command) -> Command {
36
42
  .arg(
37
43
  Arg::new("paths")
38
44
  .value_name("PATH")
39
- .help("The path to the mobile app files to upload. Supported files include Apk, Aab or XCArchive.")
45
+ .help(HELP_TEXT)
40
46
  .num_args(1..)
41
47
  .action(ArgAction::Append)
42
48
  .required(true),
@@ -95,12 +101,7 @@ pub fn execute(matches: &ArgMatches) -> Result<()> {
95
101
 
96
102
  let normalized_zip = if path.is_file() {
97
103
  debug!("Normalizing file: {}", path.display());
98
- normalize_file(path, &byteview).with_context(|| {
99
- format!(
100
- "Failed to generate uploadable bundle for file {}",
101
- path.display()
102
- )
103
- })?
104
+ handle_file(path, &byteview)?
104
105
  } else if path.is_dir() {
105
106
  debug!("Normalizing directory: {}", path.display());
106
107
  normalize_directory(path).with_context(|| {
@@ -178,6 +179,25 @@ pub fn execute(matches: &ArgMatches) -> Result<()> {
178
179
  Ok(())
179
180
  }
180
181
 
182
+ fn handle_file(path: &Path, byteview: &ByteView) -> Result<TempFile> {
183
+ // Handle IPA files by converting them to XCArchive
184
+ #[cfg(target_os = "macos")]
185
+ if is_zip_file(byteview) && is_ipa_file(byteview)? {
186
+ debug!("Converting IPA file to XCArchive structure");
187
+ let temp_dir = TempDir::create()?;
188
+ return ipa_to_xcarchive(path, byteview, &temp_dir)
189
+ .and_then(|path| normalize_directory(&path))
190
+ .with_context(|| format!("Failed to process IPA file {}", path.display()));
191
+ }
192
+
193
+ normalize_file(path, byteview).with_context(|| {
194
+ format!(
195
+ "Failed to generate uploadable bundle for file {}",
196
+ path.display()
197
+ )
198
+ })
199
+ }
200
+
181
201
  fn validate_is_mobile_app(path: &Path, bytes: &[u8]) -> Result<()> {
182
202
  debug!("Validating mobile app format for: {}", path.display());
183
203
 
@@ -186,9 +206,13 @@ fn validate_is_mobile_app(path: &Path, bytes: &[u8]) -> Result<()> {
186
206
  return Ok(());
187
207
  }
188
208
 
189
- // Check if the file is a zip file (then AAB or APK)
209
+ // Check if the file is a zip file (then AAB, APK, or IPA)
190
210
  if is_zip_file(bytes) {
211
+ #[cfg(target_os = "macos")]
212
+ debug!("File is a zip, checking for AAB/APK/IPA format");
213
+ #[cfg(not(target_os = "macos"))]
191
214
  debug!("File is a zip, checking for AAB/APK format");
215
+
192
216
  if is_aab_file(bytes)? {
193
217
  debug!("Detected AAB file");
194
218
  return Ok(());
@@ -198,11 +222,22 @@ fn validate_is_mobile_app(path: &Path, bytes: &[u8]) -> Result<()> {
198
222
  debug!("Detected APK file");
199
223
  return Ok(());
200
224
  }
225
+
226
+ #[cfg(target_os = "macos")]
227
+ if is_ipa_file(bytes)? {
228
+ debug!("Detected IPA file");
229
+ return Ok(());
230
+ }
201
231
  }
202
232
 
203
233
  debug!("File format validation failed");
234
+ #[cfg(target_os = "macos")]
235
+ let format_list = "APK, AAB, XCArchive, or IPA";
236
+ #[cfg(not(target_os = "macos"))]
237
+ let format_list = "APK, AAB, or XCArchive";
238
+
204
239
  Err(anyhow!(
205
- "File is not a recognized mobile app format (APK, AAB, or XCArchive): {}",
240
+ "File is not a recognized mobile app format ({format_list}): {}",
206
241
  path.display()
207
242
  ))
208
243
  }
@@ -3,7 +3,7 @@ use clap::{ArgMatches, Command};
3
3
 
4
4
  use crate::api::Api;
5
5
  use crate::config::Config;
6
- use crate::utils::args::ArgExt;
6
+ use crate::utils::args::ArgExt as _;
7
7
  use crate::utils::formatting::Table;
8
8
 
9
9
  pub fn make_command(command: Command) -> Command {
@@ -117,10 +117,9 @@ fn run_program(args: Vec<&String>, monitor_slug: &str) -> (bool, Option<i32>, Du
117
117
  Ok(status) => (status.success(), status.code()),
118
118
  Err(err) => {
119
119
  eprintln!(
120
- "{} could not invoke program '{}': {}",
120
+ "{} could not invoke program '{}': {err}",
121
121
  style("error").red(),
122
- args[0],
123
- err
122
+ args[0]
124
123
  );
125
124
  (false, None)
126
125
  }
@@ -1,7 +1,7 @@
1
1
  use anyhow::Result;
2
2
  use clap::{ArgMatches, Command};
3
3
 
4
- use crate::utils::args::ArgExt;
4
+ use crate::utils::args::ArgExt as _;
5
5
 
6
6
  pub mod list;
7
7
 
@@ -14,7 +14,7 @@ use crate::api::Api;
14
14
  use crate::config::Config;
15
15
  use crate::constants::DEFAULT_MAX_WAIT;
16
16
  use crate::utils::appcenter::{get_appcenter_package, get_react_native_appcenter_release};
17
- use crate::utils::args::{validate_distribution, ArgExt};
17
+ use crate::utils::args::{validate_distribution, ArgExt as _};
18
18
  use crate::utils::file_search::ReleaseFileSearch;
19
19
  use crate::utils::file_upload::UploadContext;
20
20
  use crate::utils::sourcemaps::SourceMapProcessor;
@@ -209,8 +209,8 @@ pub fn execute(matches: &ArgMatches) -> Result<()> {
209
209
  Some(dists) => {
210
210
  for dist in dists {
211
211
  println!(
212
- "Uploading sourcemaps for release {} distribution {}",
213
- &release, dist
212
+ "Uploading sourcemaps for release {} distribution {dist}",
213
+ &release
214
214
  );
215
215
 
216
216
  processor.upload(&UploadContext {
@@ -12,7 +12,7 @@ use sourcemap::ram_bundle::RamBundle;
12
12
  use crate::api::Api;
13
13
  use crate::config::Config;
14
14
  use crate::constants::DEFAULT_MAX_WAIT;
15
- use crate::utils::args::{validate_distribution, ArgExt};
15
+ use crate::utils::args::{validate_distribution, ArgExt as _};
16
16
  use crate::utils::file_search::ReleaseFileSearch;
17
17
  use crate::utils::file_upload::{SourceFile, UploadContext};
18
18
  use crate::utils::sourcemaps::SourceMapProcessor;
@@ -18,7 +18,7 @@ use serde_json::Value;
18
18
  use crate::api::Api;
19
19
  use crate::config::Config;
20
20
  use crate::constants::DEFAULT_MAX_WAIT;
21
- use crate::utils::args::{validate_distribution, ArgExt};
21
+ use crate::utils::args::{validate_distribution, ArgExt as _};
22
22
  use crate::utils::file_search::ReleaseFileSearch;
23
23
  use crate::utils::file_upload::UploadContext;
24
24
  use crate::utils::fs::TempFile;
@@ -361,7 +361,7 @@ pub fn execute(matches: &ArgMatches) -> Result<()> {
361
361
  // Successfully discovered and parsed Info.plist
362
362
  let dist_string = plist.build().to_owned();
363
363
  let release_string =
364
- format!("{}@{}+{}", plist.bundle_id(), plist.version(), dist_string);
364
+ format!("{}@{}+{dist_string}", plist.bundle_id(), plist.version());
365
365
  info!("Parse result from Info.plist: {:?}", &plist);
366
366
  (Some(dist_string), Some(release_string))
367
367
  }
@@ -3,7 +3,7 @@ use clap::{ArgMatches, Command};
3
3
 
4
4
  use crate::api::{Api, ReleaseStatus, UpdatedRelease};
5
5
  use crate::config::Config;
6
- use crate::utils::args::ArgExt;
6
+ use crate::utils::args::ArgExt as _;
7
7
 
8
8
  pub fn make_command(command: Command) -> Command {
9
9
  command
@@ -3,7 +3,7 @@ use clap::{ArgMatches, Command};
3
3
 
4
4
  use crate::api::Api;
5
5
  use crate::config::Config;
6
- use crate::utils::args::ArgExt;
6
+ use crate::utils::args::ArgExt as _;
7
7
 
8
8
  pub fn make_command(command: Command) -> Command {
9
9
  command
@@ -4,7 +4,7 @@ use clap::{Arg, ArgMatches, Command};
4
4
 
5
5
  use crate::api::{Api, UpdatedRelease};
6
6
  use crate::config::Config;
7
- use crate::utils::args::{get_timestamp, ArgExt};
7
+ use crate::utils::args::{get_timestamp, ArgExt as _};
8
8
 
9
9
  pub fn make_command(command: Command) -> Command {
10
10
  command
@@ -3,7 +3,7 @@ use clap::{Arg, ArgAction, ArgMatches, Command};
3
3
 
4
4
  use crate::api::Api;
5
5
  use crate::config::Config;
6
- use crate::utils::args::ArgExt;
6
+ use crate::utils::args::ArgExt as _;
7
7
  use crate::utils::formatting::Table;
8
8
  use crate::utils::logging::is_quiet_mode;
9
9
  use crate::utils::system::QuietExit;
@@ -1,7 +1,7 @@
1
1
  use anyhow::Result;
2
2
  use clap::{ArgMatches, Command};
3
3
 
4
- use crate::utils::args::ArgExt;
4
+ use crate::utils::args::ArgExt as _;
5
5
 
6
6
  pub mod archive;
7
7
  pub mod delete;
@@ -4,7 +4,7 @@ use clap::{Arg, ArgAction, ArgMatches, Command};
4
4
 
5
5
  use crate::api::{Api, NewRelease};
6
6
  use crate::config::Config;
7
- use crate::utils::args::ArgExt;
7
+ use crate::utils::args::ArgExt as _;
8
8
 
9
9
  pub fn make_command(command: Command) -> Command {
10
10
  command
@@ -3,7 +3,7 @@ use clap::{ArgMatches, Command};
3
3
 
4
4
  use crate::api::{Api, ReleaseStatus, UpdatedRelease};
5
5
  use crate::config::Config;
6
- use crate::utils::args::ArgExt;
6
+ use crate::utils::args::ArgExt as _;
7
7
 
8
8
  pub fn make_command(command: Command) -> Command {
9
9
  command
@@ -7,7 +7,7 @@ use regex::Regex;
7
7
 
8
8
  use crate::api::{Api, NewRelease, NoneReleaseInfo, OptionalReleaseInfo, UpdatedRelease};
9
9
  use crate::config::Config;
10
- use crate::utils::args::ArgExt;
10
+ use crate::utils::args::ArgExt as _;
11
11
  use crate::utils::formatting::Table;
12
12
  use crate::utils::vcs::{
13
13
  find_heads, generate_patch_set, get_commits_from_git, get_repo_from_remote, CommitSpec,
@@ -1,7 +1,7 @@
1
1
  use anyhow::Result;
2
2
  use clap::{ArgMatches, Command};
3
3
 
4
- use crate::utils::args::ArgExt;
4
+ use crate::utils::args::ArgExt as _;
5
5
 
6
6
  pub mod list;
7
7
 
@@ -7,7 +7,7 @@ use anyhow::{anyhow, format_err, Result};
7
7
  use chrono::{DateTime, Utc};
8
8
  use clap::{Arg, ArgAction, ArgMatches, Command};
9
9
  use glob::{glob_with, MatchOptions};
10
- use itertools::Itertools;
10
+ use itertools::Itertools as _;
11
11
  use log::warn;
12
12
  use sentry::protocol::{Event, Level, LogEntry, User};
13
13
  use sentry::types::Uuid;
@@ -190,7 +190,7 @@ pub fn execute(matches: &ArgMatches) -> Result<()> {
190
190
  let raw_event = std::fs::read(&path)?;
191
191
 
192
192
  let id = if raw {
193
- use std::io::Write;
193
+ use std::io::Write as _;
194
194
 
195
195
  // Its a bit unfortunate that we still need to parse the whole JSON,
196
196
  // but envelopes need an `event_id`, which we also want to report.
@@ -213,7 +213,7 @@ pub fn execute(matches: &ArgMatches) -> Result<()> {
213
213
  send_raw_event(event)?
214
214
  };
215
215
 
216
- println!("Event from file {} dispatched: {}", path.display(), id);
216
+ println!("Event from file {} dispatched: {id}", path.display());
217
217
  }
218
218
 
219
219
  return Ok(());
@@ -1,5 +1,5 @@
1
1
  use super::common_args::FloatValueMetricArgs;
2
- use crate::{api::envelopes_api::EnvelopesApi, utils::metrics::DefaultTags};
2
+ use crate::{api::envelopes_api::EnvelopesApi, utils::metrics::DefaultTags as _};
3
3
  use anyhow::Result;
4
4
  use sentry::metrics::Metric;
5
5