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.
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/Cargo.lock +22 -22
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/Cargo.toml +3 -2
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/PKG-INFO +1 -1
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/sentry_cli.egg-info/PKG-INFO +1 -1
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/sentry_cli.egg-info/SOURCES.txt +1 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/api/mod.rs +7 -13
- sentry_cli-3.4.3/src/api/updating.rs +80 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/bashsupport.sh +3 -3
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/bash_hook.rs +44 -26
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/build/snapshots.rs +69 -39
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/react_native/xcode.rs +7 -2
- sentry_cli-3.4.3/src/commands/releases/propose_version.rs +19 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/send_event.rs +9 -2
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/config.rs +50 -10
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/args.rs +10 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/file_upload.rs +6 -14
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/releases.rs +10 -6
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/update.rs +29 -4
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/xcode.rs +21 -8
- sentry_cli-3.4.1/src/commands/releases/propose_version.rs +0 -13
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/LICENSE +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/MANIFEST.in +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/README.md +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/apple-catalog-parsing/AGENTS.md +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/apple-catalog-parsing/CLAUDE.md +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/apple-catalog-parsing/Cargo.toml +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/apple-catalog-parsing/build.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/apple-catalog-parsing/native/swift/AssetCatalogParser/Package.swift +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/apple-catalog-parsing/native/swift/AssetCatalogParser/Sources/AssetCatalogParser/AssetCatalogReader.swift +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/apple-catalog-parsing/native/swift/AssetCatalogParser/Sources/ObjcSupport/include/safeValueForKey.h +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/apple-catalog-parsing/native/swift/AssetCatalogParser/Sources/ObjcSupport/safeValueForKey.m +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/apple-catalog-parsing/native/swift/AssetCatalogParser/Tests/AssetCatalogParserTests/AssetCatalogParserTests.swift +0 -0
- {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
- {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
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/apple-catalog-parsing/src/asset_catalog.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/apple-catalog-parsing/src/lib.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/build.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/pyproject.toml +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/sentry_cli.egg-info/dependency_links.txt +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/sentry_cli.egg-info/top_level.txt +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/setup.cfg +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/setup.py +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/AGENTS.md +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/CLAUDE.md +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/api/connection_manager.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/api/data_types/chunking/artifact.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/api/data_types/chunking/build.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/api/data_types/chunking/compression.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/api/data_types/chunking/dif.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/api/data_types/chunking/file_state.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/api/data_types/chunking/hash_algorithm.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/api/data_types/chunking/mod.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/api/data_types/chunking/upload/mod.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/api/data_types/chunking/upload/options.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/api/data_types/code_mappings.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/api/data_types/deploy.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/api/data_types/mod.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/api/data_types/snapshots.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/api/encoding.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/api/envelopes_api.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/api/errors/api_error.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/api/errors/mod.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/api/errors/sentry_error.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/api/pagination.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/api/serialization.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/build/download.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/build/mod.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/build/upload.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/code_mappings/mod.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/code_mappings/upload.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/dart_symbol_map/mod.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/dart_symbol_map/upload.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/debug_files/bundle_jvm.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/debug_files/bundle_sources.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/debug_files/check.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/debug_files/find.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/debug_files/mod.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/debug_files/print_sources.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/debug_files/upload.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/deploys/list.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/deploys/mod.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/deploys/new.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/derive_parser.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/events/list.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/events/mod.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/info.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/issues/list.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/issues/mod.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/issues/mute.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/issues/resolve.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/issues/unresolve.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/login.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/logs/list.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/logs/mod.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/mod.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/monitors/list.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/monitors/mod.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/monitors/run.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/organizations/list.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/organizations/mod.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/proguard/mod.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/proguard/upload.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/proguard/uuid.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/projects/list.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/projects/mod.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/react_native/gradle.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/react_native/mod.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/releases/archive.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/releases/delete.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/releases/finalize.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/releases/info.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/releases/list.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/releases/mod.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/releases/new.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/releases/restore.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/releases/set_commits.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/repos/list.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/repos/mod.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/send_envelope.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/send_metric/common_args.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/send_metric/increment.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/send_metric/mod.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/send_metric/set.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/sourcemaps/inject.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/sourcemaps/mod.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/sourcemaps/resolve.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/sourcemaps/upload.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/uninstall.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/update.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/upload_dif.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/upload_dsym.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/commands/upload_proguard.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/constants.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/main.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/android.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/auth_token/auth_token_impl.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/auth_token/error.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/auth_token/mod.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/auth_token/org_auth_token.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/auth_token/redacting.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/auth_token/test.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/auth_token/user_auth_token.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/build/apple.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/build/mod.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/build/normalize.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/build/validation.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/build_vcs.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/chunks/mod.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/chunks/options.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/chunks/types.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/chunks/upload.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/ci.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/cordova.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/dif.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/dif_upload/error.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/dif_upload/mod.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/event.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/file_search.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/formatting.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/fs.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/http.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/logging.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/mod.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/non_empty.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/progress.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/proguard/mapping.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/proguard/mod.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/proguard/upload.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/retry.rs +0 -0
- {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
- {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
- {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
- {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
- {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
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/source_bundle.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/sourcemaps/inject.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/sourcemaps.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/system.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/ui.rs +0 -0
- {sentry_cli-3.4.1 → sentry_cli-3.4.3}/src/utils/value_parsers.rs +0 -0
- {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.
|
|
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.
|
|
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.
|
|
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.
|
|
2303
|
+
version = "0.1.9"
|
|
2304
2304
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2305
|
-
checksum = "
|
|
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.
|
|
2326
|
+
version = "0.1.9"
|
|
2327
2327
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2328
|
-
checksum = "
|
|
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.
|
|
2361
|
+
version = "0.10.79"
|
|
2362
2362
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2363
|
-
checksum = "
|
|
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.
|
|
2401
|
+
version = "0.9.115"
|
|
2403
2402
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2404
|
-
checksum = "
|
|
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.
|
|
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.
|
|
2857
|
+
version = "0.8.6"
|
|
2859
2858
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2860
|
-
checksum = "
|
|
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.
|
|
2868
|
+
version = "0.9.4"
|
|
2870
2869
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2871
|
-
checksum = "
|
|
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.
|
|
3209
|
+
version = "0.103.13"
|
|
3211
3210
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
3212
|
-
checksum = "
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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"
|
|
@@ -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.
|
|
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
|
-
|
|
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,
|
|
1734
|
+
#[derive(Debug, Deserialize)]
|
|
1741
1735
|
struct RegistryRelease {
|
|
1742
1736
|
version: String,
|
|
1743
|
-
|
|
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
|
|
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=
|
|
2
|
-
_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"
|
|
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
|
|
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("
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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(
|
|
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
|
|
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
|
|
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
|
-
.
|
|
263
|
-
|
|
264
|
-
|
|
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("
|
|
271
|
-
script = script.replace(
|
|
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("
|
|
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
|
+
}
|