Skip to content

Commit b867302

Browse files
ref: Introduce non-empty types for UploadContext (#2846)
### Description This change helps with #2843 (CLI-189) by making it explicit where we are (potentially) performing an upload with no projects. As artifact bundle uploads require at least one project, we need to make sure we also deprecate projectless uploads. By making it explicit where projectless uploads could occur, we will have an easier time to tell how we should deprecate these. ### Issues - See #2843 (CLI-189)
1 parent 5429f25 commit b867302

File tree

15 files changed

+205
-44
lines changed

15 files changed

+205
-44
lines changed

src/api/mod.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ use crate::config::{Auth, Config};
5050
use crate::constants::{ARCH, DEFAULT_URL, EXT, PLATFORM, RELEASE_REGISTRY_LATEST_URL, VERSION};
5151
use crate::utils::file_upload::LegacyUploadContext;
5252
use crate::utils::http::{self, is_absolute_url};
53+
use crate::utils::non_empty::NonEmptySlice;
5354
use crate::utils::progress::{ProgressBar, ProgressBarMode};
5455
use crate::utils::retry::{get_default_backoff, DurationAsMilliseconds as _};
5556
use crate::utils::sourcemaps::get_sourcemap_reference_from_headers;
@@ -1019,7 +1020,7 @@ impl<'a> AuthenticatedApi<'a> {
10191020
pub fn assemble_artifact_bundle(
10201021
&self,
10211022
org: &str,
1022-
projects: &[String],
1023+
projects: NonEmptySlice<'_, String>,
10231024
checksum: Digest,
10241025
chunks: &[Digest],
10251026
version: Option<&str>,
@@ -1031,7 +1032,7 @@ impl<'a> AuthenticatedApi<'a> {
10311032
.with_json_body(&ChunkedArtifactRequest {
10321033
checksum,
10331034
chunks,
1034-
projects,
1035+
projects: projects.into(),
10351036
version,
10361037
dist,
10371038
})?

src/commands/debug_files/bundle_jvm.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ pub fn execute(matches: &ArgMatches) -> Result<()> {
5959

6060
let context = &UploadContext {
6161
org: &org,
62-
projects: &project.into_iter().collect::<Vec<_>>(),
62+
projects: project.as_slice().try_into().ok(),
6363
release: None,
6464
dist: None,
6565
note: None,

src/commands/files/upload.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ pub fn execute(matches: &ArgMatches) -> Result<()> {
153153

154154
let context = &UploadContext {
155155
org: &org,
156-
projects: &project.into_iter().collect::<Vec<_>>(),
156+
projects: project.as_slice().try_into().ok(),
157157
release: Some(&release),
158158
dist,
159159
note: None,

src/commands/react_native/appcenter.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ pub fn execute(matches: &ArgMatches) -> Result<()> {
196196

197197
processor.upload(&UploadContext {
198198
org: &org,
199-
projects: &projects,
199+
projects: Some(projects.as_non_empty_slice()),
200200
release: Some(&release),
201201
dist: None,
202202
note: None,
@@ -215,7 +215,7 @@ pub fn execute(matches: &ArgMatches) -> Result<()> {
215215

216216
processor.upload(&UploadContext {
217217
org: &org,
218-
projects: &projects,
218+
projects: Some(projects.as_non_empty_slice()),
219219
release: Some(&release),
220220
dist: Some(dist),
221221
note: None,

src/commands/react_native/gradle.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ pub fn execute(matches: &ArgMatches) -> Result<()> {
123123

124124
processor.upload(&UploadContext {
125125
org: &org,
126-
projects: &projects,
126+
projects: Some(projects.as_non_empty_slice()),
127127
release: Some(version),
128128
dist: Some(dist),
129129
note: None,
@@ -137,7 +137,7 @@ pub fn execute(matches: &ArgMatches) -> Result<()> {
137137
// Debug Id Upload
138138
processor.upload(&UploadContext {
139139
org: &org,
140-
projects: &projects,
140+
projects: Some(projects.as_non_empty_slice()),
141141
release: None,
142142
dist: None,
143143
note: None,

src/commands/react_native/xcode.rs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ use crate::utils::args::{validate_distribution, ArgExt as _};
2222
use crate::utils::file_search::ReleaseFileSearch;
2323
use crate::utils::file_upload::UploadContext;
2424
use crate::utils::fs::TempFile;
25+
use crate::utils::non_empty::NonEmptyVec;
2526
use crate::utils::sourcemaps::SourceMapProcessor;
2627
use crate::utils::system::propagate_exit_status;
2728
use crate::utils::xcode::InfoPlist;
@@ -339,10 +340,12 @@ pub fn execute(matches: &ArgMatches) -> Result<()> {
339340
let wait = matches.get_flag("wait") || wait_for_secs.is_some();
340341
let max_wait = wait_for_secs.map_or(DEFAULT_MAX_WAIT, std::time::Duration::from_secs);
341342

343+
let projects = NonEmptyVec::from([project]);
344+
342345
if dist_from_env.is_err() && release_from_env.is_err() && matches.get_flag("no_auto_release") {
343346
processor.upload(&UploadContext {
344347
org: &org,
345-
projects: &[project],
348+
projects: Some(projects.as_non_empty_slice()),
346349
release: None,
347350
dist: None,
348351
note: None,
@@ -378,7 +381,7 @@ pub fn execute(matches: &ArgMatches) -> Result<()> {
378381
None => {
379382
processor.upload(&UploadContext {
380383
org: &org,
381-
projects: &[project],
384+
projects: Some(projects.as_non_empty_slice()),
382385
release: release_name.as_deref(),
383386
dist: dist.as_deref(),
384387
note: None,
@@ -389,11 +392,10 @@ pub fn execute(matches: &ArgMatches) -> Result<()> {
389392
})?;
390393
}
391394
Some(dists) => {
392-
let projects = &[project];
393395
for dist in dists {
394396
processor.upload(&UploadContext {
395397
org: &org,
396-
projects,
398+
projects: Some(projects.as_non_empty_slice()),
397399
release: release_name.as_deref(),
398400
dist: Some(dist),
399401
note: None,

src/commands/releases/finalize.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ pub fn execute(matches: &ArgMatches) -> Result<()> {
5151
&config.get_org(matches)?,
5252
version,
5353
&UpdatedRelease {
54-
projects: config.get_projects(matches).ok(),
54+
projects: config.get_projects(matches).ok().map(Into::into),
5555
url: matches.get_one::<String>("url").cloned(),
5656
date_released: Some(
5757
matches

src/commands/releases/new.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ pub fn execute(matches: &ArgMatches) -> Result<()> {
3737
&config.get_org(matches)?,
3838
&NewRelease {
3939
version: version.to_owned(),
40-
projects: config.get_projects(matches)?,
40+
projects: config.get_projects(matches)?.into(),
4141
url: matches.get_one::<String>("url").cloned(),
4242
date_started: Some(Utc::now()),
4343
date_released: if matches.get_flag("finalize") {

src/commands/releases/set_commits.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ pub fn execute(matches: &ArgMatches) -> Result<()> {
151151
&org,
152152
&NewRelease {
153153
version: version.into(),
154-
projects,
154+
projects: projects.into(),
155155
..Default::default()
156156
},
157157
)?;

src/commands/sourcemaps/upload.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -451,7 +451,7 @@ pub fn execute(matches: &ArgMatches) -> Result<()> {
451451
let max_wait = wait_for_secs.map_or(DEFAULT_MAX_WAIT, Duration::from_secs);
452452
let upload_context = UploadContext {
453453
org: &org,
454-
projects: &projects,
454+
projects: Some(projects.as_non_empty_slice()),
455455
release: version.as_deref(),
456456
dist: matches.get_one::<String>("dist").map(String::as_str),
457457
note: matches.get_one::<String>("note").map(String::as_str),

0 commit comments

Comments
 (0)