sentry-cli 3.1.0__tar.gz → 3.2.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.1.0 → sentry_cli-3.2.0}/Cargo.lock +16 -16
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/Cargo.toml +2 -2
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/PKG-INFO +5 -1
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/README.md +4 -0
- sentry_cli-3.2.0/apple-catalog-parsing/AGENTS.md +99 -0
- sentry_cli-3.2.0/apple-catalog-parsing/CLAUDE.md +99 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/sentry_cli.egg-info/PKG-INFO +5 -1
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/sentry_cli.egg-info/SOURCES.txt +4 -0
- sentry_cli-3.2.0/src/AGENTS.md +99 -0
- sentry_cli-3.2.0/src/CLAUDE.md +99 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/api/data_types/chunking/build.rs +2 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/commands/build/upload.rs +54 -20
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/commands/derive_parser.rs +4 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/utils/vcs.rs +22 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/LICENSE +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/MANIFEST.in +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/apple-catalog-parsing/Cargo.toml +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/apple-catalog-parsing/build.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/apple-catalog-parsing/native/swift/AssetCatalogParser/Package.swift +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/apple-catalog-parsing/native/swift/AssetCatalogParser/Sources/AssetCatalogParser/AssetCatalogReader.swift +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/apple-catalog-parsing/native/swift/AssetCatalogParser/Sources/ObjcSupport/include/safeValueForKey.h +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/apple-catalog-parsing/native/swift/AssetCatalogParser/Sources/ObjcSupport/safeValueForKey.m +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/apple-catalog-parsing/native/swift/AssetCatalogParser/Tests/AssetCatalogParserTests/AssetCatalogParserTests.swift +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/apple-catalog-parsing/native/swift/AssetCatalogParser/Tests/AssetCatalogParserTests/Resources/test.xcarchive/Info.plist +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/apple-catalog-parsing/native/swift/AssetCatalogParser/Tests/AssetCatalogParserTests/Resources/test.xcarchive/Products/Applications/DemoApp.app/Assets.car +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/apple-catalog-parsing/src/asset_catalog.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/apple-catalog-parsing/src/lib.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/build.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/pyproject.toml +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/sentry_cli.egg-info/dependency_links.txt +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/sentry_cli.egg-info/top_level.txt +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/setup.cfg +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/setup.py +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/api/connection_manager.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/api/data_types/chunking/artifact.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/api/data_types/chunking/compression.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/api/data_types/chunking/dif.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/api/data_types/chunking/file_state.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/api/data_types/chunking/hash_algorithm.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/api/data_types/chunking/mod.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/api/data_types/chunking/upload/mod.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/api/data_types/chunking/upload/options.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/api/data_types/deploy.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/api/data_types/mod.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/api/encoding.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/api/envelopes_api.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/api/errors/api_error.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/api/errors/mod.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/api/errors/sentry_error.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/api/mod.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/api/pagination.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/api/serialization.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/bashsupport.sh +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/commands/bash_hook.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/commands/build/mod.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/commands/dart_symbol_map/mod.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/commands/dart_symbol_map/upload.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/commands/debug_files/bundle_jvm.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/commands/debug_files/bundle_sources.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/commands/debug_files/check.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/commands/debug_files/find.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/commands/debug_files/mod.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/commands/debug_files/print_sources.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/commands/debug_files/upload.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/commands/deploys/list.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/commands/deploys/mod.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/commands/deploys/new.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/commands/events/list.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/commands/events/mod.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/commands/info.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/commands/issues/list.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/commands/issues/mod.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/commands/issues/mute.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/commands/issues/resolve.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/commands/issues/unresolve.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/commands/login.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/commands/logs/list.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/commands/logs/mod.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/commands/mod.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/commands/monitors/list.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/commands/monitors/mod.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/commands/monitors/run.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/commands/organizations/list.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/commands/organizations/mod.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/commands/projects/list.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/commands/projects/mod.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/commands/react_native/gradle.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/commands/react_native/mod.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/commands/react_native/xcode.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/commands/releases/archive.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/commands/releases/delete.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/commands/releases/finalize.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/commands/releases/info.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/commands/releases/list.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/commands/releases/mod.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/commands/releases/new.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/commands/releases/propose_version.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/commands/releases/restore.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/commands/releases/set_commits.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/commands/repos/list.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/commands/repos/mod.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/commands/send_envelope.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/commands/send_event.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/commands/send_metric/common_args.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/commands/send_metric/increment.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/commands/send_metric/mod.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/commands/send_metric/set.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/commands/sourcemaps/inject.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/commands/sourcemaps/mod.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/commands/sourcemaps/resolve.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/commands/sourcemaps/upload.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/commands/uninstall.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/commands/update.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/commands/upload_dif.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/commands/upload_dsym.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/commands/upload_proguard.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/config.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/constants.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/main.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/utils/android.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/utils/args.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/utils/auth_token/auth_token_impl.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/utils/auth_token/error.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/utils/auth_token/mod.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/utils/auth_token/org_auth_token.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/utils/auth_token/redacting.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/utils/auth_token/test.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/utils/auth_token/user_auth_token.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/utils/build/apple.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/utils/build/mod.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/utils/build/normalize.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/utils/build/validation.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/utils/chunks/mod.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/utils/chunks/options.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/utils/chunks/types.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/utils/chunks/upload.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/utils/ci.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/utils/cordova.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/utils/dif.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/utils/dif_upload/error.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/utils/dif_upload/mod.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/utils/event.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/utils/file_search.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/utils/file_upload.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/utils/formatting.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/utils/fs.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/utils/http.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/utils/logging.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/utils/mod.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/utils/non_empty.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/utils/progress.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/utils/proguard/mapping.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/utils/proguard/mod.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/utils/proguard/upload.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/utils/releases.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/utils/retry.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/utils/snapshots/sentry_cli__utils__vcs__tests__generate_patch_default_twenty.snap +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/utils/snapshots/sentry_cli__utils__vcs__tests__generate_patch_ignore_missing.snap +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/utils/snapshots/sentry_cli__utils__vcs__tests__generate_patch_set_base.snap +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/utils/snapshots/sentry_cli__utils__vcs__tests__generate_patch_set_previous_commit.snap +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/utils/snapshots/sentry_cli__utils__vcs__tests__get_commits_from_git.snap +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/utils/source_bundle.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/utils/sourcemaps/inject.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/utils/sourcemaps.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/utils/system.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/utils/ui.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/utils/update.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/utils/value_parsers.rs +0 -0
- {sentry_cli-3.1.0 → sentry_cli-3.2.0}/src/utils/xcode.rs +0 -0
|
@@ -332,9 +332,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
|
|
|
332
332
|
|
|
333
333
|
[[package]]
|
|
334
334
|
name = "bytes"
|
|
335
|
-
version = "1.
|
|
335
|
+
version = "1.11.1"
|
|
336
336
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
337
|
-
checksum = "
|
|
337
|
+
checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33"
|
|
338
338
|
|
|
339
339
|
[[package]]
|
|
340
340
|
name = "bzip2"
|
|
@@ -1054,9 +1054,9 @@ dependencies = [
|
|
|
1054
1054
|
|
|
1055
1055
|
[[package]]
|
|
1056
1056
|
name = "git2"
|
|
1057
|
-
version = "0.
|
|
1057
|
+
version = "0.20.4"
|
|
1058
1058
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1059
|
-
checksum = "
|
|
1059
|
+
checksum = "7b88256088d75a56f8ecfa070513a775dd9107f6530ef14919dac831af9cfe2b"
|
|
1060
1060
|
dependencies = [
|
|
1061
1061
|
"bitflags 2.9.4",
|
|
1062
1062
|
"libc",
|
|
@@ -1617,9 +1617,9 @@ checksum = "58f929b4d672ea937a23a1ab494143d968337a5f47e56d0815df1e0890ddf174"
|
|
|
1617
1617
|
|
|
1618
1618
|
[[package]]
|
|
1619
1619
|
name = "libgit2-sys"
|
|
1620
|
-
version = "0.
|
|
1620
|
+
version = "0.18.3+1.9.2"
|
|
1621
1621
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1622
|
-
checksum = "
|
|
1622
|
+
checksum = "c9b3acc4b91781bb0b3386669d325163746af5f6e4f73e6d2d630e09a35f3487"
|
|
1623
1623
|
dependencies = [
|
|
1624
1624
|
"cc",
|
|
1625
1625
|
"libc",
|
|
@@ -1844,9 +1844,9 @@ checksum = "61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5be"
|
|
|
1844
1844
|
|
|
1845
1845
|
[[package]]
|
|
1846
1846
|
name = "num-conv"
|
|
1847
|
-
version = "0.
|
|
1847
|
+
version = "0.2.0"
|
|
1848
1848
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1849
|
-
checksum = "
|
|
1849
|
+
checksum = "cf97ec579c3c42f953ef76dbf8d55ac91fb219dde70e49aa4a6b7d74e9919050"
|
|
1850
1850
|
|
|
1851
1851
|
[[package]]
|
|
1852
1852
|
name = "num-traits"
|
|
@@ -2668,7 +2668,7 @@ dependencies = [
|
|
|
2668
2668
|
|
|
2669
2669
|
[[package]]
|
|
2670
2670
|
name = "sentry-cli"
|
|
2671
|
-
version = "3.
|
|
2671
|
+
version = "3.2.0"
|
|
2672
2672
|
dependencies = [
|
|
2673
2673
|
"anyhow",
|
|
2674
2674
|
"anylog",
|
|
@@ -3237,30 +3237,30 @@ dependencies = [
|
|
|
3237
3237
|
|
|
3238
3238
|
[[package]]
|
|
3239
3239
|
name = "time"
|
|
3240
|
-
version = "0.3.
|
|
3240
|
+
version = "0.3.47"
|
|
3241
3241
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
3242
|
-
checksum = "
|
|
3242
|
+
checksum = "743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c"
|
|
3243
3243
|
dependencies = [
|
|
3244
3244
|
"deranged",
|
|
3245
3245
|
"itoa",
|
|
3246
3246
|
"num-conv",
|
|
3247
3247
|
"powerfmt",
|
|
3248
|
-
"
|
|
3248
|
+
"serde_core",
|
|
3249
3249
|
"time-core",
|
|
3250
3250
|
"time-macros",
|
|
3251
3251
|
]
|
|
3252
3252
|
|
|
3253
3253
|
[[package]]
|
|
3254
3254
|
name = "time-core"
|
|
3255
|
-
version = "0.1.
|
|
3255
|
+
version = "0.1.8"
|
|
3256
3256
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
3257
|
-
checksum = "
|
|
3257
|
+
checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca"
|
|
3258
3258
|
|
|
3259
3259
|
[[package]]
|
|
3260
3260
|
name = "time-macros"
|
|
3261
|
-
version = "0.2.
|
|
3261
|
+
version = "0.2.27"
|
|
3262
3262
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
3263
|
-
checksum = "
|
|
3263
|
+
checksum = "2e70e4c5a0e0a8a4823ad65dfe1a6930e4f4d756dcd9dd7939022b5e8c501215"
|
|
3264
3264
|
dependencies = [
|
|
3265
3265
|
"num-conv",
|
|
3266
3266
|
"time-core",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
[package]
|
|
2
2
|
build = "build.rs"
|
|
3
3
|
name = "sentry-cli"
|
|
4
|
-
version = "3.
|
|
4
|
+
version = "3.2.0"
|
|
5
5
|
edition = "2021"
|
|
6
6
|
rust-version = "1.91"
|
|
7
7
|
|
|
@@ -31,7 +31,7 @@ elementtree = "1.2.3"
|
|
|
31
31
|
flate2 = { version = "1.0.25", default-features = false, features = [
|
|
32
32
|
"rust_backend",
|
|
33
33
|
] }
|
|
34
|
-
git2 = { version = "0.
|
|
34
|
+
git2 = { version = "0.20.4", default-features = false }
|
|
35
35
|
glob = "0.3.1"
|
|
36
36
|
if_chain = "1.0.2"
|
|
37
37
|
ignore = "0.4.20"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: sentry_cli
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.2.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
|
|
@@ -79,3 +79,7 @@ Also, there is a Dockerfile that builds an Alpine-based Docker image with
|
|
|
79
79
|
docker build -t sentry-cli .
|
|
80
80
|
docker run --rm -v $(pwd):/work sentry-cli --help
|
|
81
81
|
```
|
|
82
|
+
|
|
83
|
+
## Internal docs
|
|
84
|
+
|
|
85
|
+
Snapshot: [Sentry CLI distribution as of 2026-01-29](docs/snapshots/2026-01-29-sentry-cli-distribution.md).
|
|
@@ -62,3 +62,7 @@ Also, there is a Dockerfile that builds an Alpine-based Docker image with
|
|
|
62
62
|
docker build -t sentry-cli .
|
|
63
63
|
docker run --rm -v $(pwd):/work sentry-cli --help
|
|
64
64
|
```
|
|
65
|
+
|
|
66
|
+
## Internal docs
|
|
67
|
+
|
|
68
|
+
Snapshot: [Sentry CLI distribution as of 2026-01-29](docs/snapshots/2026-01-29-sentry-cli-distribution.md).
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
# Rust Development Guidelines
|
|
2
|
+
|
|
3
|
+
## Code Organization
|
|
4
|
+
|
|
5
|
+
- Follow existing module structure in `src/commands/` for new commands
|
|
6
|
+
- Use `anyhow::Result` for error handling patterns
|
|
7
|
+
- Consider cross-platform compatibility
|
|
8
|
+
- Ensure backward compatibility for CLI interface
|
|
9
|
+
|
|
10
|
+
## Common Patterns
|
|
11
|
+
|
|
12
|
+
- Use existing error types and handling patterns
|
|
13
|
+
- Follow established CLI argument parsing patterns using `clap`
|
|
14
|
+
- Reuse utility functions from `src/utils/`
|
|
15
|
+
- Match existing code style and naming conventions
|
|
16
|
+
- Add appropriate logging using `log` crate patterns
|
|
17
|
+
|
|
18
|
+
## Type Annotations and Inference
|
|
19
|
+
|
|
20
|
+
- Prefer compiler type inference across the codebase
|
|
21
|
+
- Do not add explicit type annotations in `let` bindings or turbofish syntax (e.g., `::<T>`) unless required for the code to compile or to disambiguate an API that inference cannot resolve
|
|
22
|
+
- If the code compiles without explicit annotations, omit them
|
|
23
|
+
|
|
24
|
+
## Development Commands
|
|
25
|
+
|
|
26
|
+
Always run `cargo fmt --all`, prior to committing any Rust code, to ensure consistent formatting and to avoid CI failures.
|
|
27
|
+
|
|
28
|
+
Some other commands you may find useful:
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
# Essential Rust workflow - run against the whole workspace
|
|
32
|
+
cargo build --workspace
|
|
33
|
+
cargo test --workspace
|
|
34
|
+
cargo clippy --workspace
|
|
35
|
+
|
|
36
|
+
# Local testing
|
|
37
|
+
cargo run -- --help
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Error Handling Patterns
|
|
41
|
+
|
|
42
|
+
- Use `anyhow::Result` for application-level errors
|
|
43
|
+
- Use `thiserror` for library-level error types (see `src/utils/auth_token/error.rs`)
|
|
44
|
+
- Chain errors with `.context()` for better error messages
|
|
45
|
+
- Custom error types in `src/api/errors/` and `src/utils/dif_upload/error.rs`
|
|
46
|
+
|
|
47
|
+
## Swift/Apple Integration
|
|
48
|
+
|
|
49
|
+
- Swift code in `apple-catalog-parsing/` is used for parsing xarchive files
|
|
50
|
+
- Used by the `build upload` command for iOS app processing
|
|
51
|
+
- Built as a separate crate with FFI bindings to Rust
|
|
52
|
+
- Only compiled on macOS targets
|
|
53
|
+
- Tests run via `swift-test.yml` workflow in CI
|
|
54
|
+
|
|
55
|
+
# Rust Testing Guidelines
|
|
56
|
+
|
|
57
|
+
## Unit Tests
|
|
58
|
+
|
|
59
|
+
- Colocate with source code
|
|
60
|
+
- Use `#[cfg(test)]` modules
|
|
61
|
+
- Mock external dependencies
|
|
62
|
+
|
|
63
|
+
## Integration Tests
|
|
64
|
+
|
|
65
|
+
- Use `trycmd` for CLI interface testing when asserting output
|
|
66
|
+
- Use `assert_cmd` for testing behavior rather than just output
|
|
67
|
+
- Structure: `tests/integration/_cases/<command>/<test>.trycmd`
|
|
68
|
+
- Fixtures: `tests/integration/_fixtures/`
|
|
69
|
+
- Expected outputs: `tests/integration/_expected_outputs/`
|
|
70
|
+
- API mocks: `tests/integration/_responses/`
|
|
71
|
+
|
|
72
|
+
## Snapshot Management
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
# Update snapshots
|
|
76
|
+
TRYCMD=overwrite cargo test
|
|
77
|
+
|
|
78
|
+
# Debug test output
|
|
79
|
+
TRYCMD=dump cargo test
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Test Utilities
|
|
83
|
+
|
|
84
|
+
- `TestManager`: Sets up test environment with mock server
|
|
85
|
+
- `MockEndpointBuilder`: Creates API endpoint mocks
|
|
86
|
+
- `copy_recursively`: Helper for fixture setup
|
|
87
|
+
- Environment setup via `test_utils::env`
|
|
88
|
+
|
|
89
|
+
## Platform-Specific Testing
|
|
90
|
+
|
|
91
|
+
- Use `#[cfg(windows)]` for Windows-specific tests
|
|
92
|
+
- Separate `.trycmd` files when behavior differs
|
|
93
|
+
- Test on CI matrix: Linux, macOS, Windows
|
|
94
|
+
|
|
95
|
+
## Assert Command vs Trycmd
|
|
96
|
+
|
|
97
|
+
- `trycmd`: Best for testing exact CLI output, supports snapshot testing
|
|
98
|
+
- `assert_cmd`: Better for testing behavior, exit codes, and when you need programmatic assertions
|
|
99
|
+
- Example of `assert_cmd` usage can be found in `TestManager::run_and_assert()`
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
# Rust Development Guidelines
|
|
2
|
+
|
|
3
|
+
## Code Organization
|
|
4
|
+
|
|
5
|
+
- Follow existing module structure in `src/commands/` for new commands
|
|
6
|
+
- Use `anyhow::Result` for error handling patterns
|
|
7
|
+
- Consider cross-platform compatibility
|
|
8
|
+
- Ensure backward compatibility for CLI interface
|
|
9
|
+
|
|
10
|
+
## Common Patterns
|
|
11
|
+
|
|
12
|
+
- Use existing error types and handling patterns
|
|
13
|
+
- Follow established CLI argument parsing patterns using `clap`
|
|
14
|
+
- Reuse utility functions from `src/utils/`
|
|
15
|
+
- Match existing code style and naming conventions
|
|
16
|
+
- Add appropriate logging using `log` crate patterns
|
|
17
|
+
|
|
18
|
+
## Type Annotations and Inference
|
|
19
|
+
|
|
20
|
+
- Prefer compiler type inference across the codebase
|
|
21
|
+
- Do not add explicit type annotations in `let` bindings or turbofish syntax (e.g., `::<T>`) unless required for the code to compile or to disambiguate an API that inference cannot resolve
|
|
22
|
+
- If the code compiles without explicit annotations, omit them
|
|
23
|
+
|
|
24
|
+
## Development Commands
|
|
25
|
+
|
|
26
|
+
Always run `cargo fmt --all`, prior to committing any Rust code, to ensure consistent formatting and to avoid CI failures.
|
|
27
|
+
|
|
28
|
+
Some other commands you may find useful:
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
# Essential Rust workflow - run against the whole workspace
|
|
32
|
+
cargo build --workspace
|
|
33
|
+
cargo test --workspace
|
|
34
|
+
cargo clippy --workspace
|
|
35
|
+
|
|
36
|
+
# Local testing
|
|
37
|
+
cargo run -- --help
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Error Handling Patterns
|
|
41
|
+
|
|
42
|
+
- Use `anyhow::Result` for application-level errors
|
|
43
|
+
- Use `thiserror` for library-level error types (see `src/utils/auth_token/error.rs`)
|
|
44
|
+
- Chain errors with `.context()` for better error messages
|
|
45
|
+
- Custom error types in `src/api/errors/` and `src/utils/dif_upload/error.rs`
|
|
46
|
+
|
|
47
|
+
## Swift/Apple Integration
|
|
48
|
+
|
|
49
|
+
- Swift code in `apple-catalog-parsing/` is used for parsing xarchive files
|
|
50
|
+
- Used by the `build upload` command for iOS app processing
|
|
51
|
+
- Built as a separate crate with FFI bindings to Rust
|
|
52
|
+
- Only compiled on macOS targets
|
|
53
|
+
- Tests run via `swift-test.yml` workflow in CI
|
|
54
|
+
|
|
55
|
+
# Rust Testing Guidelines
|
|
56
|
+
|
|
57
|
+
## Unit Tests
|
|
58
|
+
|
|
59
|
+
- Colocate with source code
|
|
60
|
+
- Use `#[cfg(test)]` modules
|
|
61
|
+
- Mock external dependencies
|
|
62
|
+
|
|
63
|
+
## Integration Tests
|
|
64
|
+
|
|
65
|
+
- Use `trycmd` for CLI interface testing when asserting output
|
|
66
|
+
- Use `assert_cmd` for testing behavior rather than just output
|
|
67
|
+
- Structure: `tests/integration/_cases/<command>/<test>.trycmd`
|
|
68
|
+
- Fixtures: `tests/integration/_fixtures/`
|
|
69
|
+
- Expected outputs: `tests/integration/_expected_outputs/`
|
|
70
|
+
- API mocks: `tests/integration/_responses/`
|
|
71
|
+
|
|
72
|
+
## Snapshot Management
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
# Update snapshots
|
|
76
|
+
TRYCMD=overwrite cargo test
|
|
77
|
+
|
|
78
|
+
# Debug test output
|
|
79
|
+
TRYCMD=dump cargo test
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Test Utilities
|
|
83
|
+
|
|
84
|
+
- `TestManager`: Sets up test environment with mock server
|
|
85
|
+
- `MockEndpointBuilder`: Creates API endpoint mocks
|
|
86
|
+
- `copy_recursively`: Helper for fixture setup
|
|
87
|
+
- Environment setup via `test_utils::env`
|
|
88
|
+
|
|
89
|
+
## Platform-Specific Testing
|
|
90
|
+
|
|
91
|
+
- Use `#[cfg(windows)]` for Windows-specific tests
|
|
92
|
+
- Separate `.trycmd` files when behavior differs
|
|
93
|
+
- Test on CI matrix: Linux, macOS, Windows
|
|
94
|
+
|
|
95
|
+
## Assert Command vs Trycmd
|
|
96
|
+
|
|
97
|
+
- `trycmd`: Best for testing exact CLI output, supports snapshot testing
|
|
98
|
+
- `assert_cmd`: Better for testing behavior, exit codes, and when you need programmatic assertions
|
|
99
|
+
- Example of `assert_cmd` usage can be found in `TestManager::run_and_assert()`
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: sentry_cli
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.2.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
|
|
@@ -79,3 +79,7 @@ Also, there is a Dockerfile that builds an Alpine-based Docker image with
|
|
|
79
79
|
docker build -t sentry-cli .
|
|
80
80
|
docker run --rm -v $(pwd):/work sentry-cli --help
|
|
81
81
|
```
|
|
82
|
+
|
|
83
|
+
## Internal docs
|
|
84
|
+
|
|
85
|
+
Snapshot: [Sentry CLI distribution as of 2026-01-29](docs/snapshots/2026-01-29-sentry-cli-distribution.md).
|
|
@@ -7,6 +7,8 @@ build.rs
|
|
|
7
7
|
pyproject.toml
|
|
8
8
|
setup.cfg
|
|
9
9
|
setup.py
|
|
10
|
+
apple-catalog-parsing/AGENTS.md
|
|
11
|
+
apple-catalog-parsing/CLAUDE.md
|
|
10
12
|
apple-catalog-parsing/Cargo.toml
|
|
11
13
|
apple-catalog-parsing/build.rs
|
|
12
14
|
apple-catalog-parsing/native/swift/AssetCatalogParser/Package.swift
|
|
@@ -22,6 +24,8 @@ sentry_cli.egg-info/PKG-INFO
|
|
|
22
24
|
sentry_cli.egg-info/SOURCES.txt
|
|
23
25
|
sentry_cli.egg-info/dependency_links.txt
|
|
24
26
|
sentry_cli.egg-info/top_level.txt
|
|
27
|
+
src/AGENTS.md
|
|
28
|
+
src/CLAUDE.md
|
|
25
29
|
src/bashsupport.sh
|
|
26
30
|
src/config.rs
|
|
27
31
|
src/constants.rs
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
# Rust Development Guidelines
|
|
2
|
+
|
|
3
|
+
## Code Organization
|
|
4
|
+
|
|
5
|
+
- Follow existing module structure in `src/commands/` for new commands
|
|
6
|
+
- Use `anyhow::Result` for error handling patterns
|
|
7
|
+
- Consider cross-platform compatibility
|
|
8
|
+
- Ensure backward compatibility for CLI interface
|
|
9
|
+
|
|
10
|
+
## Common Patterns
|
|
11
|
+
|
|
12
|
+
- Use existing error types and handling patterns
|
|
13
|
+
- Follow established CLI argument parsing patterns using `clap`
|
|
14
|
+
- Reuse utility functions from `src/utils/`
|
|
15
|
+
- Match existing code style and naming conventions
|
|
16
|
+
- Add appropriate logging using `log` crate patterns
|
|
17
|
+
|
|
18
|
+
## Type Annotations and Inference
|
|
19
|
+
|
|
20
|
+
- Prefer compiler type inference across the codebase
|
|
21
|
+
- Do not add explicit type annotations in `let` bindings or turbofish syntax (e.g., `::<T>`) unless required for the code to compile or to disambiguate an API that inference cannot resolve
|
|
22
|
+
- If the code compiles without explicit annotations, omit them
|
|
23
|
+
|
|
24
|
+
## Development Commands
|
|
25
|
+
|
|
26
|
+
Always run `cargo fmt --all`, prior to committing any Rust code, to ensure consistent formatting and to avoid CI failures.
|
|
27
|
+
|
|
28
|
+
Some other commands you may find useful:
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
# Essential Rust workflow - run against the whole workspace
|
|
32
|
+
cargo build --workspace
|
|
33
|
+
cargo test --workspace
|
|
34
|
+
cargo clippy --workspace
|
|
35
|
+
|
|
36
|
+
# Local testing
|
|
37
|
+
cargo run -- --help
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Error Handling Patterns
|
|
41
|
+
|
|
42
|
+
- Use `anyhow::Result` for application-level errors
|
|
43
|
+
- Use `thiserror` for library-level error types (see `src/utils/auth_token/error.rs`)
|
|
44
|
+
- Chain errors with `.context()` for better error messages
|
|
45
|
+
- Custom error types in `src/api/errors/` and `src/utils/dif_upload/error.rs`
|
|
46
|
+
|
|
47
|
+
## Swift/Apple Integration
|
|
48
|
+
|
|
49
|
+
- Swift code in `apple-catalog-parsing/` is used for parsing xarchive files
|
|
50
|
+
- Used by the `build upload` command for iOS app processing
|
|
51
|
+
- Built as a separate crate with FFI bindings to Rust
|
|
52
|
+
- Only compiled on macOS targets
|
|
53
|
+
- Tests run via `swift-test.yml` workflow in CI
|
|
54
|
+
|
|
55
|
+
# Rust Testing Guidelines
|
|
56
|
+
|
|
57
|
+
## Unit Tests
|
|
58
|
+
|
|
59
|
+
- Colocate with source code
|
|
60
|
+
- Use `#[cfg(test)]` modules
|
|
61
|
+
- Mock external dependencies
|
|
62
|
+
|
|
63
|
+
## Integration Tests
|
|
64
|
+
|
|
65
|
+
- Use `trycmd` for CLI interface testing when asserting output
|
|
66
|
+
- Use `assert_cmd` for testing behavior rather than just output
|
|
67
|
+
- Structure: `tests/integration/_cases/<command>/<test>.trycmd`
|
|
68
|
+
- Fixtures: `tests/integration/_fixtures/`
|
|
69
|
+
- Expected outputs: `tests/integration/_expected_outputs/`
|
|
70
|
+
- API mocks: `tests/integration/_responses/`
|
|
71
|
+
|
|
72
|
+
## Snapshot Management
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
# Update snapshots
|
|
76
|
+
TRYCMD=overwrite cargo test
|
|
77
|
+
|
|
78
|
+
# Debug test output
|
|
79
|
+
TRYCMD=dump cargo test
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Test Utilities
|
|
83
|
+
|
|
84
|
+
- `TestManager`: Sets up test environment with mock server
|
|
85
|
+
- `MockEndpointBuilder`: Creates API endpoint mocks
|
|
86
|
+
- `copy_recursively`: Helper for fixture setup
|
|
87
|
+
- Environment setup via `test_utils::env`
|
|
88
|
+
|
|
89
|
+
## Platform-Specific Testing
|
|
90
|
+
|
|
91
|
+
- Use `#[cfg(windows)]` for Windows-specific tests
|
|
92
|
+
- Separate `.trycmd` files when behavior differs
|
|
93
|
+
- Test on CI matrix: Linux, macOS, Windows
|
|
94
|
+
|
|
95
|
+
## Assert Command vs Trycmd
|
|
96
|
+
|
|
97
|
+
- `trycmd`: Best for testing exact CLI output, supports snapshot testing
|
|
98
|
+
- `assert_cmd`: Better for testing behavior, exit codes, and when you need programmatic assertions
|
|
99
|
+
- Example of `assert_cmd` usage can be found in `TestManager::run_and_assert()`
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
# Rust Development Guidelines
|
|
2
|
+
|
|
3
|
+
## Code Organization
|
|
4
|
+
|
|
5
|
+
- Follow existing module structure in `src/commands/` for new commands
|
|
6
|
+
- Use `anyhow::Result` for error handling patterns
|
|
7
|
+
- Consider cross-platform compatibility
|
|
8
|
+
- Ensure backward compatibility for CLI interface
|
|
9
|
+
|
|
10
|
+
## Common Patterns
|
|
11
|
+
|
|
12
|
+
- Use existing error types and handling patterns
|
|
13
|
+
- Follow established CLI argument parsing patterns using `clap`
|
|
14
|
+
- Reuse utility functions from `src/utils/`
|
|
15
|
+
- Match existing code style and naming conventions
|
|
16
|
+
- Add appropriate logging using `log` crate patterns
|
|
17
|
+
|
|
18
|
+
## Type Annotations and Inference
|
|
19
|
+
|
|
20
|
+
- Prefer compiler type inference across the codebase
|
|
21
|
+
- Do not add explicit type annotations in `let` bindings or turbofish syntax (e.g., `::<T>`) unless required for the code to compile or to disambiguate an API that inference cannot resolve
|
|
22
|
+
- If the code compiles without explicit annotations, omit them
|
|
23
|
+
|
|
24
|
+
## Development Commands
|
|
25
|
+
|
|
26
|
+
Always run `cargo fmt --all`, prior to committing any Rust code, to ensure consistent formatting and to avoid CI failures.
|
|
27
|
+
|
|
28
|
+
Some other commands you may find useful:
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
# Essential Rust workflow - run against the whole workspace
|
|
32
|
+
cargo build --workspace
|
|
33
|
+
cargo test --workspace
|
|
34
|
+
cargo clippy --workspace
|
|
35
|
+
|
|
36
|
+
# Local testing
|
|
37
|
+
cargo run -- --help
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Error Handling Patterns
|
|
41
|
+
|
|
42
|
+
- Use `anyhow::Result` for application-level errors
|
|
43
|
+
- Use `thiserror` for library-level error types (see `src/utils/auth_token/error.rs`)
|
|
44
|
+
- Chain errors with `.context()` for better error messages
|
|
45
|
+
- Custom error types in `src/api/errors/` and `src/utils/dif_upload/error.rs`
|
|
46
|
+
|
|
47
|
+
## Swift/Apple Integration
|
|
48
|
+
|
|
49
|
+
- Swift code in `apple-catalog-parsing/` is used for parsing xarchive files
|
|
50
|
+
- Used by the `build upload` command for iOS app processing
|
|
51
|
+
- Built as a separate crate with FFI bindings to Rust
|
|
52
|
+
- Only compiled on macOS targets
|
|
53
|
+
- Tests run via `swift-test.yml` workflow in CI
|
|
54
|
+
|
|
55
|
+
# Rust Testing Guidelines
|
|
56
|
+
|
|
57
|
+
## Unit Tests
|
|
58
|
+
|
|
59
|
+
- Colocate with source code
|
|
60
|
+
- Use `#[cfg(test)]` modules
|
|
61
|
+
- Mock external dependencies
|
|
62
|
+
|
|
63
|
+
## Integration Tests
|
|
64
|
+
|
|
65
|
+
- Use `trycmd` for CLI interface testing when asserting output
|
|
66
|
+
- Use `assert_cmd` for testing behavior rather than just output
|
|
67
|
+
- Structure: `tests/integration/_cases/<command>/<test>.trycmd`
|
|
68
|
+
- Fixtures: `tests/integration/_fixtures/`
|
|
69
|
+
- Expected outputs: `tests/integration/_expected_outputs/`
|
|
70
|
+
- API mocks: `tests/integration/_responses/`
|
|
71
|
+
|
|
72
|
+
## Snapshot Management
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
# Update snapshots
|
|
76
|
+
TRYCMD=overwrite cargo test
|
|
77
|
+
|
|
78
|
+
# Debug test output
|
|
79
|
+
TRYCMD=dump cargo test
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Test Utilities
|
|
83
|
+
|
|
84
|
+
- `TestManager`: Sets up test environment with mock server
|
|
85
|
+
- `MockEndpointBuilder`: Creates API endpoint mocks
|
|
86
|
+
- `copy_recursively`: Helper for fixture setup
|
|
87
|
+
- Environment setup via `test_utils::env`
|
|
88
|
+
|
|
89
|
+
## Platform-Specific Testing
|
|
90
|
+
|
|
91
|
+
- Use `#[cfg(windows)]` for Windows-specific tests
|
|
92
|
+
- Separate `.trycmd` files when behavior differs
|
|
93
|
+
- Test on CI matrix: Linux, macOS, Windows
|
|
94
|
+
|
|
95
|
+
## Assert Command vs Trycmd
|
|
96
|
+
|
|
97
|
+
- `trycmd`: Best for testing exact CLI output, supports snapshot testing
|
|
98
|
+
- `assert_cmd`: Better for testing behavior, exit codes, and when you need programmatic assertions
|
|
99
|
+
- Example of `assert_cmd` usage can be found in `TestManager::run_and_assert()`
|
|
@@ -13,6 +13,8 @@ pub struct ChunkedBuildRequest<'a> {
|
|
|
13
13
|
pub build_configuration: Option<&'a str>,
|
|
14
14
|
#[serde(skip_serializing_if = "Option::is_none")]
|
|
15
15
|
pub release_notes: Option<&'a str>,
|
|
16
|
+
#[serde(skip_serializing_if = "<[_]>::is_empty")]
|
|
17
|
+
pub install_groups: &'a [String],
|
|
16
18
|
#[serde(flatten)]
|
|
17
19
|
pub vcs_info: &'a VcsInfo<'a>,
|
|
18
20
|
}
|