sentry-cli 3.0.2__tar.gz → 3.1.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.
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/Cargo.lock +10 -16
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/Cargo.toml +6 -6
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/PKG-INFO +11 -7
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/README.md +10 -6
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/sentry_cli.egg-info/PKG-INFO +11 -7
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/sentry_cli.egg-info/SOURCES.txt +1 -1
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/api/data_types/chunking/mod.rs +1 -1
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/api/data_types/chunking/upload/mod.rs +0 -2
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/api/data_types/chunking/upload/options.rs +1 -10
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/api/mod.rs +12 -4
- sentry_cli-3.1.0/src/api/serialization.rs +128 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/commands/build/upload.rs +2 -13
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/commands/dart_symbol_map/mod.rs +2 -1
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/commands/dart_symbol_map/upload.rs +1 -6
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/commands/releases/list.rs +2 -1
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/commands/upload_proguard.rs +1 -7
- sentry_cli-3.0.2/src/api/data_types/chunking/upload/capability.rs +0 -30
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/LICENSE +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/MANIFEST.in +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/apple-catalog-parsing/Cargo.toml +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/apple-catalog-parsing/build.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/apple-catalog-parsing/native/swift/AssetCatalogParser/Package.swift +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/apple-catalog-parsing/native/swift/AssetCatalogParser/Sources/AssetCatalogParser/AssetCatalogReader.swift +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/apple-catalog-parsing/native/swift/AssetCatalogParser/Sources/ObjcSupport/include/safeValueForKey.h +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/apple-catalog-parsing/native/swift/AssetCatalogParser/Sources/ObjcSupport/safeValueForKey.m +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/apple-catalog-parsing/native/swift/AssetCatalogParser/Tests/AssetCatalogParserTests/AssetCatalogParserTests.swift +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/apple-catalog-parsing/native/swift/AssetCatalogParser/Tests/AssetCatalogParserTests/Resources/test.xcarchive/Info.plist +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/apple-catalog-parsing/native/swift/AssetCatalogParser/Tests/AssetCatalogParserTests/Resources/test.xcarchive/Products/Applications/DemoApp.app/Assets.car +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/apple-catalog-parsing/src/asset_catalog.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/apple-catalog-parsing/src/lib.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/build.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/pyproject.toml +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/sentry_cli.egg-info/dependency_links.txt +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/sentry_cli.egg-info/top_level.txt +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/setup.cfg +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/setup.py +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/api/connection_manager.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/api/data_types/chunking/artifact.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/api/data_types/chunking/build.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/api/data_types/chunking/compression.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/api/data_types/chunking/dif.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/api/data_types/chunking/file_state.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/api/data_types/chunking/hash_algorithm.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/api/data_types/deploy.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/api/data_types/mod.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/api/encoding.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/api/envelopes_api.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/api/errors/api_error.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/api/errors/mod.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/api/errors/sentry_error.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/api/pagination.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/bashsupport.sh +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/commands/bash_hook.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/commands/build/mod.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/commands/debug_files/bundle_jvm.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/commands/debug_files/bundle_sources.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/commands/debug_files/check.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/commands/debug_files/find.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/commands/debug_files/mod.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/commands/debug_files/print_sources.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/commands/debug_files/upload.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/commands/deploys/list.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/commands/deploys/mod.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/commands/deploys/new.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/commands/derive_parser.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/commands/events/list.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/commands/events/mod.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/commands/info.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/commands/issues/list.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/commands/issues/mod.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/commands/issues/mute.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/commands/issues/resolve.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/commands/issues/unresolve.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/commands/login.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/commands/logs/list.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/commands/logs/mod.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/commands/mod.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/commands/monitors/list.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/commands/monitors/mod.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/commands/monitors/run.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/commands/organizations/list.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/commands/organizations/mod.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/commands/projects/list.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/commands/projects/mod.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/commands/react_native/gradle.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/commands/react_native/mod.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/commands/react_native/xcode.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/commands/releases/archive.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/commands/releases/delete.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/commands/releases/finalize.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/commands/releases/info.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/commands/releases/mod.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/commands/releases/new.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/commands/releases/propose_version.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/commands/releases/restore.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/commands/releases/set_commits.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/commands/repos/list.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/commands/repos/mod.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/commands/send_envelope.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/commands/send_event.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/commands/send_metric/common_args.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/commands/send_metric/increment.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/commands/send_metric/mod.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/commands/send_metric/set.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/commands/sourcemaps/inject.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/commands/sourcemaps/mod.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/commands/sourcemaps/resolve.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/commands/sourcemaps/upload.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/commands/uninstall.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/commands/update.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/commands/upload_dif.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/commands/upload_dsym.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/config.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/constants.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/main.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/utils/android.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/utils/args.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/utils/auth_token/auth_token_impl.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/utils/auth_token/error.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/utils/auth_token/mod.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/utils/auth_token/org_auth_token.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/utils/auth_token/redacting.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/utils/auth_token/test.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/utils/auth_token/user_auth_token.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/utils/build/apple.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/utils/build/mod.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/utils/build/normalize.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/utils/build/validation.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/utils/chunks/mod.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/utils/chunks/options.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/utils/chunks/types.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/utils/chunks/upload.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/utils/ci.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/utils/cordova.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/utils/dif.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/utils/dif_upload/error.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/utils/dif_upload/mod.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/utils/event.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/utils/file_search.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/utils/file_upload.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/utils/formatting.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/utils/fs.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/utils/http.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/utils/logging.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/utils/mod.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/utils/non_empty.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/utils/progress.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/utils/proguard/mapping.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/utils/proguard/mod.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/utils/proguard/upload.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/utils/releases.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/utils/retry.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/utils/snapshots/sentry_cli__utils__vcs__tests__generate_patch_default_twenty.snap +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/utils/snapshots/sentry_cli__utils__vcs__tests__generate_patch_ignore_missing.snap +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/utils/snapshots/sentry_cli__utils__vcs__tests__generate_patch_set_base.snap +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/utils/snapshots/sentry_cli__utils__vcs__tests__generate_patch_set_previous_commit.snap +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/utils/snapshots/sentry_cli__utils__vcs__tests__get_commits_from_git.snap +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/utils/source_bundle.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/utils/sourcemaps/inject.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/utils/sourcemaps.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/utils/system.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/utils/ui.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/utils/update.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/utils/value_parsers.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/utils/vcs.rs +0 -0
- {sentry_cli-3.0.2 → sentry_cli-3.1.0}/src/utils/xcode.rs +0 -0
|
@@ -893,9 +893,9 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
|
|
|
893
893
|
|
|
894
894
|
[[package]]
|
|
895
895
|
name = "foldhash"
|
|
896
|
-
version = "0.
|
|
896
|
+
version = "0.2.0"
|
|
897
897
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
898
|
-
checksum = "
|
|
898
|
+
checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb"
|
|
899
899
|
|
|
900
900
|
[[package]]
|
|
901
901
|
name = "form_urlencoded"
|
|
@@ -1147,21 +1147,15 @@ dependencies = [
|
|
|
1147
1147
|
|
|
1148
1148
|
[[package]]
|
|
1149
1149
|
name = "hashbrown"
|
|
1150
|
-
version = "0.
|
|
1150
|
+
version = "0.16.0"
|
|
1151
1151
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1152
|
-
checksum = "
|
|
1152
|
+
checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d"
|
|
1153
1153
|
dependencies = [
|
|
1154
1154
|
"allocator-api2",
|
|
1155
1155
|
"equivalent",
|
|
1156
1156
|
"foldhash",
|
|
1157
1157
|
]
|
|
1158
1158
|
|
|
1159
|
-
[[package]]
|
|
1160
|
-
name = "hashbrown"
|
|
1161
|
-
version = "0.16.0"
|
|
1162
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1163
|
-
checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d"
|
|
1164
|
-
|
|
1165
1159
|
[[package]]
|
|
1166
1160
|
name = "heck"
|
|
1167
1161
|
version = "0.5.0"
|
|
@@ -1692,11 +1686,11 @@ checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432"
|
|
|
1692
1686
|
|
|
1693
1687
|
[[package]]
|
|
1694
1688
|
name = "lru"
|
|
1695
|
-
version = "0.16.
|
|
1689
|
+
version = "0.16.3"
|
|
1696
1690
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1697
|
-
checksum = "
|
|
1691
|
+
checksum = "a1dc47f592c06f33f8e3aea9591776ec7c9f9e4124778ff8a3c3b87159f7e593"
|
|
1698
1692
|
dependencies = [
|
|
1699
|
-
"hashbrown 0.
|
|
1693
|
+
"hashbrown 0.16.0",
|
|
1700
1694
|
]
|
|
1701
1695
|
|
|
1702
1696
|
[[package]]
|
|
@@ -1908,9 +1902,9 @@ checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e"
|
|
|
1908
1902
|
|
|
1909
1903
|
[[package]]
|
|
1910
1904
|
name = "openssl-src"
|
|
1911
|
-
version = "300.5.
|
|
1905
|
+
version = "300.5.4+3.5.4"
|
|
1912
1906
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1913
|
-
checksum = "
|
|
1907
|
+
checksum = "a507b3792995dae9b0df8a1c1e3771e8418b7c2d9f0baeba32e6fe8b06c7cb72"
|
|
1914
1908
|
dependencies = [
|
|
1915
1909
|
"cc",
|
|
1916
1910
|
]
|
|
@@ -2674,7 +2668,7 @@ dependencies = [
|
|
|
2674
2668
|
|
|
2675
2669
|
[[package]]
|
|
2676
2670
|
name = "sentry-cli"
|
|
2677
|
-
version = "3.0
|
|
2671
|
+
version = "3.1.0"
|
|
2678
2672
|
dependencies = [
|
|
2679
2673
|
"anyhow",
|
|
2680
2674
|
"anylog",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
[package]
|
|
2
2
|
build = "build.rs"
|
|
3
3
|
name = "sentry-cli"
|
|
4
|
-
version = "3.0
|
|
4
|
+
version = "3.1.0"
|
|
5
5
|
edition = "2021"
|
|
6
6
|
rust-version = "1.91"
|
|
7
7
|
|
|
@@ -24,7 +24,7 @@ clap = { version = "4.1.6", default-features = false, features = [
|
|
|
24
24
|
] }
|
|
25
25
|
clap_complete = "4.4.3"
|
|
26
26
|
console = "0.15.5"
|
|
27
|
-
curl =
|
|
27
|
+
curl = "0.4.46"
|
|
28
28
|
dirs = "4.0.0"
|
|
29
29
|
dotenvy = "0.15.7"
|
|
30
30
|
elementtree = "1.2.3"
|
|
@@ -75,7 +75,7 @@ data-encoding = "2.3.3"
|
|
|
75
75
|
magic_string = "0.3.4"
|
|
76
76
|
chrono-tz = "0.8.4"
|
|
77
77
|
secrecy = "0.8.0"
|
|
78
|
-
lru = "0.16.
|
|
78
|
+
lru = "0.16.3"
|
|
79
79
|
backon = { version = "1.5.2", features = ["std", "std-blocking-sleep"] }
|
|
80
80
|
|
|
81
81
|
[dev-dependencies]
|
|
@@ -127,10 +127,10 @@ openssl-probe = "0.1.5"
|
|
|
127
127
|
[target."cfg(windows)".dependencies]
|
|
128
128
|
windows-sys = { version = "0.59.0", features = ["Win32_Storage_FileSystem"] }
|
|
129
129
|
|
|
130
|
-
# Use static curl/SSL on
|
|
131
|
-
# We link dynamically on
|
|
130
|
+
# Use static curl/SSL on non-macOS platforms
|
|
131
|
+
# We link dynamically on macOS; that way we can support self-signed certificates
|
|
132
132
|
# trusted in the macOS keychain.
|
|
133
|
-
[target."cfg(not(
|
|
133
|
+
[target."cfg(not(target_os = \"macos\"))".dependencies]
|
|
134
134
|
curl = { version = "0.4.46", features = ["static-curl", "static-ssl"] }
|
|
135
135
|
|
|
136
136
|
# We optimize the release build for size.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: sentry_cli
|
|
3
|
-
Version: 3.0
|
|
3
|
+
Version: 3.1.0
|
|
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
|
|
@@ -37,21 +37,25 @@ Please refer to [Sentry CLI's documentation page](https://docs.sentry.io/cli/).
|
|
|
37
37
|
|
|
38
38
|
## Compatibility
|
|
39
39
|
|
|
40
|
-
Sentry CLI officially supports [Sentry SaaS](https://sentry.io/) and [Sentry Self-Hosted](https://github.com/getsentry/self-hosted) versions
|
|
40
|
+
Sentry CLI officially supports [Sentry SaaS](https://sentry.io/) and [Sentry Self-Hosted](https://github.com/getsentry/self-hosted) versions 24.11.1 and above.
|
|
41
41
|
|
|
42
|
-
|
|
42
|
+
<details>
|
|
43
43
|
|
|
44
|
-
|
|
44
|
+
<summary><h3>Self-Hosted Sentry</h3></summary>
|
|
45
45
|
|
|
46
|
-
For
|
|
46
|
+
For self-hosted installations, only those features which were available in Sentry CLI at the time of the release of the given self-hosted version are supported, as new features may require server-side support. Additionally, some features, like the `sentry-cli build` commands, are restricted to Sentry SaaS.
|
|
47
|
+
|
|
48
|
+
Users who are using Sentry Self-Hosted versions older than 24.11.1 are encouraged to upgrade their Sentry Self-Hosted installations before using Sentry CLI versions 3.0.0 and above. For users who cannot upgrade, please use the version indicated in the table below.
|
|
47
49
|
|
|
48
50
|
| **Sentry Self-Hosted Version** | **Newest Compatible Sentry CLI Version** |
|
|
49
51
|
| ------------------------------ | --------------------------------------------------------------------- |
|
|
50
|
-
| ≥
|
|
51
|
-
| <
|
|
52
|
+
| ≥ 24.11.1 | [latest](https://github.com/getsentry/sentry-cli/releases/latest) |
|
|
53
|
+
| < 24.11.1 | [2.58.4](https://github.com/getsentry/sentry-cli/releases/tag/2.58.4) |
|
|
52
54
|
|
|
53
55
|
Note that we can only provide support for officially-supported Sentry Self-Hosted versions. We will not backport fixes for older Sentry CLI versions, even if they should be compatible with your self-hosted version.
|
|
54
56
|
|
|
57
|
+
</details>
|
|
58
|
+
|
|
55
59
|
## Versioning
|
|
56
60
|
|
|
57
61
|
Sentry CLI follows semantic versioning, according to [this versioning policy](VERSIONING.md).
|
|
@@ -20,21 +20,25 @@ Please refer to [Sentry CLI's documentation page](https://docs.sentry.io/cli/).
|
|
|
20
20
|
|
|
21
21
|
## Compatibility
|
|
22
22
|
|
|
23
|
-
Sentry CLI officially supports [Sentry SaaS](https://sentry.io/) and [Sentry Self-Hosted](https://github.com/getsentry/self-hosted) versions
|
|
23
|
+
Sentry CLI officially supports [Sentry SaaS](https://sentry.io/) and [Sentry Self-Hosted](https://github.com/getsentry/self-hosted) versions 24.11.1 and above.
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
<details>
|
|
26
26
|
|
|
27
|
-
|
|
27
|
+
<summary><h3>Self-Hosted Sentry</h3></summary>
|
|
28
28
|
|
|
29
|
-
For
|
|
29
|
+
For self-hosted installations, only those features which were available in Sentry CLI at the time of the release of the given self-hosted version are supported, as new features may require server-side support. Additionally, some features, like the `sentry-cli build` commands, are restricted to Sentry SaaS.
|
|
30
|
+
|
|
31
|
+
Users who are using Sentry Self-Hosted versions older than 24.11.1 are encouraged to upgrade their Sentry Self-Hosted installations before using Sentry CLI versions 3.0.0 and above. For users who cannot upgrade, please use the version indicated in the table below.
|
|
30
32
|
|
|
31
33
|
| **Sentry Self-Hosted Version** | **Newest Compatible Sentry CLI Version** |
|
|
32
34
|
| ------------------------------ | --------------------------------------------------------------------- |
|
|
33
|
-
| ≥
|
|
34
|
-
| <
|
|
35
|
+
| ≥ 24.11.1 | [latest](https://github.com/getsentry/sentry-cli/releases/latest) |
|
|
36
|
+
| < 24.11.1 | [2.58.4](https://github.com/getsentry/sentry-cli/releases/tag/2.58.4) |
|
|
35
37
|
|
|
36
38
|
Note that we can only provide support for officially-supported Sentry Self-Hosted versions. We will not backport fixes for older Sentry CLI versions, even if they should be compatible with your self-hosted version.
|
|
37
39
|
|
|
40
|
+
</details>
|
|
41
|
+
|
|
38
42
|
## Versioning
|
|
39
43
|
|
|
40
44
|
Sentry CLI follows semantic versioning, according to [this versioning policy](VERSIONING.md).
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: sentry_cli
|
|
3
|
-
Version: 3.0
|
|
3
|
+
Version: 3.1.0
|
|
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
|
|
@@ -37,21 +37,25 @@ Please refer to [Sentry CLI's documentation page](https://docs.sentry.io/cli/).
|
|
|
37
37
|
|
|
38
38
|
## Compatibility
|
|
39
39
|
|
|
40
|
-
Sentry CLI officially supports [Sentry SaaS](https://sentry.io/) and [Sentry Self-Hosted](https://github.com/getsentry/self-hosted) versions
|
|
40
|
+
Sentry CLI officially supports [Sentry SaaS](https://sentry.io/) and [Sentry Self-Hosted](https://github.com/getsentry/self-hosted) versions 24.11.1 and above.
|
|
41
41
|
|
|
42
|
-
|
|
42
|
+
<details>
|
|
43
43
|
|
|
44
|
-
|
|
44
|
+
<summary><h3>Self-Hosted Sentry</h3></summary>
|
|
45
45
|
|
|
46
|
-
For
|
|
46
|
+
For self-hosted installations, only those features which were available in Sentry CLI at the time of the release of the given self-hosted version are supported, as new features may require server-side support. Additionally, some features, like the `sentry-cli build` commands, are restricted to Sentry SaaS.
|
|
47
|
+
|
|
48
|
+
Users who are using Sentry Self-Hosted versions older than 24.11.1 are encouraged to upgrade their Sentry Self-Hosted installations before using Sentry CLI versions 3.0.0 and above. For users who cannot upgrade, please use the version indicated in the table below.
|
|
47
49
|
|
|
48
50
|
| **Sentry Self-Hosted Version** | **Newest Compatible Sentry CLI Version** |
|
|
49
51
|
| ------------------------------ | --------------------------------------------------------------------- |
|
|
50
|
-
| ≥
|
|
51
|
-
| <
|
|
52
|
+
| ≥ 24.11.1 | [latest](https://github.com/getsentry/sentry-cli/releases/latest) |
|
|
53
|
+
| < 24.11.1 | [2.58.4](https://github.com/getsentry/sentry-cli/releases/tag/2.58.4) |
|
|
52
54
|
|
|
53
55
|
Note that we can only provide support for officially-supported Sentry Self-Hosted versions. We will not backport fixes for older Sentry CLI versions, even if they should be compatible with your self-hosted version.
|
|
54
56
|
|
|
57
|
+
</details>
|
|
58
|
+
|
|
55
59
|
## Versioning
|
|
56
60
|
|
|
57
61
|
Sentry CLI follows semantic versioning, according to [this versioning policy](VERSIONING.md).
|
|
@@ -31,6 +31,7 @@ src/api/encoding.rs
|
|
|
31
31
|
src/api/envelopes_api.rs
|
|
32
32
|
src/api/mod.rs
|
|
33
33
|
src/api/pagination.rs
|
|
34
|
+
src/api/serialization.rs
|
|
34
35
|
src/api/data_types/deploy.rs
|
|
35
36
|
src/api/data_types/mod.rs
|
|
36
37
|
src/api/data_types/chunking/artifact.rs
|
|
@@ -40,7 +41,6 @@ src/api/data_types/chunking/dif.rs
|
|
|
40
41
|
src/api/data_types/chunking/file_state.rs
|
|
41
42
|
src/api/data_types/chunking/hash_algorithm.rs
|
|
42
43
|
src/api/data_types/chunking/mod.rs
|
|
43
|
-
src/api/data_types/chunking/upload/capability.rs
|
|
44
44
|
src/api/data_types/chunking/upload/mod.rs
|
|
45
45
|
src/api/data_types/chunking/upload/options.rs
|
|
46
46
|
src/api/errors/api_error.rs
|
|
@@ -15,4 +15,4 @@ pub use self::compression::ChunkCompression;
|
|
|
15
15
|
pub use self::dif::{AssembleDifsRequest, AssembleDifsResponse, ChunkedDifRequest};
|
|
16
16
|
pub use self::file_state::ChunkedFileState;
|
|
17
17
|
pub use self::hash_algorithm::ChunkHashAlgorithm;
|
|
18
|
-
pub use self::upload::
|
|
18
|
+
pub use self::upload::ChunkServerOptions;
|
|
@@ -2,7 +2,7 @@ use std::num::NonZeroUsize;
|
|
|
2
2
|
|
|
3
3
|
use serde::Deserialize;
|
|
4
4
|
|
|
5
|
-
use super::{ChunkCompression, ChunkHashAlgorithm
|
|
5
|
+
use super::{ChunkCompression, ChunkHashAlgorithm};
|
|
6
6
|
|
|
7
7
|
/// Chunk upload options which are set by the Sentry server.
|
|
8
8
|
#[derive(Debug, Deserialize)]
|
|
@@ -23,13 +23,4 @@ pub struct ChunkServerOptions {
|
|
|
23
23
|
pub concurrency: u8,
|
|
24
24
|
#[serde(default)]
|
|
25
25
|
pub compression: Vec<ChunkCompression>,
|
|
26
|
-
#[serde(default)]
|
|
27
|
-
pub accept: Vec<ChunkUploadCapability>,
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
impl ChunkServerOptions {
|
|
31
|
-
/// Returns whether the given capability is accepted by the chunk upload endpoint.
|
|
32
|
-
pub fn supports(&self, capability: ChunkUploadCapability) -> bool {
|
|
33
|
-
self.accept.contains(&capability)
|
|
34
|
-
}
|
|
35
26
|
}
|
|
@@ -10,6 +10,7 @@ mod data_types;
|
|
|
10
10
|
mod encoding;
|
|
11
11
|
mod errors;
|
|
12
12
|
mod pagination;
|
|
13
|
+
mod serialization;
|
|
13
14
|
|
|
14
15
|
use std::borrow::Cow;
|
|
15
16
|
use std::cell::RefCell;
|
|
@@ -539,10 +540,16 @@ impl AuthenticatedApi<'_> {
|
|
|
539
540
|
|
|
540
541
|
/// Returns a list of releases for a given project. This is currently a
|
|
541
542
|
/// capped list by what the server deems an acceptable default limit.
|
|
542
|
-
pub fn list_releases(&self, org: &str) -> ApiResult<Vec<ReleaseInfo>> {
|
|
543
|
-
let
|
|
544
|
-
|
|
545
|
-
.
|
|
543
|
+
pub fn list_releases(&self, org: &str, project: Option<&str>) -> ApiResult<Vec<ReleaseInfo>> {
|
|
544
|
+
if let Some(project) = project {
|
|
545
|
+
let path = format!("/projects/{}/{}/releases/", PathArg(org), PathArg(project));
|
|
546
|
+
self.get(&path)?
|
|
547
|
+
.convert_rnf::<Vec<ReleaseInfo>>(ApiErrorKind::ProjectNotFound)
|
|
548
|
+
} else {
|
|
549
|
+
let path = format!("/organizations/{}/releases/", PathArg(org));
|
|
550
|
+
self.get(&path)?
|
|
551
|
+
.convert_rnf::<Vec<ReleaseInfo>>(ApiErrorKind::OrganizationNotFound)
|
|
552
|
+
}
|
|
546
553
|
}
|
|
547
554
|
|
|
548
555
|
/// Looks up a release commits and returns it. If it does not exist `None`
|
|
@@ -1530,6 +1537,7 @@ pub struct AuthInfo {
|
|
|
1530
1537
|
#[derive(Debug, Serialize, Default)]
|
|
1531
1538
|
pub struct NewRelease {
|
|
1532
1539
|
pub version: String,
|
|
1540
|
+
#[serde(serialize_with = "serialization::serialize_id_slug_list")]
|
|
1533
1541
|
pub projects: Vec<String>,
|
|
1534
1542
|
#[serde(skip_serializing_if = "Option::is_none")]
|
|
1535
1543
|
pub url: Option<String>,
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
//! This module contains some custom serialization logic for the API.
|
|
2
|
+
use std::sync::LazyLock;
|
|
3
|
+
|
|
4
|
+
use regex::Regex;
|
|
5
|
+
use serde::ser::SerializeSeq as _;
|
|
6
|
+
use serde::{Serialize, Serializer};
|
|
7
|
+
|
|
8
|
+
/// A container for either a numeric ID or an alphanumeric slug.
|
|
9
|
+
///
|
|
10
|
+
/// IDs are serialized as integers, while slugs are serialized as strings.
|
|
11
|
+
#[derive(Serialize)]
|
|
12
|
+
#[serde(untagged)]
|
|
13
|
+
enum IdSlug<'s> {
|
|
14
|
+
Id(i64),
|
|
15
|
+
Slug(&'s str),
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/// Serializes a sequence of strings, which may contain either numeric IDs or alphanumeric slugs.
|
|
19
|
+
///
|
|
20
|
+
/// We check each element in the sequence. If the element only contains digits and can be parsed as a 64-bit signed integer,
|
|
21
|
+
/// we consider the value to be an ID. Otherwise, we consider the value to be a slug.
|
|
22
|
+
///
|
|
23
|
+
/// IDs are serialized as integers, while slugs are serialized as strings.
|
|
24
|
+
pub fn serialize_id_slug_list<I, S>(list: I, serializer: S) -> Result<S::Ok, S::Error>
|
|
25
|
+
where
|
|
26
|
+
I: IntoIterator,
|
|
27
|
+
I::Item: AsRef<str>,
|
|
28
|
+
S: Serializer,
|
|
29
|
+
{
|
|
30
|
+
let mut seq = serializer.serialize_seq(None)?;
|
|
31
|
+
for item in list {
|
|
32
|
+
let item = item.as_ref();
|
|
33
|
+
let id_slug = IdSlug::from(&item);
|
|
34
|
+
seq.serialize_element(&id_slug)?;
|
|
35
|
+
}
|
|
36
|
+
seq.end()
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
impl<'a, S> From<&'a S> for IdSlug<'a>
|
|
40
|
+
where
|
|
41
|
+
S: AsRef<str>,
|
|
42
|
+
{
|
|
43
|
+
/// Convert from a string reference to an IdSlug.
|
|
44
|
+
///
|
|
45
|
+
/// If the string contains only digits and can be parsed as a 64-bit signed integer,
|
|
46
|
+
/// we consider the value to be an ID. Otherwise, we consider the value to be a slug.
|
|
47
|
+
fn from(value: &'a S) -> Self {
|
|
48
|
+
/// Project ID regex
|
|
49
|
+
///
|
|
50
|
+
/// Project IDs always contain only digits.
|
|
51
|
+
static PROJECT_ID_REGEX: LazyLock<Regex> =
|
|
52
|
+
LazyLock::new(|| Regex::new(r"^\d+$").expect("regex is valid"));
|
|
53
|
+
|
|
54
|
+
let value = value.as_ref();
|
|
55
|
+
|
|
56
|
+
PROJECT_ID_REGEX
|
|
57
|
+
.is_match(value)
|
|
58
|
+
.then(|| value.parse().ok().map(IdSlug::Id))
|
|
59
|
+
.flatten()
|
|
60
|
+
.unwrap_or(IdSlug::Slug(value))
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
#[cfg(test)]
|
|
65
|
+
mod tests {
|
|
66
|
+
use super::*;
|
|
67
|
+
|
|
68
|
+
/// A test struct which serializes with serialize_id_slug_list
|
|
69
|
+
#[derive(Serialize)]
|
|
70
|
+
struct IdSlugListSerializerTest<const N: usize> {
|
|
71
|
+
#[serde(serialize_with = "serialize_id_slug_list")]
|
|
72
|
+
value: [&'static str; N],
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
#[test]
|
|
76
|
+
fn test_serialize_id_slug_list_empty() {
|
|
77
|
+
let to_serialize = IdSlugListSerializerTest { value: [] };
|
|
78
|
+
|
|
79
|
+
let serialized = serde_json::to_string(&to_serialize).unwrap();
|
|
80
|
+
let expected = serde_json::json!({ "value": [] }).to_string();
|
|
81
|
+
|
|
82
|
+
assert_eq!(serialized, expected)
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
#[test]
|
|
86
|
+
fn test_serialize_id_slug_list_single_id() {
|
|
87
|
+
let to_serialize = IdSlugListSerializerTest { value: ["123"] };
|
|
88
|
+
|
|
89
|
+
let serialized = serde_json::to_string(&to_serialize).unwrap();
|
|
90
|
+
let expected = serde_json::json!({ "value": [123] }).to_string();
|
|
91
|
+
|
|
92
|
+
assert_eq!(serialized, expected)
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
#[test]
|
|
96
|
+
fn test_serialize_id_slug_list_single_slug() {
|
|
97
|
+
let to_serialize = IdSlugListSerializerTest { value: ["abc"] };
|
|
98
|
+
|
|
99
|
+
let serialized = serde_json::to_string(&to_serialize).unwrap();
|
|
100
|
+
let expected = serde_json::json!({ "value": ["abc"] }).to_string();
|
|
101
|
+
|
|
102
|
+
assert_eq!(serialized, expected)
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
#[test]
|
|
106
|
+
fn test_serialize_id_slug_list_multiple_ids_and_slugs() {
|
|
107
|
+
let to_serialize = IdSlugListSerializerTest {
|
|
108
|
+
value: ["123", "abc", "456", "whatever"],
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
let serialized = serde_json::to_string(&to_serialize).unwrap();
|
|
112
|
+
let expected = serde_json::json!({ "value": [123, "abc", 456, "whatever"] }).to_string();
|
|
113
|
+
|
|
114
|
+
assert_eq!(serialized, expected)
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/// Slugs of "-0" are possible. This test ensures that we serialize "-0" as a slug,
|
|
118
|
+
/// rather than as an ID 0.
|
|
119
|
+
#[test]
|
|
120
|
+
fn test_serialize_id_slug_minus_zero_edge_case() {
|
|
121
|
+
let to_serialize = IdSlugListSerializerTest { value: ["-0"] };
|
|
122
|
+
|
|
123
|
+
let serialized = serde_json::to_string(&to_serialize).unwrap();
|
|
124
|
+
let expected = serde_json::json!({ "value": ["-0"] }).to_string();
|
|
125
|
+
|
|
126
|
+
assert_eq!(serialized, expected)
|
|
127
|
+
}
|
|
128
|
+
}
|
|
@@ -11,9 +11,7 @@ use symbolic::common::ByteView;
|
|
|
11
11
|
use zip::write::SimpleFileOptions;
|
|
12
12
|
use zip::{DateTime, ZipWriter};
|
|
13
13
|
|
|
14
|
-
use crate::api::{
|
|
15
|
-
Api, AuthenticatedApi, ChunkUploadCapability, ChunkedBuildRequest, ChunkedFileState, VcsInfo,
|
|
16
|
-
};
|
|
14
|
+
use crate::api::{Api, AuthenticatedApi, ChunkedBuildRequest, ChunkedFileState, VcsInfo};
|
|
17
15
|
use crate::config::Config;
|
|
18
16
|
use crate::utils::args::ArgExt as _;
|
|
19
17
|
#[cfg(all(target_os = "macos", target_arch = "aarch64"))]
|
|
@@ -42,6 +40,7 @@ pub fn make_command(command: Command) -> Command {
|
|
|
42
40
|
"The path to the build to upload. Supported files include Apk, and Aab.";
|
|
43
41
|
command
|
|
44
42
|
.about("Upload builds to a project.")
|
|
43
|
+
.long_about("Upload builds to a project.\n\nThis feature only works with Sentry SaaS.")
|
|
45
44
|
.org_arg()
|
|
46
45
|
.project_arg(false)
|
|
47
46
|
.arg(
|
|
@@ -599,9 +598,6 @@ fn upload_file(
|
|
|
599
598
|
release_notes: Option<&str>,
|
|
600
599
|
vcs_info: &VcsInfo<'_>,
|
|
601
600
|
) -> Result<String> {
|
|
602
|
-
const SELF_HOSTED_ERROR_HINT: &str = "If you are using a self-hosted Sentry server, \
|
|
603
|
-
update to the latest version of Sentry to use the build upload command.";
|
|
604
|
-
|
|
605
601
|
debug!(
|
|
606
602
|
"Uploading file to organization: {org}, project: {project}, build_configuration: {}, vcs_info: {vcs_info:?}",
|
|
607
603
|
build_configuration.unwrap_or("unknown"),
|
|
@@ -609,13 +605,6 @@ fn upload_file(
|
|
|
609
605
|
|
|
610
606
|
let chunk_upload_options = api.get_chunk_upload_options(org)?;
|
|
611
607
|
|
|
612
|
-
if !chunk_upload_options.supports(ChunkUploadCapability::PreprodArtifacts) {
|
|
613
|
-
bail!(
|
|
614
|
-
"The Sentry server lacks support for receiving files uploaded \
|
|
615
|
-
with this command. {SELF_HOSTED_ERROR_HINT}"
|
|
616
|
-
);
|
|
617
|
-
}
|
|
618
|
-
|
|
619
608
|
let progress_style =
|
|
620
609
|
ProgressStyle::default_spinner().template("{spinner} Preparing for upload...");
|
|
621
610
|
let pb = ProgressBar::new_spinner();
|
|
@@ -7,7 +7,8 @@ const GROUP_ABOUT: &str = "Manage Dart/Flutter symbol maps for Sentry.";
|
|
|
7
7
|
const UPLOAD_ABOUT: &str =
|
|
8
8
|
"Upload a Dart/Flutter symbol map (dartsymbolmap) for deobfuscating Dart exception types.";
|
|
9
9
|
const UPLOAD_LONG_ABOUT: &str =
|
|
10
|
-
"Upload a Dart/Flutter symbol map (dartsymbolmap) for deobfuscating Dart exception types.{n}{n}Examples:{n} sentry-cli dart-symbol-map upload --org my-org --project my-proj path/to/dartsymbolmap.json path/to/debug/file{n}{n}The mapping must be a JSON array of strings with an even number of entries (pairs).{n}The debug file must contain exactly one Debug ID.
|
|
10
|
+
"Upload a Dart/Flutter symbol map (dartsymbolmap) for deobfuscating Dart exception types.{n}{n}Examples:{n} sentry-cli dart-symbol-map upload --org my-org --project my-proj path/to/dartsymbolmap.json path/to/debug/file{n}{n}The mapping must be a JSON array of strings with an even number of entries (pairs).{n}The debug file must contain exactly one Debug ID. {n}{n}\
|
|
11
|
+
This command is supported on Sentry SaaS and self-hosted versions ≥25.8.0.";
|
|
11
12
|
|
|
12
13
|
#[derive(Args)]
|
|
13
14
|
pub(super) struct DartSymbolMapArgs {
|
|
@@ -6,7 +6,7 @@ use std::path::Path;
|
|
|
6
6
|
use anyhow::{bail, Context as _, Result};
|
|
7
7
|
use clap::Args;
|
|
8
8
|
|
|
9
|
-
use crate::api::
|
|
9
|
+
use crate::api::Api;
|
|
10
10
|
use crate::config::Config;
|
|
11
11
|
use crate::constants::{DEFAULT_MAX_DIF_SIZE, DEFAULT_MAX_WAIT};
|
|
12
12
|
use crate::utils::chunks::{upload_chunked_objects, Assemblable, ChunkOptions, Chunked};
|
|
@@ -134,11 +134,6 @@ pub(super) fn execute(args: DartSymbolMapUploadArgs) -> Result<()> {
|
|
|
134
134
|
.authenticated()?
|
|
135
135
|
.get_chunk_upload_options(org)?;
|
|
136
136
|
|
|
137
|
-
if !chunk_upload_options.supports(ChunkUploadCapability::DartSymbolMap) {
|
|
138
|
-
bail!(
|
|
139
|
-
"Server does not support uploading Dart symbol maps via chunked upload. Please update your Sentry server."
|
|
140
|
-
);
|
|
141
|
-
}
|
|
142
137
|
|
|
143
138
|
// Early file size check against server or default limits (same as debug files)
|
|
144
139
|
let effective_max_file_size = if chunk_upload_options.max_file_size > 0 {
|
|
@@ -43,9 +43,10 @@ pub fn make_command(command: Command) -> Command {
|
|
|
43
43
|
pub fn execute(matches: &ArgMatches) -> Result<()> {
|
|
44
44
|
let config = Config::current();
|
|
45
45
|
let api = Api::current();
|
|
46
|
+
let project = config.get_project(matches).ok();
|
|
46
47
|
let releases = api
|
|
47
48
|
.authenticated()?
|
|
48
|
-
.list_releases(&config.get_org(matches)
|
|
49
|
+
.list_releases(&config.get_org(matches)?, project.as_deref())?;
|
|
49
50
|
|
|
50
51
|
if matches.get_flag("raw") {
|
|
51
52
|
let versions = releases
|
|
@@ -8,7 +8,6 @@ use symbolic::common::ByteView;
|
|
|
8
8
|
use uuid::Uuid;
|
|
9
9
|
|
|
10
10
|
use crate::api::Api;
|
|
11
|
-
use crate::api::ChunkUploadCapability;
|
|
12
11
|
use crate::config::Config;
|
|
13
12
|
use crate::utils::android::dump_proguard_uuids_as_properties;
|
|
14
13
|
use crate::utils::args::ArgExt as _;
|
|
@@ -148,10 +147,5 @@ pub fn execute(matches: &ArgMatches) -> Result<()> {
|
|
|
148
147
|
let (org, project) = config.get_org_and_project(matches)?;
|
|
149
148
|
|
|
150
149
|
let chunk_upload_options = authenticated_api.get_chunk_upload_options(&org)?;
|
|
151
|
-
|
|
152
|
-
if chunk_upload_options.supports(ChunkUploadCapability::Proguard) {
|
|
153
|
-
proguard::chunk_upload(&mappings, chunk_upload_options, &org, &project)
|
|
154
|
-
} else {
|
|
155
|
-
Err(anyhow::anyhow!("Server does not support uploading ProGuard mappings via chunked upload. Please update your Sentry server."))
|
|
156
|
-
}
|
|
150
|
+
proguard::chunk_upload(&mappings, chunk_upload_options, &org, &project)
|
|
157
151
|
}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
use serde::{Deserialize, Deserializer};
|
|
2
|
-
|
|
3
|
-
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
|
|
4
|
-
pub enum ChunkUploadCapability {
|
|
5
|
-
/// Upload of Dart symbol maps
|
|
6
|
-
DartSymbolMap,
|
|
7
|
-
|
|
8
|
-
/// Upload of preprod artifacts
|
|
9
|
-
PreprodArtifacts,
|
|
10
|
-
|
|
11
|
-
/// Upload of ProGuard mappings
|
|
12
|
-
Proguard,
|
|
13
|
-
|
|
14
|
-
/// Any other unsupported capability (ignored)
|
|
15
|
-
Unknown,
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
impl<'de> Deserialize<'de> for ChunkUploadCapability {
|
|
19
|
-
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
|
|
20
|
-
where
|
|
21
|
-
D: Deserializer<'de>,
|
|
22
|
-
{
|
|
23
|
-
Ok(match String::deserialize(deserializer)?.as_str() {
|
|
24
|
-
"dartsymbolmap" => ChunkUploadCapability::DartSymbolMap,
|
|
25
|
-
"preprod_artifacts" => ChunkUploadCapability::PreprodArtifacts,
|
|
26
|
-
"proguard" => ChunkUploadCapability::Proguard,
|
|
27
|
-
_ => ChunkUploadCapability::Unknown,
|
|
28
|
-
})
|
|
29
|
-
}
|
|
30
|
-
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|